back to gallery
design language·decoupage

Decoupage

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
Decoupage is a paste-up wall for interfaces. It takes the loud, collectible, joyfully-commercial energy of pop art and editorial collage and stages it the way a zine spread or a fly-poster wall actually gets made: torn-paper cutouts pinned and overlapping on a dark ink wall. Brightness comes from electric spot inks glowing against near-black, not from outlining boxes or stamping toy stickers on everything.
values
the torn cutout as the unit of everything — deckle edge, ink halo, overprint seamsaturated spot-ink brightness glowing on a dark ink walldepth built by pasting one scrap over another, never by grey shadowloud but legible — open dark wall out-areas the inkcollectible, hand-torn, joyfully commercial character
anti-values
×thick black keylines stamped on every box×one shape used as wallpaper until it means nothing×muddy over-dense maximalism with no breathing room×white digital-glossy SaaS neutrality×soft drop-shadow elevation
tokens
colors17 items
bg
#14111A
surface
#1E1A26
surface-2
#272031
text
#F6F0E2
muted
#9A8FB0
border
#2C2536
accent
#FF1F8E
accent-2
#19C9FF
accent-3
#FFE03A
overprint
#7B2FF7
on-accent
#14111A
on-magenta
#FFFFFF
on-yellow
#14111A
success
#2ED98A
warning
#FFE03A
error
#FF1F8E
info
#7B2FF7
typography9 items
base size
17px
body font
Space Grotesk, sans-serif
heading font
Archivo Expanded, Archivo, sans-serif
mono font
Space Mono, monospace
heading weight
900
heading transform
none
letter spacing
-0.02em
line height
1.5
google fonts url
https://fonts.googleapis.com/css2?family=Archivo+Expanded:wght@700;800;900&family=Archivo:wght@700;800;900&family=Space+Grotesk:wght@400;500;700&family=Space+Mono:wght@400;700&display=swap
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 72, 112
radii4 items
none
0px
md
16px
lg
24px
full
9999px
shadows4 items
ink-magenta
8px 9px 0 0 #FF1F8E
ink-cyan
8px 9px 0 0 #19C9FF
ink-yellow
8px 9px 0 0 #FFE03A
note
the canonical 'shadow' is an offset deckle ink PLATE behind the scrap, not a CSS box-shadow
surfaces3 items
treatment
torn-paper cutout on a dark ink wall
card style
A dark paper scrap (surface) with a deckle clip-path silhouette and an offset spot-ink plate behind it as the misregistration halo; overlaps multiply to violet. No borders, no grey shadows.
bg pattern
halftone-dots-on-dark
borders4 items
default width
0px
accent width
0px
style
none
character
Cutouts carry no outline; the deckle edge, the offset ink halo and the open dark wall do all the separating.
motion3 items
duration
620ms
easing
cubic-bezier(0.2,0.9,0.25,1.1)
philosophy
Cutouts PASTE IN on load — each scrap drops and settles onto the wall, as if pinned up one by one. The fully-pasted wall is the no-JS default; motion is added on top behind an html-class gate and lands on the settled state. Hover lifts a scrap (its ink halo grows); press settles it back down.
rules
composition
Lay every view as a contact-sheet collage on a dark wall: scraps of varied size pinned with intentional overlap, anchored to a shared baseline gutter so the riot still scans. Dark wall is the reset between clusters of ink. Not a lead-column-plus-proof-rail; not a polite symmetrical grid.
hierarchy
A heavy poster grotesque sets the primary line with one highlighter ink-mark word; spot-ink dots and offset plates flag the most important numbers and actions; small-caps mono press-labels caption the rest.
density
Lively but pasted: cluster content into scraps with real dark breathing strips between them, so saturated ink always lands against open wall and never turns into a muddy field.
signature
The torn cutout: every emphatic surface is a deckle-edge paper scrap with an offset spot-ink misregistration halo; overlaps multiply to violet; the scraps paste in on load.
signature patterns
Cards, KPI tiles and buttons render as two layers: a deckle paper scrap plus an offset spot-ink plate behind it, so the 'shadow' is a magenta/cyan/yellow halo, never grey.Headings carry a flat highlighter ink-mark behind one word (magenta, cyan or yellow); the rest stays warm paper-white on the dark wall.Where two cutouts overlap (a badge over a card, a tag over an image) the seam multiplies to violet, marking depth by overprint.The dark wall carries a coarse halftone dot field so the surface reads as a printed wall before content resolves; empty states drift a faint dot screen.Status, links and metrics use the three spot inks as solid ink-dots; on load each scrap pastes in (drops and settles), on hover it lifts off the wall and on press it settles back.
layout
grid
A contact-sheet collage: scraps of varied size pinned across the dark wall with intentional overlap, anchored to shared baseline gutters so the riot scans cleanly. Overlap is where ink plates overprint to violet.
whitespace

The dark wall is the reset between bursts of ink. Keep breathing strips around every scrap so saturated spot colour always meets open wall.

density

high-but-punctuated

responsive
Desktop keeps overlapping cutouts of varied size and full ink-plate offsets; tablet reduces overlap depth and stacks to fewer columns; mobile is one column with plate offsets shrunk to ~4px so nothing clips, the sidebar/nav wraps under, and display headlines shrink with clamp() and wrap.
breakpoints
mobile
390px
tablet
768px
desktop
1100px
wide
1600px
guidance
do
  • Build every surface as a torn cutout: a deckle clip-path scrap with an offset spot-ink halo behind it.
  • Keep the wall dark; let the three spot inks glow like highlighters against near-black.
  • Use overlap to build depth — let the seam multiply to violet instead of adding a shadow.
  • Pair a heavy poster headline with one highlighter ink-mark word and small-caps mono labels.
  • Style every form control explicitly — deckle checkboxes, ticket toggles, cyan focus rings.
avoid
  • Stamp a thick black keyline on every box, or add grey drop shadows for elevation.
  • Round the corners — the deckle silhouette is the identity.
  • Let the inks blend into mud; keep each spot flat and distinct, reserve violet for real overprints.
  • Default to a white or pastel ground; light mode is not this language.
  • Use one shape as wallpaper, or fill the wall so densely that the open dark gaps disappear.
imagery
pairs with

misprint-riso

summary
Risograph spot-ink screen-print imagery built from deliberately offset ink layers (misregistration halos, overprint-violet seams) and coarse halftone — applied here to torn-cutout subjects pinned on a dark wall, so the imagery reads as a hand-pulled paste-up.
subjects
torn-paper cutout collages on a dark wallmegaphones, hands, bursts, records and zine ephemerapop-culture objects as cut-out scrapsportraits printed as layered spot-ink cutoutsstill-life objects as overlapping scraps
usage
Hero is a full-bleed riso paste-up of torn cutouts clustered to one side with open dark wall left for the headline overlay; features and avatars use the same misregistration technique on their own cut-out subjects. Never illustrated art in the gallery thumbnail.
katagami spec
# Decoupage

## Philosophy

Decoupage is a paste-up wall for interfaces. It takes the loud, collectible, joyfully-commercial energy of pop art and editorial collage and stages it the way a zine spread or a fly-poster wall actually gets made: torn-paper cutouts pinned and overlapping on a dark ink wall. Brightness comes from electric spot inks glowing against near-black, not from outlining boxes or stamping toy stickers on everything.

### Values

- the torn cutout as the unit of everything — deckle edge, ink halo, overprint seam
- saturated spot-ink brightness glowing on a dark ink wall
- depth built by pasting one scrap over another, never by grey shadow
- loud but legible — open dark wall out-areas the ink
- collectible, hand-torn, joyfully commercial character

### Anti-Values

- thick black keylines stamped on every box
- one shape used as wallpaper until it means nothing
- muddy over-dense maximalism with no breathing room
- white digital-glossy SaaS neutrality
- soft drop-shadow elevation

### Visual Character

- Every emphatic surface is a torn paper cutout: an irregular deckle silhouette (clip-path), never a rounded rectangle, so cards read as scraps pasted on a wall.
- The shadow is an offset spot-ink plate shifted a few pixels behind the scrap — a magenta, cyan or yellow misregistration halo — never a grey drop shadow.
- Where two cutouts overlap, the seam multiplies to violet; overlap is how depth and hierarchy read, exactly like overprinting two spot inks.
- The ground is a dark ink wall with a coarse halftone dot field, so the surface reads as a printed wall before content loads; warm paper-white type sits high-contrast on top.
- Display type is a heavy poster grotesque set tight, with one word carrying a flat highlighter ink-mark; supporting labels are small-caps mono press annotations. Status uses the three spot inks as solid ink-dots.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#14111A` |
| surface | `#1E1A26` |
| surface-2 | `#272031` |
| text | `#F6F0E2` |
| muted | `#9A8FB0` |
| border | `#2C2536` |
| accent | `#FF1F8E` |
| accent-2 | `#19C9FF` |
| accent-3 | `#FFE03A` |
| overprint | `#7B2FF7` |
| on-accent | `#14111A` |
| on-magenta | `#FFFFFF` |
| on-yellow | `#14111A` |
| success | `#2ED98A` |
| warning | `#FFE03A` |
| error | `#FF1F8E` |
| info | `#7B2FF7` |

### Typography

- **Base Size**: 17px
- **Body Font**: Space Grotesk, sans-serif
- **Heading Font**: Archivo Expanded, Archivo, sans-serif
- **Mono Font**: Space Mono, monospace
- **Heading Weight**: 900
- **Heading Transform**: none
- **Letter Spacing**: -0.02em
- **Line Height**: 1.5
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo+Expanded:wght@700;800;900&family=Archivo:wght@700;800;900&family=Space+Grotesk:wght@400;500;700&family=Space+Mono:wght@400;700&display=swap

### Spacing

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

### Radii

- **None**: 0px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px

### Shadows

- **Ink-Magenta**: 8px 9px 0 0 #FF1F8E
- **Ink-Cyan**: 8px 9px 0 0 #19C9FF
- **Ink-Yellow**: 8px 9px 0 0 #FFE03A
- **Note**: the canonical 'shadow' is an offset deckle ink PLATE behind the scrap, not a CSS box-shadow

### Surfaces

- **Treatment**: torn-paper cutout on a dark ink wall
- **Card Style**: A dark paper scrap (surface) with a deckle clip-path silhouette and an offset spot-ink plate behind it as the misregistration halo; overlaps multiply to violet. No borders, no grey shadows.
- **Bg Pattern**: halftone-dots-on-dark

### Borders

- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: Cutouts carry no outline; the deckle edge, the offset ink halo and the open dark wall do all the separating.

### Motion

- **Duration**: 620ms
- **Easing**: cubic-bezier(0.2,0.9,0.25,1.1)
- **Philosophy**: Cutouts PASTE IN on load — each scrap drops and settles onto the wall, as if pinned up one by one. The fully-pasted wall is the no-JS default; motion is added on top behind an html-class gate and lands on the settled state. Hover lifts a scrap (its ink halo grows); press settles it back down.

## Rules

### Composition

Lay every view as a contact-sheet collage on a dark wall: scraps of varied size pinned with intentional overlap, anchored to a shared baseline gutter so the riot still scans. Dark wall is the reset between clusters of ink. Not a lead-column-plus-proof-rail; not a polite symmetrical grid.

### Hierarchy

A heavy poster grotesque sets the primary line with one highlighter ink-mark word; spot-ink dots and offset plates flag the most important numbers and actions; small-caps mono press-labels caption the rest.

### Density

Lively but pasted: cluster content into scraps with real dark breathing strips between them, so saturated ink always lands against open wall and never turns into a muddy field.

### Signature

The torn cutout: every emphatic surface is a deckle-edge paper scrap with an offset spot-ink misregistration halo; overlaps multiply to violet; the scraps paste in on load.

### Signature Patterns

- Cards, KPI tiles and buttons render as two layers: a deckle paper scrap plus an offset spot-ink plate behind it, so the 'shadow' is a magenta/cyan/yellow halo, never grey.
- Headings carry a flat highlighter ink-mark behind one word (magenta, cyan or yellow); the rest stays warm paper-white on the dark wall.
- Where two cutouts overlap (a badge over a card, a tag over an image) the seam multiplies to violet, marking depth by overprint.
- The dark wall carries a coarse halftone dot field so the surface reads as a printed wall before content resolves; empty states drift a faint dot screen.
- Status, links and metrics use the three spot inks as solid ink-dots; on load each scrap pastes in (drops and settles), on hover it lifts off the wall and on press it settles back.

## Layout

### Grid

A contact-sheet collage: scraps of varied size pinned across the dark wall with intentional overlap, anchored to shared baseline gutters so the riot scans cleanly. Overlap is where ink plates overprint to violet.

### Whitespace

The dark wall is the reset between bursts of ink. Keep breathing strips around every scrap so saturated spot colour always meets open wall.

### Density

high-but-punctuated

### Responsive

Desktop keeps overlapping cutouts of varied size and full ink-plate offsets; tablet reduces overlap depth and stacks to fewer columns; mobile is one column with plate offsets shrunk to ~4px so nothing clips, the sidebar/nav wraps under, and display headlines shrink with clamp() and wrap.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1100px
- **Wide**: 1600px

## Guidance

### Do

- Build every surface as a torn cutout: a deckle clip-path scrap with an offset spot-ink halo behind it.
- Keep the wall dark; let the three spot inks glow like highlighters against near-black.
- Use overlap to build depth — let the seam multiply to violet instead of adding a shadow.
- Pair a heavy poster headline with one highlighter ink-mark word and small-caps mono labels.
- Style every form control explicitly — deckle checkboxes, ticket toggles, cyan focus rings.

### Don't

- Stamp a thick black keyline on every box, or add grey drop shadows for elevation.
- Round the corners — the deckle silhouette is the identity.
- Let the inks blend into mud; keep each spot flat and distinct, reserve violet for real overprints.
- Default to a white or pastel ground; light mode is not this language.
- Use one shape as wallpaper, or fill the wall so densely that the open dark gaps disappear.

### Accessibility

Warm paper-white #F6F0E2 on the dark wall #14111A clears AA for body and large text. Spot inks are used for emphasis and fills with sufficient-contrast text (white on magenta, #14111A on cyan/yellow). Status is never colour-only — ink-dots pair with text labels. Focus states use a 2px cyan ring. Motion is gated behind prefers-reduced-motion and the settled wall renders with no JavaScript.

## Imagery Direction

### Pairs With

misprint-riso

### Summary

Risograph spot-ink screen-print imagery built from deliberately offset ink layers (misregistration halos, overprint-violet seams) and coarse halftone — applied here to torn-cutout subjects pinned on a dark wall, so the imagery reads as a hand-pulled paste-up.

### Subjects

- torn-paper cutout collages on a dark wall
- megaphones, hands, bursts, records and zine ephemera
- pop-culture objects as cut-out scraps
- portraits printed as layered spot-ink cutouts
- still-life objects as overlapping scraps

### Usage

Hero is a full-bleed riso paste-up of torn cutouts clustered to one side with open dark wall left for the headline overlay; features and avatars use the same misregistration technique on their own cut-out subjects. Never illustrated art in the gallery thumbnail.
DESIGN.md
---
version: "alpha"
name: "Decoupage"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#14111A"
  surface: "#1E1A26"
  surface-2: "#272031"
  text: "#F6F0E2"
  muted: "#9A8FB0"
  border: "#2C2536"
  accent: "#FF1F8E"
  accent-2: "#19C9FF"
  accent-3: "#FFE03A"
  overprint: "#7B2FF7"
  on-accent: "#14111A"
  on-magenta: "#FFFFFF"
  on-yellow: "#14111A"
  success: "#2ED98A"
  warning: "#FFE03A"
  error: "#FF1F8E"
  info: "#7B2FF7"
typography:
  headline-lg:
    fontFamily: "Archivo Expanded, Archivo, sans-serif"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Archivo Expanded, Archivo, sans-serif"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Space Grotesk, sans-serif"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Space 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: "72px"
  step-8: "112px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface-2:
    backgroundColor: "{colors.surface-2}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent-2:
    backgroundColor: "{colors.accent-2}"
  color-reference-accent-3:
    backgroundColor: "{colors.accent-3}"
  color-reference-overprint:
    backgroundColor: "{colors.overprint}"
  color-reference-on-accent:
    backgroundColor: "{colors.on-accent}"
  color-reference-on-magenta:
    backgroundColor: "{colors.on-magenta}"
  color-reference-on-yellow:
    backgroundColor: "{colors.on-yellow}"
  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"
---

# Decoupage

## Overview

Decoupage is a paste-up wall for interfaces. It takes the loud, collectible, joyfully-commercial energy of pop art and editorial collage and stages it the way a zine spread or a fly-poster wall actually gets made: torn-paper cutouts pinned and overlapping on a dark ink wall. Brightness comes from electric spot inks glowing against near-black, not from outlining boxes or stamping toy stickers on everything.

### Values

- the torn cutout as the unit of everything — deckle edge, ink halo, overprint seam
- saturated spot-ink brightness glowing on a dark ink wall
- depth built by pasting one scrap over another, never by grey shadow
- loud but legible — open dark wall out-areas the ink
- collectible, hand-torn, joyfully commercial character

### Anti-Values

- thick black keylines stamped on every box
- one shape used as wallpaper until it means nothing
- muddy over-dense maximalism with no breathing room
- white digital-glossy SaaS neutrality
- soft drop-shadow elevation

### Visual Character

- Every emphatic surface is a torn paper cutout: an irregular deckle silhouette (clip-path), never a rounded rectangle, so cards read as scraps pasted on a wall.
- The shadow is an offset spot-ink plate shifted a few pixels behind the scrap — a magenta, cyan or yellow misregistration halo — never a grey drop shadow.
- Where two cutouts overlap, the seam multiplies to violet; overlap is how depth and hierarchy read, exactly like overprinting two spot inks.
- The ground is a dark ink wall with a coarse halftone dot field, so the surface reads as a printed wall before content loads; warm paper-white type sits high-contrast on top.
- Display type is a heavy poster grotesque set tight, with one word carrying a flat highlighter ink-mark; supporting labels are small-caps mono press annotations. Status uses the three spot inks as solid ink-dots.

## 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 | `#14111A` |
| surface | `#1E1A26` |
| surface-2 | `#272031` |
| text | `#F6F0E2` |
| muted | `#9A8FB0` |
| border | `#2C2536` |
| accent | `#FF1F8E` |
| accent-2 | `#19C9FF` |
| accent-3 | `#FFE03A` |
| overprint | `#7B2FF7` |
| on-accent | `#14111A` |
| on-magenta | `#FFFFFF` |
| on-yellow | `#14111A` |
| success | `#2ED98A` |
| warning | `#FFE03A` |
| error | `#FF1F8E` |
| info | `#7B2FF7` |

## Typography

- **Headline-Lg**: Archivo Expanded, Archivo, sans-serif, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo Expanded, Archivo, 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**: Space 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**: `72px`
- **Step-8**: `112px`

### Grid

A contact-sheet collage: scraps of varied size pinned across the dark wall with intentional overlap, anchored to shared baseline gutters so the riot scans cleanly. Overlap is where ink plates overprint to violet.

### Whitespace

The dark wall is the reset between bursts of ink. Keep breathing strips around every scrap so saturated spot colour always meets open wall.

### Density

high-but-punctuated

### Responsive

Desktop keeps overlapping cutouts of varied size and full ink-plate offsets; tablet reduces overlap depth and stacks to fewer columns; mobile is one column with plate offsets shrunk to ~4px so nothing clips, the sidebar/nav wraps under, and display headlines shrink with clamp() and wrap.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1100px
- **Wide**: 1600px

## Elevation & Depth

### Shadows

- **Ink-Magenta**: 8px 9px 0 0 #FF1F8E
- **Ink-Cyan**: 8px 9px 0 0 #19C9FF
- **Ink-Yellow**: 8px 9px 0 0 #FFE03A
- **Note**: the canonical 'shadow' is an offset deckle ink PLATE behind the scrap, not a CSS box-shadow

## Shapes

### Rounded

- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: torn-paper cutout on a dark ink wall
- **Card Style**: A dark paper scrap (surface) with a deckle clip-path silhouette and an offset spot-ink plate behind it as the misregistration halo; overlaps multiply to violet. No borders, no grey shadows.
- **Bg Pattern**: halftone-dots-on-dark

### Borders

- **Default Width**: 0px
- **Accent Width**: 0px
- **Style**: none
- **Character**: Cutouts carry no outline; the deckle edge, the offset ink halo and the open dark wall do all the separating.

## Components

### Composition

Lay every view as a contact-sheet collage on a dark wall: scraps of varied size pinned with intentional overlap, anchored to a shared baseline gutter so the riot still scans. Dark wall is the reset between clusters of ink. Not a lead-column-plus-proof-rail; not a polite symmetrical grid.

### Hierarchy

A heavy poster grotesque sets the primary line with one highlighter ink-mark word; spot-ink dots and offset plates flag the most important numbers and actions; small-caps mono press-labels caption the rest.

### Density

Lively but pasted: cluster content into scraps with real dark breathing strips between them, so saturated ink always lands against open wall and never turns into a muddy field.

### Signature

The torn cutout: every emphatic surface is a deckle-edge paper scrap with an offset spot-ink misregistration halo; overlaps multiply to violet; the scraps paste in on load.

### Signature Patterns

- Cards, KPI tiles and buttons render as two layers: a deckle paper scrap plus an offset spot-ink plate behind it, so the 'shadow' is a magenta/cyan/yellow halo, never grey.
- Headings carry a flat highlighter ink-mark behind one word (magenta, cyan or yellow); the rest stays warm paper-white on the dark wall.
- Where two cutouts overlap (a badge over a card, a tag over an image) the seam multiplies to violet, marking depth by overprint.
- The dark wall carries a coarse halftone dot field so the surface reads as a printed wall before content resolves; empty states drift a faint dot screen.
- Status, links and metrics use the three spot inks as solid ink-dots; on load each scrap pastes in (drops and settles), on hover it lifts off the wall and on press it settles back.

## 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-019efd3b-65eb-75a0-b9b0-9c91a6638e43/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 every surface as a torn cutout: a deckle clip-path scrap with an offset spot-ink halo behind it.
- Do Keep the wall dark; let the three spot inks glow like highlighters against near-black.
- Do Use overlap to build depth — let the seam multiply to violet instead of adding a shadow.
- Do Pair a heavy poster headline with one highlighter ink-mark word and small-caps mono labels.
- Do Style every form control explicitly — deckle checkboxes, ticket toggles, cyan focus rings.
- Don't Stamp a thick black keyline on every box, or add grey drop shadows for elevation.
- Don't Round the corners — the deckle silhouette is the identity.
- Don't Let the inks blend into mud; keep each spot flat and distinct, reserve violet for real overprints.
- Don't Default to a white or pastel ground; light mode is not this language.
- Don't Use one shape as wallpaper, or fill the wall so densely that the open dark gaps disappear.

### Accessibility

Warm paper-white #F6F0E2 on the dark wall #14111A clears AA for body and large text. Spot inks are used for emphasis and fills with sufficient-contrast text (white on magenta, #14111A on cyan/yellow). Status is never colour-only — ink-dots pair with text labels. Focus states use a 2px cyan ring. Motion is gated behind prefers-reduced-motion and the settled wall renders with no JavaScript.

## Imagery Direction

### Pairs With

misprint-riso

### Summary

Risograph spot-ink screen-print imagery built from deliberately offset ink layers (misregistration halos, overprint-violet seams) and coarse halftone — applied here to torn-cutout subjects pinned on a dark wall, so the imagery reads as a hand-pulled paste-up.

### Subjects

- torn-paper cutout collages on a dark wall
- megaphones, hands, bursts, records and zine ephemera
- pop-culture objects as cut-out scraps
- portraits printed as layered spot-ink cutouts
- still-life objects as overlapping scraps

### Usage

Hero is a full-bleed riso paste-up of torn cutouts clustered to one side with open dark wall left for the headline overlay; features and avatars use the same misregistration technique on their own cut-out subjects. Never illustrated art in the gallery thumbnail.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "decoupage",
  "type": "registry:theme",
  "title": "Decoupage shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#14111A",
      "foreground": "#F6F0E2",
      "card": "#1E1A26",
      "card-foreground": "#F6F0E2",
      "popover": "#1E1A26",
      "popover-foreground": "#F6F0E2",
      "primary": "#F6F0E2",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#9A8FB0",
      "muted-foreground": "#F6F0E2",
      "accent": "#FF1F8E",
      "accent-foreground": "#ffffff",
      "destructive": "#FF1F8E",
      "border": "#2C2536",
      "input": "#2C2536",
      "ring": "#FF1F8E",
      "chart-1": "#F6F0E2",
      "chart-2": "#f4f4f5",
      "chart-3": "#FF1F8E",
      "chart-4": "#2ED98A",
      "chart-5": "#FFE03A",
      "sidebar": "#1E1A26",
      "sidebar-foreground": "#F6F0E2",
      "sidebar-primary": "#F6F0E2",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#7B2FF7",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2C2536",
      "sidebar-ring": "#FF1F8E",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F6F0E2",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#FF1F8E",
      "accent-foreground": "#ffffff",
      "destructive": "#FF1F8E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#FF1F8E",
      "chart-1": "#F6F0E2",
      "chart-2": "#f4f4f5",
      "chart-3": "#FF1F8E",
      "chart-4": "#2ED98A",
      "chart-5": "#FFE03A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F6F0E2",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#FF1F8E",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#FF1F8E",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efd3b-65eb-75a0-b9b0-9c91a6638e43",
    "slug": "decoupage",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent-2",
        "accent-3",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on-accent",
        "on-magenta",
        "on-yellow",
        "overprint",
        "success",
        "surface",
        "surface-2",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none"
      ],
      "shadows": [
        "ink-cyan",
        "ink-magenta",
        "ink-yellow",
        "note"
      ],
      "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 · decoupage
DESIGN.md

at a glance

Typography

headline-lgArchivo Expanded · 33px · 700

The quick brown fox jumps

headline-mdArchivo Expanded · 27px · 600

The quick brown fox jumps

body-mdSpace Grotesk · 17px · 400

The quick brown fox jumps

label-mdSpace Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

produced by opus-4.8 · sourced by opus-4.8 · images by gpt-image-2

remix lane

try a remix

Keep Decoupageand 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
Decoupage
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

related

More like this