Back to gallery

Moire

Moire is a manga-console design language for quiet, personal software.

Manga & Anime Panels family.

Download DESIGN.md

Tokens and rules, ready for an agent to follow. It passes the format check with 0 errors and 0 warnings.

Preview

Open full page

Typography

Each face set in this language's own words.

headline lgBarlow Condensed, 33px, 700

Moire

headline mdBarlow Condensed, 27px, 600

Moire

body mdIBM Plex Sans, 17px, 400

Moire is a manga-console design language for quiet, personal software.

label mdShare Tech Mono, 12px, 600

Moire is a manga-console design language for quiet, personal software.

Specification

Philosophy

summary

Moire is a manga-console design language for quiet, personal software. It keeps the existential, turn-of-the-millennium anime-hardware soul of Y2K Chrome Manga Console and the black-ink human figure at its centre, but throws away the chrome rails and glossy capsules and redraws every surface as a manga page in the making: bare ink is shaded into life with adhesive screentone, and where two dot-sheets overlap they beat into living moire.

It values

  • Ink before interface
  • Tone develops the page
  • Living moire as the one continuous motion
  • Existential cleanliness with wide cream margins
  • Anime-title confidence in compressed uppercase display
  • One wet ink over a black-and-white base

It refuses

  • Chrome rails, glossy capsules, and Y2K bevels
  • Grey borders and boxed navigation
  • Muddy pastel washes
  • Loud pixel-glyph wallpaper
  • Three equal KPI cards

visual character

  • Cream manga paper under a faint page-wide halftone dot field
  • Tone plates: an ink title bar, a screentone shade band, content on clean paper
  • Ink-stamp controls with a flat offset shadow that collapses on press
  • Manga ink-and-tone figures with one wet-blue glint
  • Compressed uppercase headings, 17px body, mono tone codes
Tokens
colors14
bg
#F4F0E4
surface
#FCFAF3
surface solid
#FFFFFF
text
#14120E
muted
#6B665B
border
#E4DECF
accent
#2C63E0
accent 2
#86B81E
accent soft
#DDE6FA
on accent
#FFFFFF
success
#4E9A51
warning
#C88526
error
#E23B2C
info
#2C63E0
typography10
base size
17px
body font
IBM Plex Sans
heading font
Barlow Condensed
mono font
Share Tech Mono
heading weight
800
heading transform
uppercase
letter spacing
-0.02em
line height
1.55
scale ratio
1.30
google fonts url
https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600&family=Share+Tech+Mono&display=swap
radii4
none
0px
md
16px
lg
24px
full
9999px
shadows3
sm
0 2px 0 rgba(20,18,14,0.14)
md
5px 6px 0 rgba(20,18,14,0.11)
lg
12px 14px 0 rgba(20,18,14,0.09)
spacing2
base
8px
scale
4px, 8px, 12px, 16px, 24px, 32px, 48px, 72px
surfaces3
treatment
cream manga paper with a laid halftone screentone field
card style
tone plates: a solid-ink title bar, a screentone shade band, content on clean paper — never boxed in grey
bg pattern
a faint page-wide halftone dot field that deepens into moire where two dot layers overlap
borders4
default width
0
accent width
3px
style
none by default; hierarchy from solid-ink rules and tone bands
character
no grey borders — separation comes from black ink rules, screentone bands, and the white panel gutter
motion3
duration
200ms
easing
cubic-bezier(.2,.8,.2,1)
philosophy
tone develops and settles; the only continuous life is the moire beat between overlapping dot layers — motion lays tone, it never bounces
Rules

composition

Compose surfaces as tone plates: a solid-ink title bar, a screentone shade band, content on clean cream paper. Make one figure plate dominant and let tone-code clusters orbit it asymmetrically, never three equal cards. The dashboard is a manga console with a slim ink spine, not a boxed sidebar.

hierarchy

Scale and material contrast lead: compressed uppercase display, then the manga figure, then small mono tone codes. Wet-ink blue marks the one active signal; lime is a rare diagnostic ping; vermilion is a single splash.

density

Airy cream margins between plates; tight 4-8px clusters inside tone-code rows. Balance density across the canvas — never a crowded cluster beside a starved void.

signature patterns

  • Tone-develop reveal: content enters as bare ink line and screentone floods in to shade it — a dot-density ramp, never a plain fade.
  • Living moire field: two overlapping dot layers beat into interference as one page-wide system; it reacts to the pointer on the landing.
  • Ink-stamp controls: solid-ink or wet-blue pills with a flat offset shadow that collapses on press.
  • Tone-plate cards: an ink title bar over a screentone band over clean paper, anchored by a mono tone code — no grey border.
  • Panel-gutter rhythm: the white gutter opens between clusters like the space between manga panels; focus lines converge for emphasis.
Layout

grid

Contained max-width (~1280px) with generous cream margins; one dominant figure plate offset against a denser tone-code column. The dashboard runs a slim ink console spine instead of a boxed sidebar; plates stagger like a manga page.

breakpoints

>=1180px: asymmetric figure plate + tone-code column; 768-1024 is its own layout (figure plate above a two-up tone-code grid, gutters kept); <=720 single column, ink rules and tone bands preserved, console spine becomes a horizontal rail, dot field thinned, compressed hero headline shrinks with clamp() so it wraps and never clips the 390px edge.

whitespace

72px cream voids between sections, 48px between related plates, 24px within a plate, 4-8px inside tone-code rows — wide silence around dense clusters to keep the loneliness.

Guidance

Do

  • Keep the base black ink on cream paper; spend wet-ink blue like one voice, lime as a rare ping, vermilion once.
  • Shade with screentone dot-density and let tone plates carry hierarchy through their ink title bar, not a border.
  • Let the moire field recur page-wide as one system and keep it the only thing continuously alive.
  • Write copy as console verse and tone codes; draw human presence as manga ink-and-tone figures.

Avoid

  • Do not add chrome rails, glossy capsules, or metallic gradients.
  • Do not give a plate a single accent edge or a grey border.
  • Do not let the dot field become loud wallpaper or bury text.
  • Do not use three equal cards, KPI tiles, or analytics-dashboard conventions.
  • Do not round arbitrarily; use only square frames, 16/24px plate corners, and full pills.
Imagery

pairs with

benday

summary

Manga ink + screentone: black pen-and-ink contour shaded with adhesive ben-day dots, dramatic dot-density gradients, faint moire, matte cream paper, one wet-blue spot. Subjects are lonely figures, turn-of-millennium anime cityscapes, Y2K hardware objects, and quiet landscapes.

usage

One full-bleed hero per landing via var(--hero-image); art plates via --plate-N slots. Copy and imagery never share the same ground — text sits on clean paper or an ink plate, imagery keeps its own bleed.

avoid

Full-colour renders, photographic look, more than one spot colour, text in the image.

Katagami spec file
# Moire

## Philosophy

Moire is a manga-console design language for quiet, personal software. It keeps the existential, turn-of-the-millennium anime-hardware soul of Y2K Chrome Manga Console and the black-ink human figure at its centre, but throws away the chrome rails and glossy capsules and redraws every surface as a manga page in the making: bare ink is shaded into life with adhesive screentone, and where two dot-sheets overlap they beat into living moire.

### Values

- Ink before interface
- Tone develops the page
- Living moire as the one continuous motion
- Existential cleanliness with wide cream margins
- Anime-title confidence in compressed uppercase display
- One wet ink over a black-and-white base

### Anti-Values

- Chrome rails, glossy capsules, and Y2K bevels
- Grey borders and boxed navigation
- Muddy pastel washes
- Loud pixel-glyph wallpaper
- Three equal KPI cards

### Visual Character

- Cream manga paper under a faint page-wide halftone dot field
- Tone plates: an ink title bar, a screentone shade band, content on clean paper
- Ink-stamp controls with a flat offset shadow that collapses on press
- Manga ink-and-tone figures with one wet-blue glint
- Compressed uppercase headings, 17px body, mono tone codes

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#F4F0E4` |
| surface | `#FCFAF3` |
| surface_solid | `#FFFFFF` |
| text | `#14120E` |
| muted | `#6B665B` |
| border | `#E4DECF` |
| accent | `#2C63E0` |
| accent_2 | `#86B81E` |
| accent_soft | `#DDE6FA` |
| on_accent | `#FFFFFF` |
| success | `#4E9A51` |
| warning | `#C88526` |
| error | `#E23B2C` |
| info | `#2C63E0` |

### Typography

- **Base Size**: 17px
- **Body Font**: IBM Plex Sans
- **Heading Font**: Barlow Condensed
- **Mono Font**: Share Tech Mono
- **Heading Weight**: 800
- **Heading Transform**: uppercase
- **Letter Spacing**: -0.02em
- **Line Height**: 1.55
- **Scale Ratio**: 1.30
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600&family=Share+Tech+Mono&display=swap

### Radii

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

### Shadows

- **Sm**: 0 2px 0 rgba(20,18,14,0.14)
- **Md**: 5px 6px 0 rgba(20,18,14,0.11)
- **Lg**: 12px 14px 0 rgba(20,18,14,0.09)

### Spacing

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

### Surfaces

- **Treatment**: cream manga paper with a laid halftone screentone field
- **Card Style**: tone plates: a solid-ink title bar, a screentone shade band, content on clean paper — never boxed in grey
- **Bg Pattern**: a faint page-wide halftone dot field that deepens into moire where two dot layers overlap

### Borders

- **Default Width**: 0
- **Accent Width**: 3px
- **Style**: none by default; hierarchy from solid-ink rules and tone bands
- **Character**: no grey borders — separation comes from black ink rules, screentone bands, and the white panel gutter

### Motion

- **Duration**: 200ms
- **Easing**: cubic-bezier(.2,.8,.2,1)
- **Philosophy**: tone develops and settles; the only continuous life is the moire beat between overlapping dot layers — motion lays tone, it never bounces

## Rules

### Composition

Compose surfaces as tone plates: a solid-ink title bar, a screentone shade band, content on clean cream paper. Make one figure plate dominant and let tone-code clusters orbit it asymmetrically, never three equal cards. The dashboard is a manga console with a slim ink spine, not a boxed sidebar.

### Hierarchy

Scale and material contrast lead: compressed uppercase display, then the manga figure, then small mono tone codes. Wet-ink blue marks the one active signal; lime is a rare diagnostic ping; vermilion is a single splash.

### Density

Airy cream margins between plates; tight 4-8px clusters inside tone-code rows. Balance density across the canvas — never a crowded cluster beside a starved void.

### Signature Patterns

- Tone-develop reveal: content enters as bare ink line and screentone floods in to shade it — a dot-density ramp, never a plain fade.
- Living moire field: two overlapping dot layers beat into interference as one page-wide system; it reacts to the pointer on the landing.
- Ink-stamp controls: solid-ink or wet-blue pills with a flat offset shadow that collapses on press.
- Tone-plate cards: an ink title bar over a screentone band over clean paper, anchored by a mono tone code — no grey border.
- Panel-gutter rhythm: the white gutter opens between clusters like the space between manga panels; focus lines converge for emphasis.

## Layout

### Grid

Contained max-width (~1280px) with generous cream margins; one dominant figure plate offset against a denser tone-code column. The dashboard runs a slim ink console spine instead of a boxed sidebar; plates stagger like a manga page.

### Breakpoints

>=1180px: asymmetric figure plate + tone-code column; 768-1024 is its own layout (figure plate above a two-up tone-code grid, gutters kept); <=720 single column, ink rules and tone bands preserved, console spine becomes a horizontal rail, dot field thinned, compressed hero headline shrinks with clamp() so it wraps and never clips the 390px edge.

### Whitespace

72px cream voids between sections, 48px between related plates, 24px within a plate, 4-8px inside tone-code rows — wide silence around dense clusters to keep the loneliness.

## Guidance

### Do

- Keep the base black ink on cream paper; spend wet-ink blue like one voice, lime as a rare ping, vermilion once.
- Shade with screentone dot-density and let tone plates carry hierarchy through their ink title bar, not a border.
- Let the moire field recur page-wide as one system and keep it the only thing continuously alive.
- Write copy as console verse and tone codes; draw human presence as manga ink-and-tone figures.

### Don't

- Do not add chrome rails, glossy capsules, or metallic gradients.
- Do not give a plate a single accent edge or a grey border.
- Do not let the dot field become loud wallpaper or bury text.
- Do not use three equal cards, KPI tiles, or analytics-dashboard conventions.
- Do not round arbitrarily; use only square frames, 16/24px plate corners, and full pills.

## Imagery Direction

### Pairs With

benday

### Summary

Manga ink + screentone: black pen-and-ink contour shaded with adhesive ben-day dots, dramatic dot-density gradients, faint moire, matte cream paper, one wet-blue spot. Subjects are lonely figures, turn-of-millennium anime cityscapes, Y2K hardware objects, and quiet landscapes.

### Usage

One full-bleed hero per landing via var(--hero-image); art plates via --plate-N slots. Copy and imagery never share the same ground — text sits on clean paper or an ink plate, imagery keeps its own bleed.

### Avoid

Full-colour renders, photographic look, more than one spot colour, text in the image.
DESIGN.md file
---
version: "alpha"
name: "Moire"
description: "Moire is a manga-console design language for quiet, personal software. It keeps the existential, turn-of-the-millennium anime-hardware soul of Y2K Chrome Manga Console and the black-ink human figure at its centre, but throws away the chr..."
colors:
  bg: "#F4F0E4"
  surface: "#FCFAF3"
  surface_solid: "#FFFFFF"
  text: "#14120E"
  muted: "#6B665B"
  border: "#E4DECF"
  accent: "#2C63E0"
  accent_2: "#86B81E"
  accent_soft: "#DDE6FA"
  on_accent: "#FFFFFF"
  success: "#4E9A51"
  warning: "#C88526"
  error: "#E23B2C"
  info: "#2C63E0"
typography:
  headline-lg:
    fontFamily: "Barlow Condensed"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Barlow Condensed"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Share Tech Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  md: "16px"
  lg: "24px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "72px"
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: "{colors.on_accent}"
    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"
---

# Moire

## Overview

Moire is a manga-console design language for quiet, personal software. It keeps the existential, turn-of-the-millennium anime-hardware soul of Y2K Chrome Manga Console and the black-ink human figure at its centre, but throws away the chrome rails and glossy capsules and redraws every surface as a manga page in the making: bare ink is shaded into life with adhesive screentone, and where two dot-sheets overlap they beat into living moire.

### Values

- Ink before interface
- Tone develops the page
- Living moire as the one continuous motion
- Existential cleanliness with wide cream margins
- Anime-title confidence in compressed uppercase display
- One wet ink over a black-and-white base

### Anti-Values

- Chrome rails, glossy capsules, and Y2K bevels
- Grey borders and boxed navigation
- Muddy pastel washes
- Loud pixel-glyph wallpaper
- Three equal KPI cards

### Visual Character

- Cream manga paper under a faint page-wide halftone dot field
- Tone plates: an ink title bar, a screentone shade band, content on clean paper
- Ink-stamp controls with a flat offset shadow that collapses on press
- Manga ink-and-tone figures with one wet-blue glint
- Compressed uppercase headings, 17px body, mono tone codes

## 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 | `#F4F0E4` |
| surface | `#FCFAF3` |
| surface_solid | `#FFFFFF` |
| text | `#14120E` |
| muted | `#6B665B` |
| border | `#E4DECF` |
| accent | `#2C63E0` |
| accent_2 | `#86B81E` |
| accent_soft | `#DDE6FA` |
| on_accent | `#FFFFFF` |
| success | `#4E9A51` |
| warning | `#C88526` |
| error | `#E23B2C` |
| info | `#2C63E0` |

## Typography

Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600&family=Share+Tech+Mono&display=swap

- **Headline-Lg**: Barlow Condensed, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Barlow Condensed, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.5.
- **Label-Md**: Share Tech 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**: `72px`

### Grid

Contained max-width (~1280px) with generous cream margins; one dominant figure plate offset against a denser tone-code column. The dashboard runs a slim ink console spine instead of a boxed sidebar; plates stagger like a manga page.

### Breakpoints

>=1180px: asymmetric figure plate + tone-code column; 768-1024 is its own layout (figure plate above a two-up tone-code grid, gutters kept); <=720 single column, ink rules and tone bands preserved, console spine becomes a horizontal rail, dot field thinned, compressed hero headline shrinks with clamp() so it wraps and never clips the 390px edge.

### Whitespace

72px cream voids between sections, 48px between related plates, 24px within a plate, 4-8px inside tone-code rows — wide silence around dense clusters to keep the loneliness.

## Elevation & Depth

### Shadows

- **Sm**: 0 2px 0 rgba(20,18,14,0.14)
- **Md**: 5px 6px 0 rgba(20,18,14,0.11)
- **Lg**: 12px 14px 0 rgba(20,18,14,0.09)

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: cream manga paper with a laid halftone screentone field
- **Card Style**: tone plates: a solid-ink title bar, a screentone shade band, content on clean paper — never boxed in grey
- **Bg Pattern**: a faint page-wide halftone dot field that deepens into moire where two dot layers overlap

### Borders

- **Default Width**: 0
- **Accent Width**: 3px
- **Style**: none by default; hierarchy from solid-ink rules and tone bands
- **Character**: no grey borders — separation comes from black ink rules, screentone bands, and the white panel gutter

## Components

### Composition

Compose surfaces as tone plates: a solid-ink title bar, a screentone shade band, content on clean cream paper. Make one figure plate dominant and let tone-code clusters orbit it asymmetrically, never three equal cards. The dashboard is a manga console with a slim ink spine, not a boxed sidebar.

### Hierarchy

Scale and material contrast lead: compressed uppercase display, then the manga figure, then small mono tone codes. Wet-ink blue marks the one active signal; lime is a rare diagnostic ping; vermilion is a single splash.

### Density

Airy cream margins between plates; tight 4-8px clusters inside tone-code rows. Balance density across the canvas — never a crowded cluster beside a starved void.

### Signature Patterns

- Tone-develop reveal: content enters as bare ink line and screentone floods in to shade it — a dot-density ramp, never a plain fade.
- Living moire field: two overlapping dot layers beat into interference as one page-wide system; it reacts to the pointer on the landing.
- Ink-stamp controls: solid-ink or wet-blue pills with a flat offset shadow that collapses on press.
- Tone-plate cards: an ink title bar over a screentone band over clean paper, anchored by a mono tone code — no grey border.
- Panel-gutter rhythm: the white gutter opens between clusters like the space between manga panels; focus lines converge for emphasis.

## 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-019f8b67-4602-79d1-82b3-6b645de15769/DESIGN.with-shadcn.md`.

Machine-readable companions for automation: `/language/en-019f8b67-4602-79d1-82b3-6b645de15769/shadcn.json` (registry theme), `/language/en-019f8b67-4602-79d1-82b3-6b645de15769/shadcn-components.md` (component recipes) and `/language/en-019f8b67-4602-79d1-82b3-6b645de15769/shadcn-shots.json` (preview shots). The human-facing handoff is still DESIGN.md with shadcn.

Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do Keep the base black ink on cream paper; spend wet-ink blue like one voice, lime as a rare ping, vermilion once.
- Do Shade with screentone dot-density and let tone plates carry hierarchy through their ink title bar, not a border.
- Do Let the moire field recur page-wide as one system and keep it the only thing continuously alive.
- Do Write copy as console verse and tone codes; draw human presence as manga ink-and-tone figures.
- Don't Do not add chrome rails, glossy capsules, or metallic gradients.
- Don't Do not give a plate a single accent edge or a grey border.
- Don't Do not let the dot field become loud wallpaper or bury text.
- Don't Do not use three equal cards, KPI tiles, or analytics-dashboard conventions.
- Don't Do not round arbitrarily; use only square frames, 16/24px plate corners, and full pills.

## Imagery Direction

### Pairs With

benday

### Summary

Manga ink + screentone: black pen-and-ink contour shaded with adhesive ben-day dots, dramatic dot-density gradients, faint moire, matte cream paper, one wet-blue spot. Subjects are lonely figures, turn-of-millennium anime cityscapes, Y2K hardware objects, and quiet landscapes.

### Usage

One full-bleed hero per landing via var(--hero-image); art plates via --plate-N slots. Copy and imagery never share the same ground — text sits on clean paper or an ink plate, imagery keeps its own bleed.

### Avoid

Full-colour renders, photographic look, more than one spot colour, text in the image.
shadcn/ui theme file
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "moire-manga-tone-console",
  "type": "registry:theme",
  "title": "Moire shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F4F0E4",
      "foreground": "#14120E",
      "card": "#FCFAF3",
      "card-foreground": "#14120E",
      "popover": "#FCFAF3",
      "popover-foreground": "#14120E",
      "primary": "#14120E",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#6B665B",
      "muted-foreground": "#14120E",
      "accent": "#2C63E0",
      "accent-foreground": "#ffffff",
      "destructive": "#E23B2C",
      "border": "#E4DECF",
      "input": "#E4DECF",
      "ring": "#2C63E0",
      "chart-1": "#14120E",
      "chart-2": "#f4f4f5",
      "chart-3": "#2C63E0",
      "chart-4": "#4E9A51",
      "chart-5": "#C88526",
      "sidebar": "#FCFAF3",
      "sidebar-foreground": "#14120E",
      "sidebar-primary": "#14120E",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2C63E0",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#E4DECF",
      "sidebar-ring": "#2C63E0",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#14120E",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#2C63E0",
      "accent-foreground": "#ffffff",
      "destructive": "#E23B2C",
      "border": "#303642",
      "input": "#303642",
      "ring": "#2C63E0",
      "chart-1": "#14120E",
      "chart-2": "#f4f4f5",
      "chart-3": "#2C63E0",
      "chart-4": "#4E9A51",
      "chart-5": "#C88526",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#14120E",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2C63E0",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#2C63E0",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019f8b67-4602-79d1-82b3-6b645de15769",
    "slug": "moire-manga-tone-console",
    "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"
      ]
    }
  }
}
```

shadcn/ui kit