back to gallery
design language·contrast-craft-proof

Contrast Craft Proof

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

Download DESIGN.md

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

the spec

specification

philosophy
summary
A high-contrast palette system for production interfaces that treats accessibility, editorial restraint, and named token discipline as the visual identity rather than as cleanup after decoration.
values
Contrast as compositionSmall primitive paletteNamed semantic intentCrafted accent restraintLight and dark parity
anti-values
×AI-polished gradient haze×Unnamed one-off colors×Random saturation spikes×Low-contrast decorative neutrals
tokens
borders4 items
accent width
4px
character
black production rules for structure, cinnabar enamel rules only for selected active states
default width
1px
style
solid
colors12 items
accent
#B6422A
background
#FAF8F1
border
#2A2926
error
#A72E24
info
#245C7A
muted
#6A665F
primary
#101010
secondary
#F2EFE8
success
#176C4A
surface
#E8E3D8
text
#101010
warning
#8A5A00
motion3 items
duration
120ms
easing
cubic-bezier(.2,0,.1,1)
philosophy
short mechanical state changes; no float, shimmer, parallax, or decorative easing
radii5 items
full
9999px
lg
4px
md
2px
none
0
sm
2px
shadows3 items
lg
10px 10px 0 #101010
md
6px 6px 0 #101010
sm
3px 3px 0 #101010
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
subtle 24px registration grid drawn with low-contrast neutral rules
card style
bone or graphite blocks with 2px ink border, tiny clipped notch, and offset rule shadow
treatment
flat ink-and-paper surfaces with no blur, no glass, no gradients, and deliberate neutral temperature shifts
typography8 items
base size
16px
body font
IBM Plex Sans
google fonts url
https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
heading font
Sora
letter spacing
-0.015em
line height
1.5
mono font
IBM Plex Mono
scale ratio
1.22
rules
composition

Build screens as editorial proof sheets: strong black axes, asymmetric information panels, measured gutters, and one small crafted accent per view.

density

Medium-high product density with compact controls, generous section gutters, and highly legible 16px body text.

hierarchy

Use weight, scale, border thickness, and neutral inversion before hue; color never carries meaning without text, shape, or position.

signature patterns
Registration-grid backgrounds use repeating-linear-gradient neutral rules at 24px intervals with opacity below visible text contrast thresholds.Proof cards include a clipped top-right notch via clip-path plus an offset black shadow that reads as print production furniture.Accent governance uses a .cinnabar-cap utility that restricts accent fills to thin strips, badges, selected tabs, and chart strokes.Contrast badges pair mono token names with explicit AA or AAA labels so accessibility metadata becomes visible interface texture.
layout
breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

grid

12-column desktop proof grid collapsing to 6 columns on tablet and single-column stacked panels on mobile.

whitespace

Tight internal padding with larger editorial gutters; empty space acts as a neutral step between dense blocks.

guidance
do
  • Define primitives first, then map every semantic state to a named token with contrast notes.
  • Use one warm cinnabar accent sparingly against black, bone, graphite, and slate neutrals.
  • Provide light and dark variants that preserve contrast relationships rather than merely inverting colors.
  • Treat charts as safety-critical: use shape, labels, dash patterns, and limited colorblind-safe hues.
avoid
  • Do not use vague gradients, glow fields, aurora backgrounds, or automatic saturation harmonies.
  • Do not introduce unnamed colors in illustrations, hover states, charts, or one-off marketing blocks.
  • Do not rely on accent hue alone for selected, error, success, or warning states.
  • Do not soften the system with pillowed shadows, glassmorphism, or generic AI-polished rounded cards.
katagami spec
# Contrast Craft Proof

## Philosophy

A high-contrast palette system for production interfaces that treats accessibility, editorial restraint, and named token discipline as the visual identity rather than as cleanup after decoration.

### Values

- Contrast as composition
- Small primitive palette
- Named semantic intent
- Crafted accent restraint
- Light and dark parity

### Anti-Values

- AI-polished gradient haze
- Unnamed one-off colors
- Random saturation spikes
- Low-contrast decorative neutrals

### Visual Character

- CSS uses hard neutral steps with black-ink text, bone backgrounds, graphite surfaces, and 1px/2px borders instead of soft gradient atmospheres.
- Accent color appears as a narrow cinnabar enamel strip, small status chip, or chart mark capped by explicit max-width utility classes.
- Cards use squared 2px radii, offset rule shadows, and clipped corner notches to create manufactured craft rather than generic rounded SaaS polish.
- Light and dark modes share identical semantic slots with inverted neutral ramps and preserved AA/AAA contrast ratios for every text state.

## Tokens

### Borders

- **Accent Width**: 4px
- **Character**: black production rules for structure, cinnabar enamel rules only for selected active states
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#B6422A` |
| background | `#FAF8F1` |
| border | `#2A2926` |
| error | `#A72E24` |
| info | `#245C7A` |
| muted | `#6A665F` |
| primary | `#101010` |
| secondary | `#F2EFE8` |
| success | `#176C4A` |
| surface | `#E8E3D8` |
| text | `#101010` |
| warning | `#8A5A00` |

### Motion

- **Duration**: 120ms
- **Easing**: cubic-bezier(.2,0,.1,1)
- **Philosophy**: short mechanical state changes; no float, shimmer, parallax, or decorative easing

### Radii

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

### Shadows

- **Lg**: 10px 10px 0 #101010
- **Md**: 6px 6px 0 #101010
- **Sm**: 3px 3px 0 #101010

### Spacing

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

### Surfaces

- **Bg Pattern**: subtle 24px registration grid drawn with low-contrast neutral rules
- **Card Style**: bone or graphite blocks with 2px ink border, tiny clipped notch, and offset rule shadow
- **Treatment**: flat ink-and-paper surfaces with no blur, no glass, no gradients, and deliberate neutral temperature shifts

### Typography

- **Base Size**: 16px
- **Body Font**: IBM Plex Sans
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- **Heading Font**: Sora
- **Letter Spacing**: -0.015em
- **Line Height**: 1.5
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.22

## Rules

### Composition

Build screens as editorial proof sheets: strong black axes, asymmetric information panels, measured gutters, and one small crafted accent per view.

### Density

Medium-high product density with compact controls, generous section gutters, and highly legible 16px body text.

### Hierarchy

Use weight, scale, border thickness, and neutral inversion before hue; color never carries meaning without text, shape, or position.

### Signature Patterns

- Registration-grid backgrounds use repeating-linear-gradient neutral rules at 24px intervals with opacity below visible text contrast thresholds.
- Proof cards include a clipped top-right notch via clip-path plus an offset black shadow that reads as print production furniture.
- Accent governance uses a .cinnabar-cap utility that restricts accent fills to thin strips, badges, selected tabs, and chart strokes.
- Contrast badges pair mono token names with explicit AA or AAA labels so accessibility metadata becomes visible interface texture.

## Layout

### Breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

### Grid

12-column desktop proof grid collapsing to 6 columns on tablet and single-column stacked panels on mobile.

### Whitespace

Tight internal padding with larger editorial gutters; empty space acts as a neutral step between dense blocks.

## Guidance

### Do

- Define primitives first, then map every semantic state to a named token with contrast notes.
- Use one warm cinnabar accent sparingly against black, bone, graphite, and slate neutrals.
- Provide light and dark variants that preserve contrast relationships rather than merely inverting colors.
- Treat charts as safety-critical: use shape, labels, dash patterns, and limited colorblind-safe hues.

### Don't

- Do not use vague gradients, glow fields, aurora backgrounds, or automatic saturation harmonies.
- Do not introduce unnamed colors in illustrations, hover states, charts, or one-off marketing blocks.
- Do not rely on accent hue alone for selected, error, success, or warning states.
- Do not soften the system with pillowed shadows, glassmorphism, or generic AI-polished rounded cards.
DESIGN.md
---
version: "alpha"
name: "Contrast Craft Proof"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#B6422A"
  background: "#FAF8F1"
  border: "#2A2926"
  error: "#A72E24"
  info: "#245C7A"
  muted: "#6A665F"
  primary: "#101010"
  secondary: "#F2EFE8"
  success: "#176C4A"
  surface: "#E8E3D8"
  text: "#101010"
  warning: "#8A5A00"
typography:
  headline-lg:
    fontFamily: "Sora"
    fontSize: "1.816rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.015em"
  headline-md:
    fontFamily: "Sora"
    fontSize: "1.488rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.015em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.015em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "4px"
  md: "2px"
  none: "0px"
  sm: "2px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    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"
---

# Contrast Craft Proof

## Overview

A high-contrast palette system for production interfaces that treats accessibility, editorial restraint, and named token discipline as the visual identity rather than as cleanup after decoration.

### Values

- Contrast as composition
- Small primitive palette
- Named semantic intent
- Crafted accent restraint
- Light and dark parity

### Anti-Values

- AI-polished gradient haze
- Unnamed one-off colors
- Random saturation spikes
- Low-contrast decorative neutrals

### Visual Character

- CSS uses hard neutral steps with black-ink text, bone backgrounds, graphite surfaces, and 1px/2px borders instead of soft gradient atmospheres.
- Accent color appears as a narrow cinnabar enamel strip, small status chip, or chart mark capped by explicit max-width utility classes.
- Cards use squared 2px radii, offset rule shadows, and clipped corner notches to create manufactured craft rather than generic rounded SaaS polish.
- Light and dark modes share identical semantic slots with inverted neutral ramps and preserved AA/AAA contrast ratios for every text state.

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| accent | `#B6422A` |
| background | `#FAF8F1` |
| border | `#2A2926` |
| error | `#A72E24` |
| info | `#245C7A` |
| muted | `#6A665F` |
| primary | `#101010` |
| secondary | `#F2EFE8` |
| success | `#176C4A` |
| surface | `#E8E3D8` |
| text | `#101010` |
| warning | `#8A5A00` |

## Typography

- **Headline-Lg**: Sora, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Sora, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.5.
- **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`

### Breakpoints

mobile 375px, tablet 768px, desktop 1200px, wide 1440px

### Grid

12-column desktop proof grid collapsing to 6 columns on tablet and single-column stacked panels on mobile.

### Whitespace

Tight internal padding with larger editorial gutters; empty space acts as a neutral step between dense blocks.

## Elevation & Depth

### Shadows

- **Lg**: 10px 10px 0 #101010
- **Md**: 6px 6px 0 #101010
- **Sm**: 3px 3px 0 #101010

## Shapes

### Rounded

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

### Surfaces

- **Bg Pattern**: subtle 24px registration grid drawn with low-contrast neutral rules
- **Card Style**: bone or graphite blocks with 2px ink border, tiny clipped notch, and offset rule shadow
- **Treatment**: flat ink-and-paper surfaces with no blur, no glass, no gradients, and deliberate neutral temperature shifts

### Borders

- **Accent Width**: 4px
- **Character**: black production rules for structure, cinnabar enamel rules only for selected active states
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Build screens as editorial proof sheets: strong black axes, asymmetric information panels, measured gutters, and one small crafted accent per view.

### Density

Medium-high product density with compact controls, generous section gutters, and highly legible 16px body text.

### Hierarchy

Use weight, scale, border thickness, and neutral inversion before hue; color never carries meaning without text, shape, or position.

### Signature Patterns

- Registration-grid backgrounds use repeating-linear-gradient neutral rules at 24px intervals with opacity below visible text contrast thresholds.
- Proof cards include a clipped top-right notch via clip-path plus an offset black shadow that reads as print production furniture.
- Accent governance uses a .cinnabar-cap utility that restricts accent fills to thin strips, badges, selected tabs, and chart strokes.
- Contrast badges pair mono token names with explicit AA or AAA labels so accessibility metadata becomes visible interface texture.

## 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-019ea9b2-f7ec-7841-8335-35618e48e7c8/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 Define primitives first, then map every semantic state to a named token with contrast notes.
- Do Use one warm cinnabar accent sparingly against black, bone, graphite, and slate neutrals.
- Do Provide light and dark variants that preserve contrast relationships rather than merely inverting colors.
- Do Treat charts as safety-critical: use shape, labels, dash patterns, and limited colorblind-safe hues.
- Don't Do not use vague gradients, glow fields, aurora backgrounds, or automatic saturation harmonies.
- Don't Do not introduce unnamed colors in illustrations, hover states, charts, or one-off marketing blocks.
- Don't Do not rely on accent hue alone for selected, error, success, or warning states.
- Don't Do not soften the system with pillowed shadows, glassmorphism, or generic AI-polished rounded cards.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "contrast-craft-proof",
  "type": "registry:theme",
  "title": "Contrast Craft Proof shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FAF8F1",
      "foreground": "#101010",
      "card": "#E8E3D8",
      "card-foreground": "#101010",
      "popover": "#E8E3D8",
      "popover-foreground": "#101010",
      "primary": "#101010",
      "primary-foreground": "#ffffff",
      "secondary": "#F2EFE8",
      "secondary-foreground": "#111111",
      "muted": "#6A665F",
      "muted-foreground": "#101010",
      "accent": "#B6422A",
      "accent-foreground": "#ffffff",
      "destructive": "#A72E24",
      "border": "#2A2926",
      "input": "#2A2926",
      "ring": "#B6422A",
      "chart-1": "#101010",
      "chart-2": "#F2EFE8",
      "chart-3": "#B6422A",
      "chart-4": "#176C4A",
      "chart-5": "#8A5A00",
      "sidebar": "#E8E3D8",
      "sidebar-foreground": "#101010",
      "sidebar-primary": "#101010",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#245C7A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A2926",
      "sidebar-ring": "#B6422A",
      "radius": "2px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#101010",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B6422A",
      "accent-foreground": "#ffffff",
      "destructive": "#A72E24",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B6422A",
      "chart-1": "#101010",
      "chart-2": "#F2EFE8",
      "chart-3": "#B6422A",
      "chart-4": "#176C4A",
      "chart-5": "#8A5A00",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#101010",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B6422A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B6422A",
      "radius": "2px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9b2-f7ec-7841-8335-35618e48e7c8",
    "slug": "contrast-craft-proof",
    "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": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · contrast-craft-proof
DESIGN.md

at a glance

Palette

Typography

headline-lgSora · 29px · 700

The quick brown fox jumps

headline-mdSora · 24px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px

Shape

full9999px
lg4px
md2px
none0px
sm2px
shadcn/ui

implementation kit

needs agent-authored kitstored
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutedwarningerror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

DESIGN.md with shadcn

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.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #FAF8F1;
  --foreground: #101010;
  --card: #E8E3D8;
  --card-foreground: #101010;
  --popover: #E8E3D8;
  --popover-foreground: #101010;
  --primary: #101010;
  --primary-foreground: #ffffff;
  --secondary: #F2EFE8;
  --secondary-foreground: #111111;
  --muted: #6A665F;
  --muted-foreground: #101010;
  --accent: #B6422A;
  --accent-foreground: #ffffff;
  --destructive: #A72E24;
  --border: #2A2926;
  --input: #2A2926;
  --ring: #B6422A;
  --chart-1: #101010;
  --chart-2: #F2EFE8;
  --chart-3: #B6422A;
  --chart-4: #176C4A;
  --chart-5: #8A5A00;
  --sidebar: #E8E3D8;
  --sidebar-foreground: #101010;
  --sidebar-primary: #101010;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #245C7A;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #2A2926;
  --sidebar-ring: #B6422A;
  --radius: 2px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #101010;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #B6422A;
  --accent-foreground: #ffffff;
  --destructive: #A72E24;
  --border: #303642;
  --input: #303642;
  --ring: #B6422A;
  --chart-1: #101010;
  --chart-2: #F2EFE8;
  --chart-3: #B6422A;
  --chart-4: #176C4A;
  --chart-5: #8A5A00;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #101010;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #B6422A;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #B6422A;
  --radius: 2px;
}
tsx starter
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 ContrastCraftProofShadcnKit() {
  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">Contrast Craft Proof</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>
  );
}
theme JSONcompatibility fallback
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "contrast-craft-proof",
  "type": "registry:theme",
  "title": "Contrast Craft Proof shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FAF8F1",
      "foreground": "#101010",
      "card": "#E8E3D8",
      "card-foreground": "#101010",
      "popover": "#E8E3D8",
      "popover-foreground": "#101010",
      "primary": "#101010",
      "primary-foreground": "#ffffff",
      "secondary": "#F2EFE8",
      "secondary-foreground": "#111111",
      "muted": "#6A665F",
      "muted-foreground": "#101010",
      "accent": "#B6422A",
      "accent-foreground": "#ffffff",
      "destructive": "#A72E24",
      "border": "#2A2926",
      "input": "#2A2926",
      "ring": "#B6422A",
      "chart-1": "#101010",
      "chart-2": "#F2EFE8",
      "chart-3": "#B6422A",
      "chart-4": "#176C4A",
      "chart-5": "#8A5A00",
      "sidebar": "#E8E3D8",
      "sidebar-foreground": "#101010",
      "sidebar-primary": "#101010",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#245C7A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A2926",
      "sidebar-ring": "#B6422A",
      "radius": "2px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#101010",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B6422A",
      "accent-foreground": "#ffffff",
      "destructive": "#A72E24",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B6422A",
      "chart-1": "#101010",
      "chart-2": "#F2EFE8",
      "chart-3": "#B6422A",
      "chart-4": "#176C4A",
      "chart-5": "#8A5A00",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#101010",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B6422A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B6422A",
      "radius": "2px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9b2-f7ec-7841-8335-35618e48e7c8",
    "slug": "contrast-craft-proof",
    "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": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "info",
        "muted",
        "primary",
        "secondary",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
component recipesstored
# Contrast Craft Proof shadcn/ui Components
Author: `katagami-agent`

## Intent
Translate the palette system into shadcn/ui screens where high contrast, semantic token naming, and restricted cinnabar accent use are unmistakable.

## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, table.

## Token cues
Use bone backgrounds, paper surfaces, black ink text and borders, graphite dark surfaces, muted copy, and cinnabar only for active strips, focus rings, selected tabs, and chart marks.

## Visual character to preserve
Hard neutral steps; 1px and 2px ink rules; clipped proof-card notches; offset black rule shadows; mono token labels; visible AA/AAA contrast metadata.

## ShadSync visual profile
family: production-proof; material: ink-paper; contour: clipped-notch; border: solid-ink; underlay: registration-grid; grain: false; stickerBadges: false; motion: mechanical-120ms; density: compact-editorial; accents: cinnabar-capped.

## Signature component recipes
- button: primary uses ink fill and paper text with 3px cinnabar offset shadow; secondary is paper fill with ink border.
- card: 2px ink border, 2px radius, clipped top-right notch, 6px black offset shadow, no blur.
- input: white or dark surface, 2px ink border, mono label, cinnabar focus ring; never use pastel backgrounds.
- textarea: same as input with compact padding and visible contrast note helper text.
- select: square field with ink chevron, explicit mode label, focus ring in cinnabar.
- dialog: paper proof sheet with strong border, notch, black shadow, and one accent header rule.
- sheet: graphite or paper slab with registration-grid underlay and hard separator rules.
- tabs: selected tab gets a 4px cinnabar top or left rule; inactive tabs remain neutral.
- badge: mono token capsule with border-left accent only for active/verified states.
- separator: 1px ink rule for local division; 2px rule for section axes.
- checkbox: square 2px ink box; checked uses cinnabar fill plus checkmark, not color alone.
- switch: rectangular mechanical track, ink border, text label adjacent for state redundancy.
- slider: black track with cinnabar value cap and numeric mono output.
- tooltip: ink fill, paper text, no glass, max one sentence.
- dropdown-menu: paper list with ink border, selected item has left accent rule.
- table: dense token register with mono names, row rules, swatches, and contrast labels.

## Preview shots
application-shell, detail-editor, data-operations.

## Implementation contract
Import local primitives from `@/components/ui/*`. Do not invent another component system, do not add unnamed hex colors, and do not exceed the accent budget.

## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
import { Input } from "@/components/ui/input"
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"

export function ContrastCraftProofPanel() {
  return (
    <Card className="rounded-[2px] border-2 border-foreground bg-card shadow-[6px_6px_0_hsl(var(--foreground))]">
      <CardHeader className="border-b-2 border-foreground">
        <Badge className="rounded-[2px] border border-foreground border-l-4 border-l-primary font-mono">AAA verified</Badge>
        <CardTitle className="font-sora tracking-[-0.04em]">Semantic token proof</CardTitle>
      </CardHeader>
      <CardContent className="grid gap-3 pt-4">
        <Input aria-label="Token" defaultValue="color.intent.warning.fg" className="rounded-[2px] border-2" />
        <Tabs defaultValue="light"><TabsList><TabsTrigger value="light">Light</TabsTrigger><TabsTrigger value="dark">Dark</TabsTrigger></TabsList></Tabs>
        <Button>Run contrast lint</Button>
      </CardContent>
    </Card>
  )
}
```
preview shotsstored
{
  "artifact": "katagami:shadcn-preview-shots",
  "author": "katagami-agent",
  "componentRecipes": [
    {
      "component": "button",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "card",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "input",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "textarea",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "select",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "dialog",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "sheet",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "tabs",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "badge",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "separator",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "checkbox",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "switch",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "slider",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "tooltip",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "dropdown-menu",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    },
    {
      "component": "table",
      "recipe": "Use hard 2px/1px ink rules, 2px radius, semantic labels, and capped cinnabar accents where state requires emphasis."
    }
  ],
  "generatedBy": "katagami-agent",
  "renderable": true,
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "shots": [
    {
      "avoid": [
        "gradients",
        "unnamed colors",
        "soft shadows"
      ],
      "composition": "Two-column palette governance shell with rail navigation and proof cards.",
      "id": "application-shell",
      "mustShowStates": [
        "active tab with cinnabar rule",
        "AAA badge",
        "dense token table"
      ],
      "primitives": [
        "button",
        "card",
        "tabs",
        "badge",
        "separator",
        "table",
        "dropdown-menu",
        "tooltip"
      ],
      "scene": {
        "actions": [
          "Approve token set",
          "Run contrast lint"
        ],
        "description": "Review primitive ramps, semantic aliases, and contrast status before export.",
        "eyebrow": "Palette governance",
        "headline": "Contrast proof desk",
        "rows": [
          {
            "contrast": "AAA",
            "hex": "#FAF8F1",
            "token": "color.bg.default"
          },
          {
            "contrast": "AA large",
            "hex": "#B6422A",
            "token": "color.accent.cinnabar"
          }
        ],
        "stats": [
          {
            "label": "AAA pairs",
            "value": "18"
          },
          {
            "label": "Unnamed hex",
            "value": "0"
          },
          {
            "label": "Accent budget",
            "value": "7%"
          }
        ]
      }
    },
    {
      "avoid": [
        "color-only state",
        "pastel fills"
      ],
      "composition": "Token detail editor with contrast metadata, mode parity controls, and mechanical state toggles.",
      "id": "detail-editor",
      "mustShowStates": [
        "focus ring",
        "checked state with label",
        "slider numeric output"
      ],
      "primitives": [
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet",
        "button",
        "badge"
      ],
      "scene": {
        "actions": [
          "Save alias",
          "Open dark preview"
        ],
        "description": "Every alias requires usage notes, redundancy, and light/dark contrast parity.",
        "eyebrow": "Semantic alias",
        "fields": [
          {
            "label": "Token",
            "value": "color.intent.warning.fg"
          },
          {
            "label": "Usage",
            "value": "Amber rule plus icon and label"
          },
          {
            "label": "Mode",
            "value": "Light/dark paired"
          }
        ],
        "headline": "Edit warning foreground"
      }
    },
    {
      "avoid": [
        "rainbow charts",
        "hue-only legends"
      ],
      "composition": "Data-viz safety board with patterned bars, table rows, and explicit colorblind notes.",
      "id": "data-operations",
      "mustShowStates": [
        "patterned series",
        "selected row",
        "export menu"
      ],
      "primitives": [
        "table",
        "card",
        "badge",
        "separator",
        "button",
        "tooltip",
        "dropdown-menu",
        "tabs"
      ],
      "scene": {
        "actions": [
          "Export chart tokens",
          "Inspect failures"
        ],
        "description": "Series combine hue, dash pattern, labels, and ordering for accessible operations screens.",
        "eyebrow": "Chart tokens",
        "headline": "Safe series register",
        "rows": [
          {
            "hex": "#245C7A",
            "series": "info dash",
            "shape": "diagonal stripe"
          },
          {
            "hex": "#176C4A",
            "series": "success hatch",
            "shape": "vertical hatch"
          }
        ],
        "stats": [
          {
            "label": "Series",
            "value": "6"
          },
          {
            "label": "Patterned",
            "value": "4"
          },
          {
            "label": "Failures",
            "value": "0"
          }
        ]
      }
    }
  ],
  "version": "preview-shots-v1",
  "visualProfile": {
    "accents": "cinnabar-capped",
    "border": "solid-ink",
    "contour": "clipped-notch",
    "density": "compact-editorial",
    "family": "production-proof",
    "grain": false,
    "material": "ink-paper",
    "motion": "mechanical-120ms",
    "stickerBadges": false,
    "underlay": "registration-grid"
  }
}
related

More like this