Typography
headline-lgArchivo · 33px · 700
The quick brown fox jumps
headline-mdArchivo · 27px · 600
The quick brown fox jumps
body-mdIBM Plex Sans · 17px · 400
The quick brown fox jumps
label-mdIBM Plex Mono · 12px · 600
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Compose pages like issue covers and feature spreads: anchor the screen with one dominant headline block, support it with stacked metadata bands and tape labels, then break the grid with secondary stories, pull quotes, and utility panels that feel pinned into place. Major regions read as editorial modules, not generic product cards.
Hierarchy comes from scale contrast, border weight, label treatment, and abrupt column shifts. Headlines are dramatically larger than body text; mono annotations and issue numerals create intermediate layers; captions and controls stay smaller but high-contrast and boxed.
Moderately dense. Pack the page with information and visible navigation, but preserve reading rhythm through disciplined spacing bands, strong dividers, and clear module separation.
Every major panel is a square 3px black plate with an offset fluorescent backplate (orange or acid lime), creating deliberate misregistration and overprint energy. Section headers combine giant Archivo uppercase with a rule stack and a small mono kicker; metadata and labels sit in bordered mono tape strips; imagery is wrapped with crop marks, grain, and caption bars; and the layout exposes editorial rails — vertical dividers, asymmetric spans, and margin notes.
Desktop uses a 12-column editorial grid with a persistent utility rail and flexible feature spans; tablet reduces to a two-column stack with the rail converting to a toolbar; mobile becomes a single-column feed with preserved label strips and full-width modules.
Disciplined rather than airy: tight internal padding for labels and controls, larger band spacing between editorial modules, deliberate gutters that keep the exposed grid legible.
Moderately dense, information-rich, with clear module separation.
Grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing; from ~390px mobile to 2560px+ ultra-wide the contained content caps and centres while only the full-bleed hero spans 100vw.
overprint
Misregistered two-spot risograph / photocopy overprint on grainy off-white stock: bold coarse halftone dot screens, thick black contour linework, one fluorescent plate shifted out of register, xerox grain, treated as printed matter rather than glossy media.
Hero and feature imagery are full-frame overprint crops driven by background-image: var(--hero-image). Frame media like a copied poster or spread with caption rails and registration marks; keep grayscale/duotone treatment with the orange plate screening over it.
# Signal Press ## Philosophy Signal Press is a publication-first interface language: a risograph quarterly translated to screen. It treats the page like a press floor — the grid stays visible, headlines hit blunt and oversized, every label reads like a strip of tape pulled off a proof, and one fluorescent ink sits slightly out of register over the black. Anti-polish, editorial, and built like printed matter. ### Values - Editorial hierarchy is immediate and forceful: covers, decks, side notes, and issue labels behave like print matter translated to screen. - Material roughness is a feature: visible rules, registration offset, photocopy grain, hard crops, and tape-label motifs make production artifacts part of the identity. - Utility and expression coexist: forms, filters, navigation, and reading tools stay usable while inheriting the raw typographic and structural language of the feature content. - Asymmetry and interruption sharpen hierarchy and pacing, exposing the grid as a compositional device rather than hiding it. ### Anti-Values - Soft SaaS polish, glassmorphism, and luxury gradients that erase the sense of printed matter. - Neutral component-library layouts where every card, button, and panel shares the same generic rounded-box treatment. - Using the second ink as an ambient background wash or glow instead of as deliberate spot ink. - A clean white SaaS ground; Signal Press lives on warm cream pulp. ### Visual Character - Oversized condensed/expanded Archivo headlines sit inside rigid black rule frameworks, paired with small uppercase IBM Plex Mono metadata strips that read like pasted production labels. - Cards and panels use thick 3px black frames, square corners, and an offset fluorescent backplate so each block reads like an overprinted poster mounted on the page. - Page sections expose the grid with asymmetric columns, broad gutters, vertical rule dividers, and marginal annotation rails instead of hiding structure behind seamless masonry. - Images appear as harsh editorial crops with grayscale/duotone treatment, photocopy grain, caption bars, and corner crop marks that mimic scanned print layouts. - Accent colour is used like spot ink or marker — fluorescent orange and acid lime — in abrupt slashes, label strips, and pull-quote highlights, never smooth fills or glows. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#f1ede3` | | surface | `#fffdf8` | | surface_2 | `#e7e1d3` | | text | `#111111` | | muted | `#5f5a52` | | border | `#101010` | | accent | `#ff5a1f` | | accent_2 | `#c8f000` | | on_accent | `#0a0a0a` | | success | `#18794e` | | warning | `#d97904` | | error | `#c92a2a` | | info | `#0b7285` | ### Typography - **Base Size**: 17px - **Body Font**: IBM Plex Sans - **Heading Font**: Archivo - **Mono Font**: IBM Plex Mono - **Heading Weight**: 900 - **Heading Transform**: uppercase - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0 - **Sm**: 0 - **Md**: 0 - **Lg**: 0 - **Full**: 9999px ### Shadows - **Sm**: 4px 4px 0 #101010 - **Md**: 8px 8px 0 #101010 - **Lg**: 12px 12px 0 #101010 - **Philosophy**: Hard offset plates, never soft blur. Depth is misregistration, not elevation. ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Treatment**: paper - **Card Style**: Off-white proof-paper panels on a warm cream ground, with photocopy grain overlay, square 3px black frames, and an offset fluorescent backplate for overprint energy. - **Bg Pattern**: exposed-grid ### Borders - **Default Width**: 3px - **Accent Width**: 6px - **Style**: solid - **Character**: Heavy print-shop rules, square-corner frames, divider bars, and tape-label outlines are a primary visual ingredient, not a finishing detail. ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2,0.8,0.2,1) - **Philosophy**: Snappy and mechanical. The settled state is the default (visible with no JS); motion is layered on top and respects prefers-reduced-motion. ## Rules ### Composition Compose pages like issue covers and feature spreads: anchor the screen with one dominant headline block, support it with stacked metadata bands and tape labels, then break the grid with secondary stories, pull quotes, and utility panels that feel pinned into place. Major regions read as editorial modules, not generic product cards. ### Hierarchy Hierarchy comes from scale contrast, border weight, label treatment, and abrupt column shifts. Headlines are dramatically larger than body text; mono annotations and issue numerals create intermediate layers; captions and controls stay smaller but high-contrast and boxed. ### Density Moderately dense. Pack the page with information and visible navigation, but preserve reading rhythm through disciplined spacing bands, strong dividers, and clear module separation. ### Signature Every major panel is a square 3px black plate with an offset fluorescent backplate (orange or acid lime), creating deliberate misregistration and overprint energy. Section headers combine giant Archivo uppercase with a rule stack and a small mono kicker; metadata and labels sit in bordered mono tape strips; imagery is wrapped with crop marks, grain, and caption bars; and the layout exposes editorial rails — vertical dividers, asymmetric spans, and margin notes. ## Layout ### Grid Desktop uses a 12-column editorial grid with a persistent utility rail and flexible feature spans; tablet reduces to a two-column stack with the rail converting to a toolbar; mobile becomes a single-column feed with preserved label strips and full-width modules. ### Whitespace Disciplined rather than airy: tight internal padding for labels and controls, larger band spacing between editorial modules, deliberate gutters that keep the exposed grid legible. ### Density Moderately dense, information-rich, with clear module separation. ### Responsive Grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing; from ~390px mobile to 2560px+ ultra-wide the contained content caps and centres while only the full-bleed hero spans 100vw. ### Breakpoints - **Desktop**: 1440px and above — masthead, feature well, and utility rail. - **Tablet**: 768px to 1439px — feature and secondary modules stack to two columns; the rail becomes a horizontal toolbar. - **Mobile**: 390px to 767px — single-column flow, headline first, controls and metrics stacked, full-width buttons. ## Guidance ### Do - Use Archivo display type for headlines and issue numbers, with IBM Plex Mono labels for metadata, controls, and wayfinding. - Keep borders heavy, corners square, and module layering visible through offset plates, rule dividers, crop marks, and caption bars. - Treat imagery as editorial material: crop aggressively, add captions, and let photocopy grain or duotone reinforce the publication feel. - Design complete reading scenes — filters, subscription prompts, issue navigation, article modules — instead of isolated component catalogs. ### Don't - Do not soften the system with pill buttons, large radii, glass cards, or gradient washes. - Do not rely on neutral product-dashboard composition where all blocks have equal weight and the page loses cover-line hierarchy. - Do not use the second ink as a background fill or ambient glow — it is spot ink, one idea per block. - Do not hide the grid under excessive spacing; the structure stays visibly authored and editorial. ### Accessibility High contrast everywhere: near-black ink on cream pulp and proof-white. Spot inks (orange #ff5a1f, lime #c8f000) carry black text on their fills for AA contrast. Every form control is explicitly styled with a visible focus ring; motion respects prefers-reduced-motion; the fully-rendered state is visible with no JavaScript. ## Imagery Direction ### Pairs With overprint ### Summary Misregistered two-spot risograph / photocopy overprint on grainy off-white stock: bold coarse halftone dot screens, thick black contour linework, one fluorescent plate shifted out of register, xerox grain, treated as printed matter rather than glossy media. ### Subjects - printed ephemera and zine spreads - press machinery and roller cylinders - hands at the proofing bench - metal type specimens - taped layout sheets with crop marks - documentary street and desk crops ### Usage Hero and feature imagery are full-frame overprint crops driven by background-image: var(--hero-image). Frame media like a copied poster or spread with caption rails and registration marks; keep grayscale/duotone treatment with the orange plate screening over it.
---
version: "alpha"
name: "Signal Press"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#f1ede3"
surface: "#fffdf8"
surface_2: "#e7e1d3"
text: "#111111"
muted: "#5f5a52"
border: "#101010"
accent: "#ff5a1f"
accent_2: "#c8f000"
on_accent: "#0a0a0a"
success: "#18794e"
warning: "#d97904"
error: "#c92a2a"
info: "#0b7285"
typography:
headline-lg:
fontFamily: "Archivo"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Archivo"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex 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-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-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Signal Press
## Overview
Signal Press is a publication-first interface language: a risograph quarterly translated to screen. It treats the page like a press floor — the grid stays visible, headlines hit blunt and oversized, every label reads like a strip of tape pulled off a proof, and one fluorescent ink sits slightly out of register over the black. Anti-polish, editorial, and built like printed matter.
### Values
- Editorial hierarchy is immediate and forceful: covers, decks, side notes, and issue labels behave like print matter translated to screen.
- Material roughness is a feature: visible rules, registration offset, photocopy grain, hard crops, and tape-label motifs make production artifacts part of the identity.
- Utility and expression coexist: forms, filters, navigation, and reading tools stay usable while inheriting the raw typographic and structural language of the feature content.
- Asymmetry and interruption sharpen hierarchy and pacing, exposing the grid as a compositional device rather than hiding it.
### Anti-Values
- Soft SaaS polish, glassmorphism, and luxury gradients that erase the sense of printed matter.
- Neutral component-library layouts where every card, button, and panel shares the same generic rounded-box treatment.
- Using the second ink as an ambient background wash or glow instead of as deliberate spot ink.
- A clean white SaaS ground; Signal Press lives on warm cream pulp.
### Visual Character
- Oversized condensed/expanded Archivo headlines sit inside rigid black rule frameworks, paired with small uppercase IBM Plex Mono metadata strips that read like pasted production labels.
- Cards and panels use thick 3px black frames, square corners, and an offset fluorescent backplate so each block reads like an overprinted poster mounted on the page.
- Page sections expose the grid with asymmetric columns, broad gutters, vertical rule dividers, and marginal annotation rails instead of hiding structure behind seamless masonry.
- Images appear as harsh editorial crops with grayscale/duotone treatment, photocopy grain, caption bars, and corner crop marks that mimic scanned print layouts.
- Accent colour is used like spot ink or marker — fluorescent orange and acid lime — in abrupt slashes, label strips, and pull-quote highlights, never smooth fills or glows.
## 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 | `#f1ede3` |
| surface | `#fffdf8` |
| surface_2 | `#e7e1d3` |
| text | `#111111` |
| muted | `#5f5a52` |
| border | `#101010` |
| accent | `#ff5a1f` |
| accent_2 | `#c8f000` |
| on_accent | `#0a0a0a` |
| success | `#18794e` |
| warning | `#d97904` |
| error | `#c92a2a` |
| info | `#0b7285` |
## Typography
- **Headline-Lg**: Archivo, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.55.
- **Label-Md**: IBM Plex 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
Desktop uses a 12-column editorial grid with a persistent utility rail and flexible feature spans; tablet reduces to a two-column stack with the rail converting to a toolbar; mobile becomes a single-column feed with preserved label strips and full-width modules.
### Whitespace
Disciplined rather than airy: tight internal padding for labels and controls, larger band spacing between editorial modules, deliberate gutters that keep the exposed grid legible.
### Density
Moderately dense, information-rich, with clear module separation.
### Responsive
Grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing; from ~390px mobile to 2560px+ ultra-wide the contained content caps and centres while only the full-bleed hero spans 100vw.
### Breakpoints
- **Desktop**: 1440px and above — masthead, feature well, and utility rail.
- **Tablet**: 768px to 1439px — feature and secondary modules stack to two columns; the rail becomes a horizontal toolbar.
- **Mobile**: 390px to 767px — single-column flow, headline first, controls and metrics stacked, full-width buttons.
## Elevation & Depth
### Shadows
- **Sm**: 4px 4px 0 #101010
- **Md**: 8px 8px 0 #101010
- **Lg**: 12px 12px 0 #101010
- **Philosophy**: Hard offset plates, never soft blur. Depth is misregistration, not elevation.
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: paper
- **Card Style**: Off-white proof-paper panels on a warm cream ground, with photocopy grain overlay, square 3px black frames, and an offset fluorescent backplate for overprint energy.
- **Bg Pattern**: exposed-grid
### Borders
- **Default Width**: 3px
- **Accent Width**: 6px
- **Style**: solid
- **Character**: Heavy print-shop rules, square-corner frames, divider bars, and tape-label outlines are a primary visual ingredient, not a finishing detail.
## Components
### Composition
Compose pages like issue covers and feature spreads: anchor the screen with one dominant headline block, support it with stacked metadata bands and tape labels, then break the grid with secondary stories, pull quotes, and utility panels that feel pinned into place. Major regions read as editorial modules, not generic product cards.
### Hierarchy
Hierarchy comes from scale contrast, border weight, label treatment, and abrupt column shifts. Headlines are dramatically larger than body text; mono annotations and issue numerals create intermediate layers; captions and controls stay smaller but high-contrast and boxed.
### Density
Moderately dense. Pack the page with information and visible navigation, but preserve reading rhythm through disciplined spacing bands, strong dividers, and clear module separation.
### Signature
Every major panel is a square 3px black plate with an offset fluorescent backplate (orange or acid lime), creating deliberate misregistration and overprint energy. Section headers combine giant Archivo uppercase with a rule stack and a small mono kicker; metadata and labels sit in bordered mono tape strips; imagery is wrapped with crop marks, grain, and caption bars; and the layout exposes editorial rails — vertical dividers, asymmetric spans, and margin notes.
## 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-019efa16-1de4-7ed3-9a70-8fb135ef8bc4/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 Use Archivo display type for headlines and issue numbers, with IBM Plex Mono labels for metadata, controls, and wayfinding.
- Do Keep borders heavy, corners square, and module layering visible through offset plates, rule dividers, crop marks, and caption bars.
- Do Treat imagery as editorial material: crop aggressively, add captions, and let photocopy grain or duotone reinforce the publication feel.
- Do Design complete reading scenes — filters, subscription prompts, issue navigation, article modules — instead of isolated component catalogs.
- Don't Do not soften the system with pill buttons, large radii, glass cards, or gradient washes.
- Don't Do not rely on neutral product-dashboard composition where all blocks have equal weight and the page loses cover-line hierarchy.
- Don't Do not use the second ink as a background fill or ambient glow — it is spot ink, one idea per block.
- Don't Do not hide the grid under excessive spacing; the structure stays visibly authored and editorial.
### Accessibility
High contrast everywhere: near-black ink on cream pulp and proof-white. Spot inks (orange #ff5a1f, lime #c8f000) carry black text on their fills for AA contrast. Every form control is explicitly styled with a visible focus ring; motion respects prefers-reduced-motion; the fully-rendered state is visible with no JavaScript.
## Imagery Direction
### Pairs With
overprint
### Summary
Misregistered two-spot risograph / photocopy overprint on grainy off-white stock: bold coarse halftone dot screens, thick black contour linework, one fluorescent plate shifted out of register, xerox grain, treated as printed matter rather than glossy media.
### Subjects
- printed ephemera and zine spreads
- press machinery and roller cylinders
- hands at the proofing bench
- metal type specimens
- taped layout sheets with crop marks
- documentary street and desk crops
### Usage
Hero and feature imagery are full-frame overprint crops driven by background-image: var(--hero-image). Frame media like a copied poster or spread with caption rails and registration marks; keep grayscale/duotone treatment with the orange plate screening over it.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "signal-press",
"type": "registry:theme",
"title": "Signal Press shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#f1ede3",
"foreground": "#111111",
"card": "#fffdf8",
"card-foreground": "#111111",
"popover": "#fffdf8",
"popover-foreground": "#111111",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#5f5a52",
"muted-foreground": "#111111",
"accent": "#ff5a1f",
"accent-foreground": "#ffffff",
"destructive": "#c92a2a",
"border": "#101010",
"input": "#101010",
"ring": "#ff5a1f",
"chart-1": "#111111",
"chart-2": "#f4f4f5",
"chart-3": "#ff5a1f",
"chart-4": "#18794e",
"chart-5": "#d97904",
"sidebar": "#fffdf8",
"sidebar-foreground": "#111111",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#0b7285",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#101010",
"sidebar-ring": "#ff5a1f",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#ff5a1f",
"accent-foreground": "#ffffff",
"destructive": "#c92a2a",
"border": "#303642",
"input": "#303642",
"ring": "#ff5a1f",
"chart-1": "#111111",
"chart-2": "#f4f4f5",
"chart-3": "#ff5a1f",
"chart-4": "#18794e",
"chart-5": "#d97904",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#ff5a1f",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#ff5a1f",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efa16-1de4-7ed3-9a70-8fb135ef8bc4",
"slug": "signal-press",
"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",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"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"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"philosophy",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Signal Pressand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #f1ede3;
--foreground: #111111;
--card: #fffdf8;
--card-foreground: #111111;
--popover: #fffdf8;
--popover-foreground: #111111;
--primary: #111111;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #5f5a52;
--muted-foreground: #111111;
--accent: #ff5a1f;
--accent-foreground: #ffffff;
--destructive: #c92a2a;
--border: #101010;
--input: #101010;
--ring: #ff5a1f;
--chart-1: #111111;
--chart-2: #f4f4f5;
--chart-3: #ff5a1f;
--chart-4: #18794e;
--chart-5: #d97904;
--sidebar: #fffdf8;
--sidebar-foreground: #111111;
--sidebar-primary: #111111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #0b7285;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #101010;
--sidebar-ring: #ff5a1f;
--radius: 0;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #111111;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #ff5a1f;
--accent-foreground: #ffffff;
--destructive: #c92a2a;
--border: #303642;
--input: #303642;
--ring: #ff5a1f;
--chart-1: #111111;
--chart-2: #f4f4f5;
--chart-3: #ff5a1f;
--chart-4: #18794e;
--chart-5: #d97904;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #111111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #ff5a1f;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #ff5a1f;
--radius: 0;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function SignalPressShadcnKit() {
return (
<section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
<div className="flex items-start justify-between gap-4">
<div>
<Badge variant="outline">shadcn/ui</Badge>
<h2 className="mt-3 text-2xl font-semibold tracking-tight">Signal Press</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "signal-press",
"type": "registry:theme",
"title": "Signal Press",
"description": "A risograph quarterly translated to screen. Warm cream-pulp ground, near-black key plate, one fluorescent orange and one acid-lime spot ink. Archivo display + IBM Plex Sans/Mono. Square corners, heavy 3px print-shop rules, hard offset overprint plates (no blur), photocopy grain. Publication-first and anti-polish.",
"cssVars": {
"theme": {
"font-sans": "IBM Plex Sans, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"font-display": "Archivo, Arial Narrow, sans-serif",
"font-heading": "Archivo, Arial Narrow, sans-serif",
"radius": "0px"
},
"light": {
"background": "#f1ede3",
"foreground": "#111111",
"card": "#fffdf8",
"card-foreground": "#111111",
"popover": "#fffdf8",
"popover-foreground": "#111111",
"primary": "#ff5a1f",
"primary-foreground": "#0a0a0a",
"secondary": "#101010",
"secondary-foreground": "#fffdf8",
"accent": "#c8f000",
"accent-foreground": "#0a0a0a",
"muted": "#e7e1d3",
"muted-foreground": "#5f5a52",
"destructive": "#c92a2a",
"destructive-foreground": "#fffdf8",
"success": "#18794e",
"warning": "#d97904",
"info": "#0b7285",
"border": "#101010",
"input": "#fffdf8",
"ring": "#ff5a1f",
"radius": "0px"
}
}
}
# Signal Press shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efa16-1de4-7ed3-9a70-8fb135ef8bc4`
Slug: `signal-press`
## Intent
Signal Press is a publication-first interface language: a risograph quarterly translated to screen. It treats the page like a press floor — the grid stays visible, headlines hit blunt and oversized, every label reads like a strip of tape pulled off a proof, and one fluorescent ink sits slightly out of register over the black. Anti-polish, editorial, and built like printed matter.
## Required primitives
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
## Token cues
Colors:
{
"bg": "#f1ede3",
"surface": "#fffdf8",
"surface_2": "#e7e1d3",
"text": "#111111",
"muted": "#5f5a52",
"border": "#101010",
"accent": "#ff5a1f",
"accent_2": "#c8f000",
"on_accent": "#0a0a0a",
"success": "#18794e",
"warning": "#d97904",
"error": "#c92a2a",
"info": "#0b7285"
}
Typography:
{
"base_size": "17px",
"body_font": "IBM Plex Sans",
"heading_font": "Archivo",
"mono_font": "IBM Plex Mono",
"heading_weight": "900",
"heading_transform": "uppercase",
"letter_spacing": "-0.02em",
"line_height": 1.55,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- Oversized condensed/expanded Archivo headlines sit inside rigid black rule frameworks, paired with small uppercase IBM Plex Mono metadata strips that read like pasted production labels.
- Cards and panels use thick 3px black frames, square corners, and an offset fluorescent backplate so each block reads like an overprinted poster mounted on the page.
- Page sections expose the grid with asymmetric columns, broad gutters, vertical rule dividers, and marginal annotation rails instead of hiding structure behind seamless masonry.
- Images appear as harsh editorial crops with grayscale/duotone treatment, photocopy grain, caption bars, and corner crop marks that mimic scanned print layouts.
- Accent colour is used like spot ink or marker — fluorescent orange and acid lime — in abrupt slashes, label strips, and pull-quote highlights, never smooth fills or glows.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "lift",
"density": "dense",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/signal-press/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Use Archivo display type for headlines and issue numbers, with IBM Plex Mono labels for metadata, controls, and wayfinding.; Keep borders heavy, corners square, and module layering visible through offset plates, rule dividers, crop marks, and caption bars.; Treat imagery as editorial material: crop aggressively, add captions, and let photocopy grain or duotone reinforce the publication feel.; Design complete reading scenes — filters, subscription prompts, issue navigation, article modules — instead of isolated component catalogs.
- Do not: Do not soften the system with pill buttons, large radii, glass cards, or gradient washes.; Do not rely on neutral product-dashboard composition where all blocks have equal weight and the page loses cover-line hierarchy.; Do not use the second ink as a background fill or ambient glow — it is spot ink, one idea per block.; Do not hide the grid under excessive spacing; the structure stays visibly authored and editorial.
## Copy-paste component example
This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.
```tsx
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function SignalPressShadcnKit() {
return (
<section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
<div className="flex items-start justify-between gap-4">
<div>
<Badge variant="outline">shadcn/ui</Badge>
<h2 className="mt-3 text-2xl font-semibold tracking-tight">Signal Press</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
```
## Layout notes
{
"grid": "Desktop uses a 12-column editorial grid with a persistent utility rail and flexible feature spans; tablet reduces to a two-column stack with the rail converting to a toolbar; mobile becomes a single-column feed with preserved label strips and full-width modules.",
"whitespace": "Disciplined rather than airy: tight internal padding for labels and controls, larger band spacing between editorial modules, deliberate gutters that keep the exposed grid legible.",
"density": "Moderately dense, information-rich, with clear module separation.",
"responsive": "Grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing; from ~390px mobile to 2560px+ ultra-wide the contained content caps and centres while only the full-bleed hero spans 100vw.",
"breakpoints": {
"desktop": "1440px and above — masthead, feature well, and utility rail.",
"tablet": "768px to 1439px — feature and secondary modules stack to two columns; the rail becomes a horizontal toolbar.",
"mobile": "390px to 767px — single-column flow, headline first, controls and metrics stacked, full-width buttons."
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"author": "katagami-agent",
"generatedBy": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": { "id": "", "name": "Signal Press", "slug": "signal-press" },
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": ["button", "card", "input", "textarea", "select", "dialog", "sheet", "tabs", "badge", "separator", "checkbox", "switch", "slider", "tooltip", "dropdown-menu", "table"],
"identityNotes": [
"Overprint by hand: a focal card is a square black-framed plate with a fluorescent backplate shifted 8–12px behind it — never a soft shadow, never a rounded box.",
"Labels are mono, uppercase, tracked wide — they read like tape pulled off a proof. The grid stays visible: rule dividers, gutters, and a utility rail are the composition.",
"Warm cream-pulp ground, never white. Spot ink (orange + acid lime) is used like marker — one idea per block — and the only round token is a full pill."
],
"visualProfile": {
"family": "editorial-brutalist",
"material": "paper",
"contour": "hard",
"border": "heavy",
"borderWidth": "3px",
"underlay": true,
"underlayOffset": "10px",
"underlayColor": "accent",
"grain": true,
"stickerBadges": true,
"motion": "snappy",
"density": "balanced",
"radius": "0px",
"accents": ["accent", "accent-2", "warning"]
},
"shots": [
{
"id": "application-shell",
"title": "The Press Desk",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "An editorial run board: a utility rail with mono nav, KPI plates where the lead metric carries an offset fluorescent backplate, a filter row of tape chips, and the plate-queue ledger with status badges and an ink-budget heat bar.",
"mustShow": ["fluorescent orange primary button vs near-black secondary button", "a focal card as a black-framed plate with an offset orange backplate (no blur shadow)", "status badges in orange / acid lime / set-green / hold-amber", "mono uppercase tape labels and a visible rule grid on cream pulp"],
"avoid": ["rounded corners, pill buttons, glass cards, or gradient washes", "white SaaS ground", "equal-weight cards that lose cover-line hierarchy", "soft drop shadows instead of hard offset plates"],
"scene": {
"eyebrow": "production // run board",
"headline": "Run Board — No. 14",
"description": "An editorial desk where every story is registered to a plate by stage: set, proof, layout, hold.",
"primaryAction": "Send to plate",
"secondaryAction": "Hold the run",
"stats": [
{ "label": "subscribers", "value": "8,420", "tone": "accent" },
{ "label": "pages set", "value": "38/44", "tone": "default" },
{ "label": "ink budget", "value": "94%", "tone": "accent-2" }
],
"rows": [
{ "label": "The machinist who scans her own hands", "value": "Feature · plate orange · 840w", "status": "set" },
{ "label": "Acid lime is not a warning", "value": "Field · plate lime · 410w", "status": "proof" },
{ "label": "Crop marks as honesty", "value": "Process · plate black · 260w", "status": "set" },
{ "label": "Notes on a misregistered cover", "value": "Process · plate orange", "status": "draft" }
],
"statuses": ["Set", "Proof", "Layout", "Hold"]
}
},
{
"id": "detail-editor",
"title": "Send a story to plate",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A send flow on a black-framed plate: labelled mono fields, an invalid (stop-red) plate-assignment state, a carry-to-next-run switch, a misregistration-offset slider, and a send-confirm dialog with a hard offset backplate.",
"mustShow": ["orange inset focus ring on inputs", "an invalid (stop-red) state", "send-confirm dialog as a square plate with offset backplate", "real editorial values"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "rounded inputs"],
"scene": {
"eyebrow": "production // send",
"headline": "Send — acid lime is not a warning",
"description": "A story form proving mono labels, an invalid plate-assignment state, a carry toggle, an offset slider, and a send confirm.",
"primaryAction": "Send to plate",
"secondaryAction": "Hold",
"fields": [
{ "label": "Slug", "value": "Acid lime is not a warning", "type": "text" },
{ "label": "Plate", "value": "— assign a spot plate before sending", "type": "invalid" },
{ "label": "Section", "value": "Field", "type": "select" },
{ "label": "Carry to next run", "value": "on", "type": "switch" }
],
"statuses": ["Set", "Invalid", "Carried"]
}
},
{
"id": "data-operations",
"title": "Plate queue",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow plate queue: stacked mono rows on cream pulp, per-row dropdown actions, status badges, tooltips, and a hold state.",
"mustShow": ["responsive reflow to one column with label strips kept", "mono slug rows", "row action menu with a destructive 'spike' item", "orange / lime / amber status badges", "a hold state"],
"avoid": ["desktop-only tables", "text overflow", "generic shadcn spacing without Signal Press character"],
"scene": {
"eyebrow": "galley",
"headline": "Plate queue",
"description": "A compact queue with rows, menus, tooltips, status badges, and a hold affordance.",
"primaryAction": "Send",
"secondaryAction": "Filter",
"rows": [
{ "label": "The machinist who scans her own hands", "value": "Feature", "status": "set" },
{ "label": "The noise floor, charted", "value": "Field", "status": "proof" },
{ "label": "Field log: the wet-proof archive", "value": "Process", "status": "hold" }
],
"statuses": ["Set", "Proof", "Hold"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Hierarchy: fluorescent orange primary = the one emphasis; near-black secondary; transparent ghost = quiet; acid-lime for a second affordance. Square, 3px frame, mono uppercase label, one shared height; hover lifts to a hard offset plate." },
{ "primitive": "card", "intent": "Square black-framed plate on proof-white; a focal card adds an offset fluorescent backplate (translate 10px) for deliberate misregistration — never a blur shadow, never rounded." },
{ "primitive": "input", "intent": "Proof-white fill, 3px black frame; orange inset ring on focus, stop-red inset when invalid; square; mono uppercase label above." },
{ "primitive": "textarea", "intent": "Longer notes with the same focus + invalid rhythm; sans body, generous, square." },
{ "primitive": "select", "intent": "Section / plate filtering with a square trigger, a rule-built chevron, and clear selection contrast." },
{ "primitive": "dialog", "intent": "A formal 'Send this story to plate?' notice — square plate with an offset backplate, generous padding, no rounded corners." },
{ "primitive": "sheet", "intent": "The story / archive side rail for contextual editing; carries the utility-rail mono treatment." },
{ "primitive": "tabs", "intent": "Switch Desk / Galley / Wire; the active tab is a solid orange tape strip, not an underline." },
{ "primitive": "badge", "intent": "Flat tape-strip status vocabulary: set / proof / hold / draft (set-green / orange / hold-amber / newsprint), mono uppercase." },
{ "primitive": "separator", "intent": "A heavy 3px black rule or a thin hairline divider — an exposed editorial rule, used to expose the grid." },
{ "primitive": "checkbox", "intent": "Square opt-ins with an acid-lime checked state and a black check mark; clear focus." },
{ "primitive": "switch", "intent": "Carry / settings toggle; on is fluorescent orange with a black knob, off is a flat newsprint track — square, no pill." },
{ "primitive": "slider", "intent": "Misregistration offset / column span with an orange track and a square thumb." },
{ "primitive": "tooltip", "intent": "Concise mono notes above compact controls, on a near-black tape strip." },
{ "primitive": "dropdown-menu", "intent": "Per-row story actions with a destructive 'spike' item; square, framed, mono labels." },
{ "primitive": "table", "intent": "The plate-queue ledger: near-black mono header strip, sans rows on cream pulp, hairline row dividers, a status badge per row, a hold empty state." }
],
"qualityRules": {
"do": [
"Make focal blocks square black-framed plates with an offset fluorescent backplate.",
"Keep the ground warm cream pulp; reserve orange and acid lime as spot ink, one idea per block.",
"Set labels, slugs, counts, and times in mono uppercase, tracked wide, like tape labels.",
"Expose the grid with rule dividers, gutters, and a utility rail."
],
"dont": [
"Round corners, use pill buttons, glass cards, or gradient washes.",
"Replace the hard offset plate with a soft blur shadow.",
"Flatten to equal-weight white cards that lose cover-line hierarchy.",
"Use the second ink as a background fill or ambient glow."
]
}
}