Calibrated Signal Base
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.
specification
philosophy
tokens
borders4 items
- accent width
- 3px
- character
- Quiet warm-gray dividers carry layout; accent borders appear only for active, focus, or editorial callout states.
- default width
- 1px
- style
- solid with occasional dotted data-viz pattern strokes
colors12 items
motion3 items
- duration
- 140ms
- easing
- cubic-bezier(0.2, 0, 0.1, 1)
- philosophy
- Motion confirms state changes with short fades and rail slides; color should not pulse or animate into spectacle.
radii5 items
- full
- 9999px
- lg
- 18px
- md
- 10px
- none
- 0
- sm
- 4px
semantic_accents4 items
- brand citrus
- cap 5% of any viewport·dark #A7E51D·light #B9F227·on #17191D
- editorial coral
- cap editorial-only alias; not for system errors·dark #FF7D85·light #FF5C67·on #23070A
- highlight violet
- cap 2 highlighted objects per screen·dark #A98BFF·light #7D4DFF·on #FFFFFF
- interactive cyan
- cap primary actions and focus only·dark #35CBE6·light #00A7C7·on #07191D
shadows3 items
- lg
- 0 24px 70px rgba(38, 42, 49, 0.18)
- md
- 0 12px 30px rgba(38, 42, 49, 0.12)
- sm
- 0 1px 2px rgba(23, 25, 29, 0.08)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Subtle OKLCH calibration grid: repeating linear hairlines at low opacity, never decorative enough to compete with data.
- card style
- Rectangular cards with 10-18px radius, 1px warm-gray border, small semantic accent tab only when needed.
- treatment
- Warm stone canvas with ink graphite text, raised ivory cards, cool midtone section bands, and sparse chroma rails.
typography8 items
- base size
- 16px
- body font
- Source Serif 4
- google fonts url
- https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- heading font
- Instrument Sans
- letter spacing
- -0.015em
- line height
- 1.52
- mono font
- IBM Plex Mono
- scale ratio
- 1.22
rules
Start with a calm neutral operating surface, then place color in auditable slots: a single accent rail, one active control family, limited chart series, and tiny editorial chips. The screen should read as a palette governance tool, not a loud mood board.
Medium density with compact token rows and generous section gutters; color documentation can be data-rich but must keep accents spatially rare.
Use graphite headings, serif explanatory copy, mono token labels, and warm-gray borders for baseline hierarchy. High-chroma color may raise priority only when paired with labels, on-color text, and a stated usage cap.
layout
mobile <= 640px, tablet 641px-980px, desktop >= 981px
Dense where token metadata is scanned, spacious where accent decisions are demonstrated.
Desktop uses a 12-column token-lab grid with a 4-column governance panel and 8-column preview workspace; tablet becomes 6 columns; mobile is a single audit stack.
Use 32-64px section gutters around dense token matrices and 8-16px row gaps inside cards so documentation feels engineered, not cramped.
guidance
- Name every accent by role: brand, interactive, highlight, editorial-only, data series, or state before using it in a component.
- Pair accent backgrounds with on-accent text tokens and keep AA contrast for text-bearing surfaces in both light and dark modes.
- Use neutral and midtone ramps for most components, reserving acidic citrus, electric violet, signal cyan, and hot coral for bounded moments.
- Provide redundant chart encodings through labels, shapes, patterns, and ordering instead of hue-only distinctions.
- Document OKLCH light/dark shifts so accents retain hue identity without becoming glare in dark mode.
- Do not make every button, card, row, and chart segment saturated; loudness must be capped and intentional.
- Do not use hot coral as an error token or electric violet as a default link color without semantic justification.
- Do not ship accent swatches without on-accent text, contrast target, usage cap, and dark-mode counterpart.
- Do not rely on gradients as a substitute for semantic token structure or data-viz accessibility.
katagami spec
# Calibrated Signal Base
## Philosophy
Calibrated Signal Base is a production-ready palette language for modern editorial products: quiet neutral and midtone foundations hold the interface steady while acidic citrus, electric violet, signal cyan, and hot coral are reserved for named semantic moments with explicit contrast pairings and usage caps.
### Values
- Build a trustworthy neutral foundation first, then let two or three high-chroma accents behave like editorial punctuation rather than decoration.
- Treat color as infrastructure: every primitive, semantic role, data series, state, and on-color text token must be named before it appears in UI.
- Preserve hue identity across light and dark modes by shifting OKLCH lightness and chroma intentionally instead of inverting or washing out accents.
- Balance warm stone neutrals with cool graphite and slate midtones so the system works for enterprise screens, creative tools, and data-heavy editorial surfaces.
- Make accessibility visible in the system through contrast-safe pairings, capped accent areas, redundant chart encoding, and clear focus states.
### Anti-Values
- No rainbow component slop, no saturated accents on every card, and no decorative gradients that obscure state or hierarchy.
- No unpaired accent usage: brand, interactive, highlight, editorial-only, and chart colors must each have on-color text guidance and area limits.
- No brittle light-only palette; every hue must retain its identity in dark mode with tested contrast and adjusted chroma.
### Visual Character
- Use layered neutral CSS variables for canvas, raised surface, panel, and graphite text, with hairline borders and midtone header bands forming the visible base of the interface.
- Apply high-chroma accents only through small bounded CSS selectors such as .accent-rail, .status-dot, .focus-ring, .metric-spark, and .editorial-chip with max-width or max-area constraints.
- Render color token tables as production artifacts: swatches include role names, OKLCH notes, on-token labels, WCAG target text, and usage cap badges instead of decorative color blocks.
- Create light and dark preview columns that preserve accent hue identity by changing lightness and chroma while keeping identical semantic aliases in both columns.
- Use data-viz strips with redundant labels, patterns, and neutral gridlines so signal cyan, electric violet, citrus, and coral never carry meaning by hue alone.
## Tokens
### Borders
- **Accent Width**: 3px
- **Character**: Quiet warm-gray dividers carry layout; accent borders appear only for active, focus, or editorial callout states.
- **Default Width**: 1px
- **Style**: solid with occasional dotted data-viz pattern strokes
### Colors
| Name | Value |
|------|-------|
| accent | `#B9F227` |
| background | `#F4F1EA` |
| border | `#D8D1C4` |
| error | `#C7433E` |
| info | `#007C9C` |
| muted | `#8B8579` |
| primary | `#262A31` |
| secondary | `#766F63` |
| success | `#537A34` |
| surface | `#FFFCF4` |
| text | `#17191D` |
| warning | `#A66A00` |
### Motion
- **Duration**: 140ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Philosophy**: Motion confirms state changes with short fades and rail slides; color should not pulse or animate into spectacle.
### Radii
- **Full**: 9999px
- **Lg**: 18px
- **Md**: 10px
- **None**: 0
- **Sm**: 4px
### Semantic Accents
- **Brand Citrus**: {"cap":"5% of any viewport","dark":"#A7E51D","light":"#B9F227","on":"#17191D"}
- **Editorial Coral**: {"cap":"editorial-only alias; not for system errors","dark":"#FF7D85","light":"#FF5C67","on":"#23070A"}
- **Highlight Violet**: {"cap":"2 highlighted objects per screen","dark":"#A98BFF","light":"#7D4DFF","on":"#FFFFFF"}
- **Interactive Cyan**: {"cap":"primary actions and focus only","dark":"#35CBE6","light":"#00A7C7","on":"#07191D"}
### Shadows
- **Lg**: 0 24px 70px rgba(38, 42, 49, 0.18)
- **Md**: 0 12px 30px rgba(38, 42, 49, 0.12)
- **Sm**: 0 1px 2px rgba(23, 25, 29, 0.08)
### Spacing
- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64]
### Surfaces
- **Bg Pattern**: Subtle OKLCH calibration grid: repeating linear hairlines at low opacity, never decorative enough to compete with data.
- **Card Style**: Rectangular cards with 10-18px radius, 1px warm-gray border, small semantic accent tab only when needed.
- **Treatment**: Warm stone canvas with ink graphite text, raised ivory cards, cool midtone section bands, and sparse chroma rails.
### Typography
- **Base Size**: 16px
- **Body Font**: Source Serif 4
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- **Heading Font**: Instrument Sans
- **Letter Spacing**: -0.015em
- **Line Height**: 1.52
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.22
## Rules
### Composition
Start with a calm neutral operating surface, then place color in auditable slots: a single accent rail, one active control family, limited chart series, and tiny editorial chips. The screen should read as a palette governance tool, not a loud mood board.
### Density
Medium density with compact token rows and generous section gutters; color documentation can be data-rich but must keep accents spatially rare.
### Hierarchy
Use graphite headings, serif explanatory copy, mono token labels, and warm-gray borders for baseline hierarchy. High-chroma color may raise priority only when paired with labels, on-color text, and a stated usage cap.
### Signature Patterns
- Accent governor rails: 3px vertical or top-edge color bars paired with cap labels such as max 5%, never full-card color fills except tiny chips.
- Dual-mode token cards: side-by-side light and dark swatches sharing the same semantic alias, with OKLCH adjustment notes and contrast labels printed in mono text.
- Color-safe chart lanes: neutral gridlines, patterned series fills, direct labels, and small signal color points so chart meaning survives colorblind review.
- Editorial quarantine chips: coral and violet badges marked editorial-only or highlight-only, visually separated from interactive and system-status tokens.
## Layout
### Breakpoints
mobile <= 640px, tablet 641px-980px, desktop >= 981px
### Density
Dense where token metadata is scanned, spacious where accent decisions are demonstrated.
### Grid
Desktop uses a 12-column token-lab grid with a 4-column governance panel and 8-column preview workspace; tablet becomes 6 columns; mobile is a single audit stack.
### Whitespace
Use 32-64px section gutters around dense token matrices and 8-16px row gaps inside cards so documentation feels engineered, not cramped.
## Guidance
### Do
- Name every accent by role: brand, interactive, highlight, editorial-only, data series, or state before using it in a component.
- Pair accent backgrounds with on-accent text tokens and keep AA contrast for text-bearing surfaces in both light and dark modes.
- Use neutral and midtone ramps for most components, reserving acidic citrus, electric violet, signal cyan, and hot coral for bounded moments.
- Provide redundant chart encodings through labels, shapes, patterns, and ordering instead of hue-only distinctions.
- Document OKLCH light/dark shifts so accents retain hue identity without becoming glare in dark mode.
### Don't
- Do not make every button, card, row, and chart segment saturated; loudness must be capped and intentional.
- Do not use hot coral as an error token or electric violet as a default link color without semantic justification.
- Do not ship accent swatches without on-accent text, contrast target, usage cap, and dark-mode counterpart.
- Do not rely on gradients as a substitute for semantic token structure or data-viz accessibility.
### Accessibility
Target WCAG 2.2 AA for text by default, AAA for key neutral text where possible, visible cyan focus rings with a dark outline fallback, and non-color cues for charts and status.
### Usage Context
Best for creative operating systems, editorial publishing tools, enterprise design systems, palette governance dashboards, and modern data products that need controlled statement color.
DESIGN.md
---
version: "alpha"
name: "Calibrated Signal Base"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#B9F227"
background: "#F4F1EA"
border: "#D8D1C4"
error: "#C7433E"
info: "#007C9C"
muted: "#8B8579"
primary: "#262A31"
secondary: "#766F63"
success: "#537A34"
surface: "#FFFCF4"
text: "#17191D"
warning: "#A66A00"
typography:
headline-lg:
fontFamily: "Instrument Sans"
fontSize: "1.816rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.015em"
headline-md:
fontFamily: "Instrument Sans"
fontSize: "1.488rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.015em"
body-md:
fontFamily: "Source Serif 4"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.52
letterSpacing: "-0.015em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "18px"
md: "10px"
none: "0px"
sm: "4px"
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"
---
# Calibrated Signal Base
## Overview
Calibrated Signal Base is a production-ready palette language for modern editorial products: quiet neutral and midtone foundations hold the interface steady while acidic citrus, electric violet, signal cyan, and hot coral are reserved for named semantic moments with explicit contrast pairings and usage caps.
### Values
- Build a trustworthy neutral foundation first, then let two or three high-chroma accents behave like editorial punctuation rather than decoration.
- Treat color as infrastructure: every primitive, semantic role, data series, state, and on-color text token must be named before it appears in UI.
- Preserve hue identity across light and dark modes by shifting OKLCH lightness and chroma intentionally instead of inverting or washing out accents.
- Balance warm stone neutrals with cool graphite and slate midtones so the system works for enterprise screens, creative tools, and data-heavy editorial surfaces.
- Make accessibility visible in the system through contrast-safe pairings, capped accent areas, redundant chart encoding, and clear focus states.
### Anti-Values
- No rainbow component slop, no saturated accents on every card, and no decorative gradients that obscure state or hierarchy.
- No unpaired accent usage: brand, interactive, highlight, editorial-only, and chart colors must each have on-color text guidance and area limits.
- No brittle light-only palette; every hue must retain its identity in dark mode with tested contrast and adjusted chroma.
### Visual Character
- Use layered neutral CSS variables for canvas, raised surface, panel, and graphite text, with hairline borders and midtone header bands forming the visible base of the interface.
- Apply high-chroma accents only through small bounded CSS selectors such as .accent-rail, .status-dot, .focus-ring, .metric-spark, and .editorial-chip with max-width or max-area constraints.
- Render color token tables as production artifacts: swatches include role names, OKLCH notes, on-token labels, WCAG target text, and usage cap badges instead of decorative color blocks.
- Create light and dark preview columns that preserve accent hue identity by changing lightness and chroma while keeping identical semantic aliases in both columns.
- Use data-viz strips with redundant labels, patterns, and neutral gridlines so signal cyan, electric violet, citrus, and coral never carry meaning by 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 | `#B9F227` |
| background | `#F4F1EA` |
| border | `#D8D1C4` |
| error | `#C7433E` |
| info | `#007C9C` |
| muted | `#8B8579` |
| primary | `#262A31` |
| secondary | `#766F63` |
| success | `#537A34` |
| surface | `#FFFCF4` |
| text | `#17191D` |
| warning | `#A66A00` |
## Typography
- **Headline-Lg**: Instrument Sans, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Instrument Sans, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Source Serif 4, 16px, weight 400, line-height 1.52.
- **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 <= 640px, tablet 641px-980px, desktop >= 981px
### Density
Dense where token metadata is scanned, spacious where accent decisions are demonstrated.
### Grid
Desktop uses a 12-column token-lab grid with a 4-column governance panel and 8-column preview workspace; tablet becomes 6 columns; mobile is a single audit stack.
### Whitespace
Use 32-64px section gutters around dense token matrices and 8-16px row gaps inside cards so documentation feels engineered, not cramped.
## Elevation & Depth
### Shadows
- **Lg**: 0 24px 70px rgba(38, 42, 49, 0.18)
- **Md**: 0 12px 30px rgba(38, 42, 49, 0.12)
- **Sm**: 0 1px 2px rgba(23, 25, 29, 0.08)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `18px`
- **Md**: `10px`
- **None**: `0px`
- **Sm**: `4px`
### Surfaces
- **Bg Pattern**: Subtle OKLCH calibration grid: repeating linear hairlines at low opacity, never decorative enough to compete with data.
- **Card Style**: Rectangular cards with 10-18px radius, 1px warm-gray border, small semantic accent tab only when needed.
- **Treatment**: Warm stone canvas with ink graphite text, raised ivory cards, cool midtone section bands, and sparse chroma rails.
### Borders
- **Accent Width**: 3px
- **Character**: Quiet warm-gray dividers carry layout; accent borders appear only for active, focus, or editorial callout states.
- **Default Width**: 1px
- **Style**: solid with occasional dotted data-viz pattern strokes
## Components
### Composition
Start with a calm neutral operating surface, then place color in auditable slots: a single accent rail, one active control family, limited chart series, and tiny editorial chips. The screen should read as a palette governance tool, not a loud mood board.
### Density
Medium density with compact token rows and generous section gutters; color documentation can be data-rich but must keep accents spatially rare.
### Hierarchy
Use graphite headings, serif explanatory copy, mono token labels, and warm-gray borders for baseline hierarchy. High-chroma color may raise priority only when paired with labels, on-color text, and a stated usage cap.
### Signature Patterns
- Accent governor rails: 3px vertical or top-edge color bars paired with cap labels such as max 5%, never full-card color fills except tiny chips.
- Dual-mode token cards: side-by-side light and dark swatches sharing the same semantic alias, with OKLCH adjustment notes and contrast labels printed in mono text.
- Color-safe chart lanes: neutral gridlines, patterned series fills, direct labels, and small signal color points so chart meaning survives colorblind review.
- Editorial quarantine chips: coral and violet badges marked editorial-only or highlight-only, visually separated from interactive and system-status tokens.
## 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-019ea9b1-666f-7452-9f72-49b99ff90788/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 Name every accent by role: brand, interactive, highlight, editorial-only, data series, or state before using it in a component.
- Do Pair accent backgrounds with on-accent text tokens and keep AA contrast for text-bearing surfaces in both light and dark modes.
- Do Use neutral and midtone ramps for most components, reserving acidic citrus, electric violet, signal cyan, and hot coral for bounded moments.
- Do Provide redundant chart encodings through labels, shapes, patterns, and ordering instead of hue-only distinctions.
- Do Document OKLCH light/dark shifts so accents retain hue identity without becoming glare in dark mode.
- Don't Do not make every button, card, row, and chart segment saturated; loudness must be capped and intentional.
- Don't Do not use hot coral as an error token or electric violet as a default link color without semantic justification.
- Don't Do not ship accent swatches without on-accent text, contrast target, usage cap, and dark-mode counterpart.
- Don't Do not rely on gradients as a substitute for semantic token structure or data-viz accessibility.
### Accessibility
Target WCAG 2.2 AA for text by default, AAA for key neutral text where possible, visible cyan focus rings with a dark outline fallback, and non-color cues for charts and status.
### Usage Context
Best for creative operating systems, editorial publishing tools, enterprise design systems, palette governance dashboards, and modern data products that need controlled statement color.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "calibrated-signal-base",
"type": "registry:theme",
"title": "Calibrated Signal Base shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4F1EA",
"foreground": "#17191D",
"card": "#FFFCF4",
"card-foreground": "#17191D",
"popover": "#FFFCF4",
"popover-foreground": "#17191D",
"primary": "#262A31",
"primary-foreground": "#ffffff",
"secondary": "#766F63",
"secondary-foreground": "#ffffff",
"muted": "#8B8579",
"muted-foreground": "#17191D",
"accent": "#B9F227",
"accent-foreground": "#111111",
"destructive": "#C7433E",
"border": "#D8D1C4",
"input": "#D8D1C4",
"ring": "#B9F227",
"chart-1": "#262A31",
"chart-2": "#766F63",
"chart-3": "#B9F227",
"chart-4": "#537A34",
"chart-5": "#A66A00",
"sidebar": "#FFFCF4",
"sidebar-foreground": "#17191D",
"sidebar-primary": "#262A31",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#007C9C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D1C4",
"sidebar-ring": "#B9F227",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#262A31",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B9F227",
"accent-foreground": "#111111",
"destructive": "#C7433E",
"border": "#303642",
"input": "#303642",
"ring": "#B9F227",
"chart-1": "#262A31",
"chart-2": "#766F63",
"chart-3": "#B9F227",
"chart-4": "#537A34",
"chart-5": "#A66A00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#262A31",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B9F227",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#B9F227",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b1-666f-7452-9f72-49b99ff90788",
"slug": "calibrated-signal-base",
"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"
],
"semantic_accents": [
"brand_citrus",
"editorial_coral",
"highlight_violet",
"interactive_cyan"
],
"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"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
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
implementation kit
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
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #F4F1EA;
--foreground: #17191D;
--card: #FFFCF4;
--card-foreground: #17191D;
--popover: #FFFCF4;
--popover-foreground: #17191D;
--primary: #262A31;
--primary-foreground: #ffffff;
--secondary: #766F63;
--secondary-foreground: #ffffff;
--muted: #8B8579;
--muted-foreground: #17191D;
--accent: #B9F227;
--accent-foreground: #111111;
--destructive: #C7433E;
--border: #D8D1C4;
--input: #D8D1C4;
--ring: #B9F227;
--chart-1: #262A31;
--chart-2: #766F63;
--chart-3: #B9F227;
--chart-4: #537A34;
--chart-5: #A66A00;
--sidebar: #FFFCF4;
--sidebar-foreground: #17191D;
--sidebar-primary: #262A31;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #007C9C;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #D8D1C4;
--sidebar-ring: #B9F227;
--radius: 10px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #262A31;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #B9F227;
--accent-foreground: #111111;
--destructive: #C7433E;
--border: #303642;
--input: #303642;
--ring: #B9F227;
--chart-1: #262A31;
--chart-2: #766F63;
--chart-3: #B9F227;
--chart-4: #537A34;
--chart-5: #A66A00;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #262A31;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #B9F227;
--sidebar-accent-foreground: #111111;
--sidebar-border: #303642;
--sidebar-ring: #B9F227;
--radius: 10px;
}
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 CalibratedSignalBaseShadcnKit() {
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">Calibrated Signal Base</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": "calibrated-signal-base",
"type": "registry:theme",
"title": "Calibrated Signal Base shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4F1EA",
"foreground": "#17191D",
"card": "#FFFCF4",
"card-foreground": "#17191D",
"popover": "#FFFCF4",
"popover-foreground": "#17191D",
"primary": "#262A31",
"primary-foreground": "#ffffff",
"secondary": "#766F63",
"secondary-foreground": "#ffffff",
"muted": "#8B8579",
"muted-foreground": "#17191D",
"accent": "#B9F227",
"accent-foreground": "#111111",
"destructive": "#C7433E",
"border": "#D8D1C4",
"input": "#D8D1C4",
"ring": "#B9F227",
"chart-1": "#262A31",
"chart-2": "#766F63",
"chart-3": "#B9F227",
"chart-4": "#537A34",
"chart-5": "#A66A00",
"sidebar": "#FFFCF4",
"sidebar-foreground": "#17191D",
"sidebar-primary": "#262A31",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#007C9C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#D8D1C4",
"sidebar-ring": "#B9F227",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#262A31",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#B9F227",
"accent-foreground": "#111111",
"destructive": "#C7433E",
"border": "#303642",
"input": "#303642",
"ring": "#B9F227",
"chart-1": "#262A31",
"chart-2": "#766F63",
"chart-3": "#B9F227",
"chart-4": "#537A34",
"chart-5": "#A66A00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#262A31",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#B9F227",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#B9F227",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9b1-666f-7452-9f72-49b99ff90788",
"slug": "calibrated-signal-base",
"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"
],
"semantic_accents": [
"brand_citrus",
"editorial_coral",
"highlight_violet",
"interactive_cyan"
],
"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"
]
}
}
}
# Calibrated Signal Base shadcn/ui Components
Author: `katagami-agent`
## Intent
Translate a neutral-first 2026 palette system into shadcn/ui primitives where vivid accents are role-separated, contrast-paired, and capped.
## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, table.
## Token cues
Use `background`, `surface`, `text`, `muted`, and `border` for most structure. Use citrus for brand badges, cyan for interactive/focus, violet for limited highlights, and coral only for editorial annotations. Every accent background must use its matching on-accent text.
## Visual character to preserve
Warm stone canvas, ivory raised cards, graphite headers, hairline warm borders, accent governor rails, dual-mode token cards, patterned chart lanes, and editorial quarantine chips.
## ShadSync visual profile
family: palette-governance; material: warm-stone; contour: calibrated-rounded; border: hairline-plus-accent-rail; underlay: subtle-grid; grain: false; stickerBadges: capped-role-badges; motion: short-rail-slide; density: medium; accents: citrus, cyan, violet, coral with caps.
## Signature component recipes
- button: default neutral; primary uses signal cyan with graphite outline focus; destructive remains semantic error and never coral.
- card: ivory surface, warm border, optional 3px top or left accent rail only.
- input: neutral border, cyan focus ring plus dark outline fallback.
- textarea: same as input, with mono helper text for token notes.
- select: neutral trigger, cyan active ring, no saturated menu panels.
- dialog: graphite title, ivory body, one accent rail for current role.
- sheet: cool graphite header band with neutral body and capped badges.
- tabs: active tab gets cyan underline, not filled rainbow tabs.
- badge: role badges include cap text; citrus brand, violet highlight, coral editorial-only.
- separator: warm-gray 1px; dotted only for data-viz grouping.
- checkbox: cyan checked state with visible label.
- switch: neutral track, cyan thumb when on.
- slider: neutral rail, cyan active range, labelled values.
- tooltip: graphite background with ivory text; no accent unless explaining an accent.
- dropdown-menu: neutral menu, active row cyan left rule.
- table: token rows with mono aliases, swatches, contrast, dark counterpart, and cap columns.
## Preview shots
application-shell, detail-editor, data-operations.
## Implementation contract
Import local primitives from `@/components/ui/*`. Do not invent a parallel component system. Keep accent area below stated caps and include text labels for data colors.
## 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 PaletteGovernanceCard() {
return (
<Card className="border border-border bg-card rounded-lg shadow-sm overflow-hidden">
<div className="h-1 w-full bg-[var(--brand-citrus)]" />
<CardHeader>
<Badge className="bg-[var(--brand-citrus)] text-[var(--on-brand-citrus)]">brand · max 5%</Badge>
<CardTitle>Neutral first, signal under contract</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<Input placeholder="token.semantic.alias" />
<Button className="bg-[var(--interactive-cyan)] text-[var(--on-interactive-cyan)] ring-2 ring-foreground">Approve token map</Button>
<Table><TableHeader><TableRow><TableHead>Alias</TableHead><TableHead>On token</TableHead><TableHead>Cap</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>highlight.violet</TableCell><TableCell>#FFFFFF</TableCell><TableCell>2 objects</TableCell></TableRow></TableBody></Table>
</CardContent>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "card",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "input",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "textarea",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "select",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "dialog",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "sheet",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "tabs",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "badge",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "separator",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "checkbox",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "switch",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "slider",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "tooltip",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "dropdown-menu",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
},
{
"component": "table",
"recipe": "Neutral structure by default; apply role-separated accent only when semantic, with visible label, on-color text, and usage cap."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"avoid": [
"rainbow cards",
"coral error states",
"unlabelled swatches"
],
"composition": "A palette governance dashboard with graphite header, neutral cards, one citrus brand rail, cyan active tab, and token table.",
"id": "application-shell",
"mustShowStates": [
"cyan focus ring",
"citrus brand cap badge",
"violet insight badge limited to one"
],
"primitives": [
"button",
"card",
"tabs",
"badge",
"separator",
"tooltip",
"dropdown-menu",
"table"
],
"scene": {
"actions": [
"Approve map",
"Export tokens"
],
"description": "Audit semantic roles before publishing a 2026 color set.",
"eyebrow": "Palette OS",
"headline": "Accent budget for Launch Editorial",
"rows": [
{
"alias": "brand.citrus",
"cap": "5%",
"on": "#17191D"
},
{
"alias": "interactive.cyan",
"cap": "focus/action",
"on": "#07191D"
},
{
"alias": "editorial.coral",
"cap": "editorial",
"on": "#23070A"
}
],
"stats": [
{
"label": "AA pairs",
"value": "42"
},
{
"label": "Accent area",
"value": "4.8%"
},
{
"label": "Dark shifts",
"value": "Ready"
}
]
}
},
{
"avoid": [
"full saturated panels",
"hue-only validation"
],
"composition": "A token detail editor with side sheet for OKLCH lightness/chroma adjustments and contrast notes.",
"id": "detail-editor",
"mustShowStates": [
"neutral fields",
"cyan active controls",
"coral editorial-only quarantine chip"
],
"primitives": [
"dialog",
"sheet",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"badge",
"button"
],
"scene": {
"actions": [
"Save adjustment",
"Run contrast"
],
"description": "Preserve hue identity while reducing glare and keeping text contrast safe.",
"eyebrow": "Token editor",
"fields": [
{
"label": "OKLCH lightness",
"value": "72"
},
{
"label": "Chroma",
"value": "0.18"
},
{
"label": "On token",
"value": "#140934"
}
],
"headline": "Adjust highlight.violet for dark mode",
"stats": [
{
"label": "Visible highlights",
"value": "1/2"
},
{
"label": "WCAG",
"value": "AA"
}
]
}
},
{
"avoid": [
"meaning by color alone",
"decorative gradients"
],
"composition": "A chart safety review with patterned series, direct labels, and neutral gridlines.",
"id": "data-operations",
"mustShowStates": [
"patterned violet and coral lanes",
"direct labels",
"neutral grid"
],
"primitives": [
"card",
"table",
"badge",
"separator",
"slider",
"switch",
"tooltip",
"button"
],
"scene": {
"actions": [
"Publish chart tokens",
"View simulation"
],
"description": "Color, pattern, shape, and label are all present before chart tokens ship.",
"eyebrow": "Data-viz safety",
"headline": "Series colors pass redundancy review",
"rows": [
{
"label": "Realtime",
"pattern": "solid",
"series": "cyan circle"
},
{
"label": "Forecast",
"pattern": "diagonal",
"series": "violet hatch"
},
{
"label": "Editorial",
"pattern": "hatch",
"series": "coral diamond"
}
],
"stats": [
{
"label": "CVD checks",
"value": "3"
},
{
"label": "Hue-only risks",
"value": "0"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"brand citrus max 5%",
"interactive cyan focus/action",
"highlight violet max 2 objects",
"editorial coral only"
],
"border": "warm hairline with capped accent rails",
"contour": "calibrated-rounded",
"density": "medium",
"family": "palette-governance",
"grain": false,
"material": "warm-stone-ivory",
"motion": "140ms rail slide and fade",
"stickerBadges": true,
"underlay": true
}
}