back to gallery
design language·market-mirage-atelier

Market Mirage Atelier

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 WCAG-aware cultural editorial palette system that blends local market provenance, tender vintage warmth, sensory surrealism, and balanced-bold commercial contrast into legible product and publishing screens.
values
local provenance made visible through named pigment rolesexpressive color that remains readable in editorial UItender warmth balanced by confident commercial accentssurreal sensory atmosphere grounded in practical accessibility pairings
anti-values
×generic neon trend sampling without provenance×low-contrast mood boards that cannot become usable interfaces×token sets that rely on color alone to communicate state
tokens
borders4 items
accent width
3px
character
inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo
default width
1.5px
style
solid with occasional dashed separators
colors12 items
accent
#B85B2C
background
#F6E4C8
border
#8A6A4B
error
#8C1D2C
info
#243F73
muted
#6A5848
primary
#7F2A1D
secondary
#3F4E2A
success
#315C36
surface
#FFF7E8
text
#241812
warning
#9B5A12
motion3 items
duration
180ms
easing
cubic-bezier(.2,.8,.2,1)
philosophy
small tactile lifts and dye-swatch reveals; no essential information appears only through motion
radii5 items
full
9999px
lg
28px
md
14px
none
0
sm
6px
shadows3 items
lg
0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5)
md
0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18)
sm
0 2px 0 rgba(36,24,18,0.22)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
radial spice-bloom gradients plus repeating micro-dash market ledger lines
card style
rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
treatment
warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture
typography8 items
base size
16px
body font
Source Serif 4
google fonts url
https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,600..800,70,1&family=IBM+Plex+Mono:wght@500;600&family=Source+Serif+4:opsz,wght@8..60,400..700&display=swap
heading font
Fraunces
letter spacing
-0.015em
line height
1.58
mono font
IBM Plex Mono
scale ratio
1.25
rules
composition

Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid.

density

Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text.

hierarchy

Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps.

signature patterns
Dye-bloom underlays sit behind hero cards as radial gradients clipped by rounded rectangles, never behind dense paragraphs.Provenance tags use mono uppercase text, small pictogram marks, and bordered cream badges so origin metadata is legible without relying on color.Ticket-frame panels combine a 3px accent side rule, dashed internal separator, and offset warm shadow to evoke vintage market labels.State colors are paired with icons, labels, patterned fills, and visible borders to satisfy color-independent accessibility constraints.
layout
breakpoints

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

grid

Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile.

whitespace

Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards.

guidance
do
  • Use #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast.
  • Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons.
  • Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger.
avoid
  • Do not place muted brown body text on saturated orange or plum fields.
  • Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment.
  • Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
katagami spec
# Market Mirage Atelier

## Philosophy

A WCAG-aware cultural editorial palette system that blends local market provenance, tender vintage warmth, sensory surrealism, and balanced-bold commercial contrast into legible product and publishing screens.

### Values

- local provenance made visible through named pigment roles
- expressive color that remains readable in editorial UI
- tender warmth balanced by confident commercial accents
- surreal sensory atmosphere grounded in practical accessibility pairings

### Anti-Values

- generic neon trend sampling without provenance
- low-contrast mood boards that cannot become usable interfaces
- token sets that rely on color alone to communicate state

### Visual Character

- Layer warm parchment backgrounds with cream paper cards, subtle radial dye blooms, and fine grain overlays using CSS gradients and blend modes.
- Use high-contrast ink typography on all long-form editorial surfaces, reserving paprika, plum, and indigo pigments for framed accents and short labels.
- Build asymmetrical magazine grids with bordered provenance tags, offset image wells, and rounded ticket-like panels that remain structurally aligned.
- Pair every saturated color block with explicit iconography, labels, borders, or pattern marks so meaning never depends on hue alone.

## Tokens

### Borders

- **Accent Width**: 3px
- **Character**: inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo
- **Default Width**: 1.5px
- **Style**: solid with occasional dashed separators

### Colors

| Name | Value |
|------|-------|
| accent | `#B85B2C` |
| background | `#F6E4C8` |
| border | `#8A6A4B` |
| error | `#8C1D2C` |
| info | `#243F73` |
| muted | `#6A5848` |
| primary | `#7F2A1D` |
| secondary | `#3F4E2A` |
| success | `#315C36` |
| surface | `#FFF7E8` |
| text | `#241812` |
| warning | `#9B5A12` |

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(.2,.8,.2,1)
- **Philosophy**: small tactile lifts and dye-swatch reveals; no essential information appears only through motion

### Radii

- **Full**: 9999px
- **Lg**: 28px
- **Md**: 14px
- **None**: 0
- **Sm**: 6px

### Shadows

- **Lg**: 0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5)
- **Md**: 0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18)
- **Sm**: 0 2px 0 rgba(36,24,18,0.22)

### Spacing

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

### Surfaces

- **Bg Pattern**: radial spice-bloom gradients plus repeating micro-dash market ledger lines
- **Card Style**: rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
- **Treatment**: warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture

### Typography

- **Base Size**: 16px
- **Body Font**: Source Serif 4
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,600..800,70,1&family=IBM+Plex+Mono:wght@500;600&family=Source+Serif+4:opsz,wght@8..60,400..700&display=swap
- **Heading Font**: Fraunces
- **Letter Spacing**: -0.015em
- **Line Height**: 1.58
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.25

## Rules

### Composition

Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid.

### Density

Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text.

### Hierarchy

Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps.

### Signature Patterns

- Dye-bloom underlays sit behind hero cards as radial gradients clipped by rounded rectangles, never behind dense paragraphs.
- Provenance tags use mono uppercase text, small pictogram marks, and bordered cream badges so origin metadata is legible without relying on color.
- Ticket-frame panels combine a 3px accent side rule, dashed internal separator, and offset warm shadow to evoke vintage market labels.
- State colors are paired with icons, labels, patterned fills, and visible borders to satisfy color-independent accessibility constraints.

## Layout

### Breakpoints

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

### Grid

Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile.

### Whitespace

Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards.

## Guidance

### Do

- Use #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast.
- Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons.
- Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger.

### Don't

- Do not place muted brown body text on saturated orange or plum fields.
- Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment.
- Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
DESIGN.md
---
version: "alpha"
name: "Market Mirage Atelier"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#B85B2C"
  background: "#F6E4C8"
  border: "#8A6A4B"
  error: "#8C1D2C"
  info: "#243F73"
  muted: "#6A5848"
  primary: "#7F2A1D"
  secondary: "#3F4E2A"
  success: "#315C36"
  surface: "#FFF7E8"
  text: "#241812"
  warning: "#9B5A12"
typography:
  headline-lg:
    fontFamily: "Fraunces"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.015em"
  headline-md:
    fontFamily: "Fraunces"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.015em"
  body-md:
    fontFamily: "Source Serif 4"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.58
    letterSpacing: "-0.015em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "28px"
  md: "14px"
  none: "0px"
  sm: "6px"
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"
---

# Market Mirage Atelier

## Overview

A WCAG-aware cultural editorial palette system that blends local market provenance, tender vintage warmth, sensory surrealism, and balanced-bold commercial contrast into legible product and publishing screens.

### Values

- local provenance made visible through named pigment roles
- expressive color that remains readable in editorial UI
- tender warmth balanced by confident commercial accents
- surreal sensory atmosphere grounded in practical accessibility pairings

### Anti-Values

- generic neon trend sampling without provenance
- low-contrast mood boards that cannot become usable interfaces
- token sets that rely on color alone to communicate state

### Visual Character

- Layer warm parchment backgrounds with cream paper cards, subtle radial dye blooms, and fine grain overlays using CSS gradients and blend modes.
- Use high-contrast ink typography on all long-form editorial surfaces, reserving paprika, plum, and indigo pigments for framed accents and short labels.
- Build asymmetrical magazine grids with bordered provenance tags, offset image wells, and rounded ticket-like panels that remain structurally aligned.
- Pair every saturated color block with explicit iconography, labels, borders, or pattern marks so meaning never depends on hue alone.

## 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 | `#B85B2C` |
| background | `#F6E4C8` |
| border | `#8A6A4B` |
| error | `#8C1D2C` |
| info | `#243F73` |
| muted | `#6A5848` |
| primary | `#7F2A1D` |
| secondary | `#3F4E2A` |
| success | `#315C36` |
| surface | `#FFF7E8` |
| text | `#241812` |
| warning | `#9B5A12` |

## Typography

- **Headline-Lg**: Fraunces, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Source Serif 4, 16px, weight 400, line-height 1.58.
- **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 1180px, wide 1440px

### Grid

Responsive 12-column editorial grid on desktop, 6 columns on tablet, and single-column stacked cards on mobile.

### Whitespace

Use broad parchment margins around feature stories and tighter 12px-16px rhythm inside operational cards.

## Elevation & Depth

### Shadows

- **Lg**: 0 28px 80px rgba(80,43,22,0.24), inset 0 1px 0 rgba(255,255,255,0.5)
- **Md**: 0 14px 30px rgba(80,43,22,0.18), 0 3px 0 rgba(36,24,18,0.18)
- **Sm**: 0 2px 0 rgba(36,24,18,0.22)

## Shapes

### Rounded

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

### Surfaces

- **Bg Pattern**: radial spice-bloom gradients plus repeating micro-dash market ledger lines
- **Card Style**: rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
- **Treatment**: warm parchment base with cream cards, translucent paprika/plum dye halos, and 2 percent grain texture

### Borders

- **Accent Width**: 3px
- **Character**: inked editorial frames, market-ticket perforations, and high-contrast focus rings in info indigo
- **Default Width**: 1.5px
- **Style**: solid with occasional dashed separators

## Components

### Composition

Compose like a cultural magazine spread: wide feature panels, compact market-note cards, and asymmetrical sidebars aligned to a disciplined 12-column grid.

### Density

Balanced editorial density with generous reading gutters, compact chips, and data tables that preserve at least 16px body text.

### Hierarchy

Use Fraunces for expressive headlines, Source Serif 4 for readable editorial body copy, and IBM Plex Mono for provenance labels and data stamps.

### Signature Patterns

- Dye-bloom underlays sit behind hero cards as radial gradients clipped by rounded rectangles, never behind dense paragraphs.
- Provenance tags use mono uppercase text, small pictogram marks, and bordered cream badges so origin metadata is legible without relying on color.
- Ticket-frame panels combine a 3px accent side rule, dashed internal separator, and offset warm shadow to evoke vintage market labels.
- State colors are paired with icons, labels, patterned fills, and visible borders to satisfy color-independent accessibility constraints.

## 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-019ea9a4-d5cf-7de2-b14a-0320940808db/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 #241812 ink on #FFF7E8 or #F6E4C8 for long-form text to exceed WCAG AA and approach enhanced contrast.
- Do Reserve paprika, fig plum, olive, and indigo for emphasis, buttons, dividers, and short label fields with explicit text or icons.
- Do Name palette roles by sensory provenance such as paprika stamp, olive crate, fig dusk, parchment, and indigo ledger.
- Don't Do not place muted brown body text on saturated orange or plum fields.
- Don't Do not communicate error, success, warning, or info state by hue alone; include icon, label, and border treatment.
- Don't Do not flatten the system into beige minimalism; at least one surreal dye bloom and one ticket-frame structure should be visible.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "market-mirage-atelier",
  "type": "registry:theme",
  "title": "Market Mirage Atelier shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F6E4C8",
      "foreground": "#241812",
      "card": "#FFF7E8",
      "card-foreground": "#241812",
      "popover": "#FFF7E8",
      "popover-foreground": "#241812",
      "primary": "#7F2A1D",
      "primary-foreground": "#ffffff",
      "secondary": "#3F4E2A",
      "secondary-foreground": "#ffffff",
      "muted": "#6A5848",
      "muted-foreground": "#241812",
      "accent": "#B85B2C",
      "accent-foreground": "#ffffff",
      "destructive": "#8C1D2C",
      "border": "#8A6A4B",
      "input": "#8A6A4B",
      "ring": "#B85B2C",
      "chart-1": "#7F2A1D",
      "chart-2": "#3F4E2A",
      "chart-3": "#B85B2C",
      "chart-4": "#315C36",
      "chart-5": "#9B5A12",
      "sidebar": "#FFF7E8",
      "sidebar-foreground": "#241812",
      "sidebar-primary": "#7F2A1D",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#243F73",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#8A6A4B",
      "sidebar-ring": "#B85B2C",
      "radius": "14px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#7F2A1D",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B85B2C",
      "accent-foreground": "#ffffff",
      "destructive": "#8C1D2C",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B85B2C",
      "chart-1": "#7F2A1D",
      "chart-2": "#3F4E2A",
      "chart-3": "#B85B2C",
      "chart-4": "#315C36",
      "chart-5": "#9B5A12",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#7F2A1D",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B85B2C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B85B2C",
      "radius": "14px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a4-d5cf-7de2-b14a-0320940808db",
    "slug": "market-mirage-atelier",
    "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 · market-mirage-atelier
DESIGN.md

at a glance

Palette

Typography

headline-lgFraunces · 31px · 700

The quick brown fox jumps

headline-mdFraunces · 25px · 600

The quick brown fox jumps

body-mdSource Serif 4 · 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
lg28px
md14px
none0px
sm6px
shadcn/ui

implementation kit

agent-authored kitstored + verified
shadcn implementation kit
These scenes and recipes came from the Katagami review agent and can be copied as the shadcn implementation layer.
shadsync shotsstored + verifiedpaper-collage

Market Mirage Atelier

Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.

rounded ticket panels with ink borders, offset color underlays, and stamped provenance labels
2026 palette deskapplication-shell

Accessible cultural color stories

Coordinate market-inspired pigments into legible editorial systems.

buttoncardbadgeseparatortabstooltipdropdown-menutable
Market Mirage Atelier
shadcn layer
Overview
Components
Reviews
Exports
primaryaccentsurfacemutedwarningerror
Body pairs
7:1 target
Accent roles
12 tokens
Sources
6 forecasts
Component coverage
Filters, state, and row density rendered with the generated theme.
SurfaceStateStatus
Primary flowSafeSafe
Token coverageLarge textLarge text
Responsive proofIcon + labelIcon + label
Must show
Avoid
generic beige dashboard
color-only status chips
Role editordetail-editor

Paprika stamp usage rule

Tune saturation, surface pairing, and non-color cues before publishing.

cardinputtextareaselectcheckboxswitchsliderdialog
Recipe details
Labels, validation, written guidance, and controls stay visible.
Density68
FocusInvalidConfirmed
Context sheet
Generated with the language job
sheet
Role name
Paprika stamp CTA
Allowed foreground
Cream text / icon required
Provenance note
Market spice label, not alert red
Must show
Avoid
low contrast placeholder text
unlabeled icon-only controls
Governance ledgerdata-operations

Palette release checks

Audit provenance, contrast, and semantic cue coverage across editorial modules.

tablesheetbadgeseparatorbuttontooltipcheckboxdropdown-menu
Palette release checks
Audit provenance, contrast, and semantic cue coverage across editorial modules.
okwatchdone
CheckFindingStatus
Button hierarchyapprovedok
Table rhythmneeds passwatch
Empty statedesigneddone
Responsive table, menu, tooltip, and badge proof.
Must show
Avoid
spreadsheet monotony
states conveyed by red or green alone
recommendedagent kit included

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: #F6E4C8;
  --foreground: #241812;
  --card: #FFF7E8;
  --card-foreground: #241812;
  --popover: #FFF7E8;
  --popover-foreground: #241812;
  --primary: #7F2A1D;
  --primary-foreground: #ffffff;
  --secondary: #3F4E2A;
  --secondary-foreground: #ffffff;
  --muted: #6A5848;
  --muted-foreground: #241812;
  --accent: #B85B2C;
  --accent-foreground: #ffffff;
  --destructive: #8C1D2C;
  --border: #8A6A4B;
  --input: #8A6A4B;
  --ring: #B85B2C;
  --chart-1: #7F2A1D;
  --chart-2: #3F4E2A;
  --chart-3: #B85B2C;
  --chart-4: #315C36;
  --chart-5: #9B5A12;
  --sidebar: #FFF7E8;
  --sidebar-foreground: #241812;
  --sidebar-primary: #7F2A1D;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #243F73;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #8A6A4B;
  --sidebar-ring: #B85B2C;
  --radius: 14px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #7F2A1D;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #B85B2C;
  --accent-foreground: #ffffff;
  --destructive: #8C1D2C;
  --border: #303642;
  --input: #303642;
  --ring: #B85B2C;
  --chart-1: #7F2A1D;
  --chart-2: #3F4E2A;
  --chart-3: #B85B2C;
  --chart-4: #315C36;
  --chart-5: #9B5A12;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #7F2A1D;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #B85B2C;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #B85B2C;
  --radius: 14px;
}
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 MarketMirageAtelierShadcnKit() {
  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">Market Mirage Atelier</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": "market-mirage-atelier",
  "type": "registry:theme",
  "title": "Market Mirage Atelier shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F6E4C8",
      "foreground": "#241812",
      "card": "#FFF7E8",
      "card-foreground": "#241812",
      "popover": "#FFF7E8",
      "popover-foreground": "#241812",
      "primary": "#7F2A1D",
      "primary-foreground": "#ffffff",
      "secondary": "#3F4E2A",
      "secondary-foreground": "#ffffff",
      "muted": "#6A5848",
      "muted-foreground": "#241812",
      "accent": "#B85B2C",
      "accent-foreground": "#ffffff",
      "destructive": "#8C1D2C",
      "border": "#8A6A4B",
      "input": "#8A6A4B",
      "ring": "#B85B2C",
      "chart-1": "#7F2A1D",
      "chart-2": "#3F4E2A",
      "chart-3": "#B85B2C",
      "chart-4": "#315C36",
      "chart-5": "#9B5A12",
      "sidebar": "#FFF7E8",
      "sidebar-foreground": "#241812",
      "sidebar-primary": "#7F2A1D",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#243F73",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#8A6A4B",
      "sidebar-ring": "#B85B2C",
      "radius": "14px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#7F2A1D",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B85B2C",
      "accent-foreground": "#ffffff",
      "destructive": "#8C1D2C",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B85B2C",
      "chart-1": "#7F2A1D",
      "chart-2": "#3F4E2A",
      "chart-3": "#B85B2C",
      "chart-4": "#315C36",
      "chart-5": "#9B5A12",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#7F2A1D",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B85B2C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B85B2C",
      "radius": "14px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a4-d5cf-7de2-b14a-0320940808db",
    "slug": "market-mirage-atelier",
    "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 + verified
# Market Mirage Atelier shadcn/ui Components
Author: `katagami-agent`

## Intent
Translate the Market Mirage Atelier palette into accessible editorial product screens: parchment reading surfaces, ticket-frame cards, mono provenance tags, paprika/olive/indigo accents, and explicit state labels.

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

## Token cues
Use background #F6E4C8, surface #FFF7E8, text #241812, primary paprika #7F2A1D, secondary olive #3F4E2A, accent clay #B85B2C, info indigo #243F73, and border #8A6A4B. Long text belongs on cream or parchment with ink foreground.

## Visual character to preserve
Warm parchment fields, subtle dye blooms, ticket frames with offset shadows, mono provenance badges, and color-independent status affordances.

## ShadSync visual profile
family: cultural-editorial; material: parchment-paper; contour: rounded-ticket; border: ink-solid-plus-dashed; underlay: true; grain: true; stickerBadges: true; motion: tactile-lift; density: balanced-editorial; accents: paprika, olive, clay, indigo.

## Signature component recipes
- button: Use rounded-full, 2px ink border, 3px drop shadow. Primary uses paprika background with cream text; secondary uses cream with ink text. Include icon or action verb.
- card: Use cream background, 1.5px border, 22px-28px radius, offset clay or indigo underlay for feature cards.
- input: Cream field, ink text, border #8A6A4B, focus-visible indigo ring; labels are uppercase IBM Plex Mono.
- textarea: Same as input; use parchment inset for editorial notes and never place muted text on clay.
- select: Same as input with visible chevron and label; include helper copy for palette constraints.
- dialog: Cream ticket panel over parchment scrim with paprika side rule and explicit close button.
- sheet: Use ledger-like side panel with dashed separators and provenance tags.
- tabs: Cream tabs with active indigo fill and text label, not color-only active indication.
- badge: Mono uppercase pill with icon/pictogram, ink border, and role text.
- separator: Dashed #8A6A4B for internal provenance breaks; solid for major editorial frames.
- checkbox: Ink border, indigo focus ring, check icon plus adjacent explicit label.
- switch: Olive on-state with text label and visible knob; do not rely on green alone.
- slider: Ink rail, paprika active range, numeric value label, and tick marks.
- tooltip: Indigo or ink panel with cream text and short explanatory copy.
- dropdown-menu: Cream menu with border, shadow, mono section labels, and clear focus states.
- table: Editorial ledger rows, dashed dividers, readable 16px minimum type, status cells include icon and word.

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

## Implementation contract
Import local primitives from `@/components/ui/*`. Preserve contrast pairings and pair hue with icons, labels, borders, or pattern marks. Do not invent another component system.

## 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 { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"

export function MarketMiragePanel() {
  return (
    <Card className="rounded-[28px] border-2 border-[#8A6A4B] bg-[#FFF7E8] text-[#241812] shadow-[0_14px_30px_rgba(80,43,22,.18),0_3px_0_rgba(36,24,18,.18)]">
      <CardHeader className="border-b border-dashed border-[#8A6A4B]">
        <Badge className="w-fit rounded-full border border-[#8A6A4B] bg-[#F6E4C8] font-mono uppercase text-[#241812]">✦ Provenance safe</Badge>
        <CardTitle className="font-serif text-4xl tracking-tight">Palette contrast matrix</CardTitle>
      </CardHeader>
      <CardContent className="space-y-4 p-6">
        <Input aria-label="Story region" defaultValue="coastal produce archive" className="rounded-[14px] border-[#8A6A4B] bg-[#FFF7E8] focus-visible:ring-[#243F73]" />
        <Button className="rounded-full border-2 border-[#241812] bg-[#7F2A1D] text-[#FFF7E8] shadow-[0_3px_0_#241812]">◆ Apply AA pairings</Button>
        <Table><TableHeader><TableRow><TableHead>Role</TableHead><TableHead>Pairing</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>Body</TableCell><TableCell>Ink on cream</TableCell></TableRow></TableBody></Table>
      </CardContent>
    </Card>
  )
}
```
preview shotsstored + verified
{
  "artifact": "katagami:shadcn-preview-shots",
  "author": "katagami-agent",
  "componentRecipes": [
    "button",
    "card",
    "input",
    "textarea",
    "select",
    "dialog",
    "sheet",
    "tabs",
    "badge",
    "separator",
    "checkbox",
    "switch",
    "slider",
    "tooltip",
    "dropdown-menu",
    "table"
  ],
  "generatedBy": "katagami-agent",
  "renderable": true,
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "shots": [
    {
      "avoid": [
        "generic beige dashboard",
        "color-only status chips"
      ],
      "composition": "Magazine-like palette command center with hero contrast summary, provenance side rail, and ledger table.",
      "id": "application-shell",
      "mustShowStates": [
        "active tab has indigo fill plus underline label",
        "warning row uses icon and text label",
        "primary CTA uses paprika with cream text"
      ],
      "primitives": [
        "button",
        "card",
        "badge",
        "separator",
        "tabs",
        "tooltip",
        "dropdown-menu",
        "table"
      ],
      "scene": {
        "actions": [
          "Apply AA pairings",
          "Open provenance map"
        ],
        "description": "Coordinate market-inspired pigments into legible editorial systems.",
        "eyebrow": "2026 palette desk",
        "headline": "Accessible cultural color stories",
        "rows": [
          {
            "background": "Cream",
            "foreground": "Ink",
            "role": "Feature essay",
            "state": "Safe"
          },
          {
            "background": "Paprika",
            "foreground": "Cream",
            "role": "CTA",
            "state": "Large text"
          },
          {
            "background": "Indigo",
            "foreground": "Cream",
            "role": "Info note",
            "state": "Icon + label"
          }
        ],
        "stats": [
          {
            "label": "Body pairs",
            "value": "7:1 target"
          },
          {
            "label": "Accent roles",
            "value": "12 tokens"
          },
          {
            "label": "Sources",
            "value": "6 forecasts"
          }
        ]
      }
    },
    {
      "avoid": [
        "low contrast placeholder text",
        "unlabeled icon-only controls"
      ],
      "composition": "Palette role editor with ticket-frame form, explicit contrast warnings, and sensory provenance fields.",
      "id": "detail-editor",
      "mustShowStates": [
        "focus ring in indigo",
        "checkbox has visible check and label",
        "switch includes on/off text"
      ],
      "primitives": [
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "button",
        "badge"
      ],
      "scene": {
        "actions": [
          "Save role",
          "Preview story"
        ],
        "description": "Tune saturation, surface pairing, and non-color cues before publishing.",
        "eyebrow": "Role editor",
        "fields": [
          {
            "label": "Role name",
            "value": "Paprika stamp CTA"
          },
          {
            "label": "Allowed foreground",
            "value": "Cream text / icon required"
          },
          {
            "label": "Provenance note",
            "value": "Market spice label, not alert red"
          }
        ],
        "headline": "Paprika stamp usage rule",
        "stats": [
          {
            "label": "Contrast",
            "value": "AA large"
          },
          {
            "label": "Cue count",
            "value": "3"
          }
        ]
      }
    },
    {
      "avoid": [
        "spreadsheet monotony",
        "states conveyed by red or green alone"
      ],
      "composition": "Operations review table for palette governance with sheet details and accessible state treatments.",
      "id": "data-operations",
      "mustShowStates": [
        "selected rows show checkbox plus tinted border",
        "error includes label and icon",
        "dropdown focus is visibly outlined"
      ],
      "primitives": [
        "table",
        "sheet",
        "badge",
        "separator",
        "button",
        "tooltip",
        "checkbox",
        "dropdown-menu"
      ],
      "scene": {
        "actions": [
          "Approve release",
          "Export tokens"
        ],
        "description": "Audit provenance, contrast, and semantic cue coverage across editorial modules.",
        "eyebrow": "Governance ledger",
        "headline": "Palette release checks",
        "rows": [
          {
            "contrast": "Pass",
            "cue": "text + border",
            "module": "Hero essay"
          },
          {
            "contrast": "Review",
            "cue": "icon + label",
            "module": "Warning note"
          },
          {
            "contrast": "Pass",
            "cue": "pattern + word",
            "module": "Data badge"
          }
        ],
        "stats": [
          {
            "label": "Modules",
            "value": "18"
          },
          {
            "label": "Needs review",
            "value": "2"
          }
        ]
      }
    }
  ],
  "version": "preview-shots-v1",
  "visualProfile": {
    "accents": [
      "paprika #7F2A1D",
      "olive #3F4E2A",
      "clay #B85B2C",
      "indigo #243F73"
    ],
    "border": "solid-ink-frames-with-dashed-ledger-separators",
    "contour": "rounded-ticket-panels",
    "density": "balanced-editorial",
    "family": "cultural-editorial-palette-system",
    "grain": true,
    "material": "parchment-paper-and-ink",
    "motion": "tactile-lift-and-dye-swatch-reveal",
    "stickerBadges": true,
    "underlay": true
  }
}
related

More like this