Warm Signal Neutrals
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 architectural borders define roles; color appears as a coded edge or focus outline
- default width
- 1px
- style
- solid warm hairlines with semantic rails on selected or stateful objects
colors12 items
motion3 items
- duration
- 160ms
- easing
- cubic-bezier(.2,.8,.2,1)
- philosophy
- brief state confirmation; controls lift by 1px and rails brighten, with no ornamental animation
radii5 items
- full
- 9999px
- lg
- 18px
- md
- 10px
- none
- 0
- sm
- 6px
shadows3 items
- lg
- 0 26px 70px rgba(71,52,31,0.14)
- md
- 0 14px 32px rgba(71,52,31,0.10)
- sm
- 0 1px 0 rgba(45,34,24,0.05)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- low-opacity dot grid and paper-grain gradients in gutters only
- card style
- soft rectangular cards with 1px warm borders, small semantic rails, and almost no chromatic fill
- treatment
- warm matte layers with subtle grain, inner top highlights, and neutral insets
typography8 items
- base size
- 16px
- body font
- Source Sans 3
- google fonts url
- https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Sora:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap
- heading font
- Sora
- letter spacing
- -0.015em
- line height
- 1.52
- mono font
- IBM Plex Mono
- scale ratio
- 1.22
rules
Compose screens as operational workspaces: a warm shell, a narrow wayfinding rail, one dominant task surface, and side notes for state explanations rather than equal marketing cards.
Medium product density with compact metadata and comfortable form rows; warm whitespace separates roles without making the interface feel empty.
Use typography weight, warm surface elevation, and semantic rails to establish priority; saturated accents may mark selection, focus, or status but never become large decorative backgrounds.
layout
mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; rail becomes top tabs on mobile and the side context stacks below the task panel.
Medium density: tables and forms are compact enough for product work but every semantic state gets a readable label and icon/dot companion.
Desktop uses a 12-column max-width 1240px grid with a 72px navigation rail, 8px baseline rhythm, and a dominant 7/5 content split for task and state context.
Use generous warm gutters of 32-64px around the shell and tighter 8-16px gaps inside data rows, preserving a calm matte field around dense content.
guidance
- Map primitive ramps into semantic content, background, border, accent, and intent tokens before applying them to components.
- Reserve saturated cobalt, red, green, amber, and orange for focus, selected navigation, primary action, and explicit status communication.
- Pair every color state with a rail, dot, label, icon, or text so meaning never depends on hue alone.
- Use warm neutral layers and one-pixel borders to create most of the spatial system.
- Do not flood cards, sidebars, or hero areas with saturated brand color.
- Do not use beige text on cream surfaces below accessible contrast thresholds.
- Do not make success, warning, destructive, and informational states share a generic accent treatment.
- Do not introduce glossy gradients, neon glow, glassmorphism, or decorative rainbow charts.
katagami spec
# Warm Signal Neutrals ## Philosophy Warm Signal Neutrals is a product-interface language where warm off-white surfaces and subdued chroma ramps carry most of the experience, while saturated color is reserved for semantic meaning, wayfinding, focus, and operational state changes. ### Values - Use warm neutral surfaces as the primary emotional material rather than broad decorative color fields. - Separate primitive color ramps from semantic roles for content, background, border, intent, focus, and interaction state. - Make accessibility and contrast visible: text and focus rings should be crisp against quiet surfaces. - Let small high-contrast accents orient users through tasks, records, alerts, and selected navigation. - Prefer product calm and durable information hierarchy over seasonal trend novelty. ### Anti-Values - No rainbow dashboards, decorative gradients, or saturation used merely to fill empty space. - No low-contrast beige-on-beige minimalism that sacrifices readable content or state clarity. - No arbitrary brand color reuse for destructive, warning, success, or informational semantics. ### Visual Character - Use layered warm-neutral CSS custom properties for body, shell, panel, inset, and raised surfaces, with each layer separated by subtle one-pixel borders instead of colorful fills. - Render semantic states as narrow left rails, small corner chips, inline dots, and focus rings using saturated accent tokens while keeping the surrounding component surface neutral. - Build cards and tables with soft rectangular radii, hairline borders, and inset top highlights so surface hierarchy comes from light, border, and spacing rather than shadow-heavy decoration. - Use muted chroma ramps for secondary navigation and metadata badges, then reserve one high-contrast cobalt focus color and three intent colors for actual actions, alerts, and wayfinding. - Apply a quiet dot-grid underlay and warm paper grain through low-opacity radial and linear gradients, visible only in page gutters and large empty zones. ## Tokens ### Borders - **Accent Width**: 3px - **Character**: quiet architectural borders define roles; color appears as a coded edge or focus outline - **Default Width**: 1px - **Style**: solid warm hairlines with semantic rails on selected or stateful objects ### Colors | Name | Value | |------|-------| | accent | `#D86B2A` | | background | `#F7F1E8` | | border | `#DED2C3` | | error | `#B3261E` | | info | `#2850C8` | | muted | `#7A6B5F` | | primary | `#3657D8` | | secondary | `#8C7763` | | success | `#1E7A4A` | | surface | `#FFF9F0` | | text | `#211D19` | | warning | `#B75E00` | ### Motion - **Duration**: 160ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: brief state confirmation; controls lift by 1px and rails brighten, with no ornamental animation ### Radii - **Full**: 9999px - **Lg**: 18px - **Md**: 10px - **None**: 0 - **Sm**: 6px ### Shadows - **Lg**: 0 26px 70px rgba(71,52,31,0.14) - **Md**: 0 14px 32px rgba(71,52,31,0.10) - **Sm**: 0 1px 0 rgba(45,34,24,0.05) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: low-opacity dot grid and paper-grain gradients in gutters only - **Card Style**: soft rectangular cards with 1px warm borders, small semantic rails, and almost no chromatic fill - **Treatment**: warm matte layers with subtle grain, inner top highlights, and neutral insets ### Typography - **Base Size**: 16px - **Body Font**: Source Sans 3 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Sora:wght@500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap - **Heading Font**: Sora - **Letter Spacing**: -0.015em - **Line Height**: 1.52 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.22 ## Rules ### Composition Compose screens as operational workspaces: a warm shell, a narrow wayfinding rail, one dominant task surface, and side notes for state explanations rather than equal marketing cards. ### Density Medium product density with compact metadata and comfortable form rows; warm whitespace separates roles without making the interface feel empty. ### Hierarchy Use typography weight, warm surface elevation, and semantic rails to establish priority; saturated accents may mark selection, focus, or status but never become large decorative backgrounds. ### Signature Patterns - Semantic rail cards: every status object uses a 3px vertical rail, matching dot, and text label so color meaning is redundant and accessible. - Neutral surface ladder: background, shell, card, inset, and raised layers step through warm creams with one-pixel borders and inset highlights instead of heavy shadows. - Accent rationing: cobalt appears only for focus, selected navigation, primary action, and active table row wayfinding, while orange is reserved for a single next-step prompt. - Muted chroma badges: labels use desaturated clay, sage, ochre, and slate tints with dark text, never saturated pill fills. - Gutter grain: dotted warm-neutral underlays appear in page margins and empty zones but stop at component boundaries to preserve content clarity. ## Layout ### Breakpoints mobile <= 640px, tablet 641px-1024px, desktop >= 1025px; rail becomes top tabs on mobile and the side context stacks below the task panel. ### Density Medium density: tables and forms are compact enough for product work but every semantic state gets a readable label and icon/dot companion. ### Grid Desktop uses a 12-column max-width 1240px grid with a 72px navigation rail, 8px baseline rhythm, and a dominant 7/5 content split for task and state context. ### Whitespace Use generous warm gutters of 32-64px around the shell and tighter 8-16px gaps inside data rows, preserving a calm matte field around dense content. ## Guidance ### Do - Map primitive ramps into semantic content, background, border, accent, and intent tokens before applying them to components. - Reserve saturated cobalt, red, green, amber, and orange for focus, selected navigation, primary action, and explicit status communication. - Pair every color state with a rail, dot, label, icon, or text so meaning never depends on hue alone. - Use warm neutral layers and one-pixel borders to create most of the spatial system. ### Don't - Do not flood cards, sidebars, or hero areas with saturated brand color. - Do not use beige text on cream surfaces below accessible contrast thresholds. - Do not make success, warning, destructive, and informational states share a generic accent treatment. - Do not introduce glossy gradients, neon glow, glassmorphism, or decorative rainbow charts. ### Accessibility Maintain WCAG AA contrast for body text and controls, use high-contrast focus rings, duplicate color semantics with labels and shape, and keep muted badges dark enough to read. ### Usage Context Best for administrative tools, research operations, healthcare-adjacent workflows, knowledge systems, civic software, and product surfaces that need calm neutrality with precise semantic states.
DESIGN.md
---
version: "alpha"
name: "Warm Signal Neutrals"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#D86B2A"
background: "#F7F1E8"
border: "#DED2C3"
error: "#B3261E"
info: "#2850C8"
muted: "#7A6B5F"
primary: "#3657D8"
secondary: "#8C7763"
success: "#1E7A4A"
surface: "#FFF9F0"
text: "#211D19"
warning: "#B75E00"
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: "Source Sans 3"
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: "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"
---
# Warm Signal Neutrals
## Overview
Warm Signal Neutrals is a product-interface language where warm off-white surfaces and subdued chroma ramps carry most of the experience, while saturated color is reserved for semantic meaning, wayfinding, focus, and operational state changes.
### Values
- Use warm neutral surfaces as the primary emotional material rather than broad decorative color fields.
- Separate primitive color ramps from semantic roles for content, background, border, intent, focus, and interaction state.
- Make accessibility and contrast visible: text and focus rings should be crisp against quiet surfaces.
- Let small high-contrast accents orient users through tasks, records, alerts, and selected navigation.
- Prefer product calm and durable information hierarchy over seasonal trend novelty.
### Anti-Values
- No rainbow dashboards, decorative gradients, or saturation used merely to fill empty space.
- No low-contrast beige-on-beige minimalism that sacrifices readable content or state clarity.
- No arbitrary brand color reuse for destructive, warning, success, or informational semantics.
### Visual Character
- Use layered warm-neutral CSS custom properties for body, shell, panel, inset, and raised surfaces, with each layer separated by subtle one-pixel borders instead of colorful fills.
- Render semantic states as narrow left rails, small corner chips, inline dots, and focus rings using saturated accent tokens while keeping the surrounding component surface neutral.
- Build cards and tables with soft rectangular radii, hairline borders, and inset top highlights so surface hierarchy comes from light, border, and spacing rather than shadow-heavy decoration.
- Use muted chroma ramps for secondary navigation and metadata badges, then reserve one high-contrast cobalt focus color and three intent colors for actual actions, alerts, and wayfinding.
- Apply a quiet dot-grid underlay and warm paper grain through low-opacity radial and linear gradients, visible only in page gutters and large empty zones.
## 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 | `#D86B2A` |
| background | `#F7F1E8` |
| border | `#DED2C3` |
| error | `#B3261E` |
| info | `#2850C8` |
| muted | `#7A6B5F` |
| primary | `#3657D8` |
| secondary | `#8C7763` |
| success | `#1E7A4A` |
| surface | `#FFF9F0` |
| text | `#211D19` |
| warning | `#B75E00` |
## 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**: Source Sans 3, 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-1024px, desktop >= 1025px; rail becomes top tabs on mobile and the side context stacks below the task panel.
### Density
Medium density: tables and forms are compact enough for product work but every semantic state gets a readable label and icon/dot companion.
### Grid
Desktop uses a 12-column max-width 1240px grid with a 72px navigation rail, 8px baseline rhythm, and a dominant 7/5 content split for task and state context.
### Whitespace
Use generous warm gutters of 32-64px around the shell and tighter 8-16px gaps inside data rows, preserving a calm matte field around dense content.
## Elevation & Depth
### Shadows
- **Lg**: 0 26px 70px rgba(71,52,31,0.14)
- **Md**: 0 14px 32px rgba(71,52,31,0.10)
- **Sm**: 0 1px 0 rgba(45,34,24,0.05)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `18px`
- **Md**: `10px`
- **None**: `0px`
- **Sm**: `6px`
### Surfaces
- **Bg Pattern**: low-opacity dot grid and paper-grain gradients in gutters only
- **Card Style**: soft rectangular cards with 1px warm borders, small semantic rails, and almost no chromatic fill
- **Treatment**: warm matte layers with subtle grain, inner top highlights, and neutral insets
### Borders
- **Accent Width**: 3px
- **Character**: quiet architectural borders define roles; color appears as a coded edge or focus outline
- **Default Width**: 1px
- **Style**: solid warm hairlines with semantic rails on selected or stateful objects
## Components
### Composition
Compose screens as operational workspaces: a warm shell, a narrow wayfinding rail, one dominant task surface, and side notes for state explanations rather than equal marketing cards.
### Density
Medium product density with compact metadata and comfortable form rows; warm whitespace separates roles without making the interface feel empty.
### Hierarchy
Use typography weight, warm surface elevation, and semantic rails to establish priority; saturated accents may mark selection, focus, or status but never become large decorative backgrounds.
### Signature Patterns
- Semantic rail cards: every status object uses a 3px vertical rail, matching dot, and text label so color meaning is redundant and accessible.
- Neutral surface ladder: background, shell, card, inset, and raised layers step through warm creams with one-pixel borders and inset highlights instead of heavy shadows.
- Accent rationing: cobalt appears only for focus, selected navigation, primary action, and active table row wayfinding, while orange is reserved for a single next-step prompt.
- Muted chroma badges: labels use desaturated clay, sage, ochre, and slate tints with dark text, never saturated pill fills.
- Gutter grain: dotted warm-neutral underlays appear in page margins and empty zones but stop at component boundaries to preserve content clarity.
## 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-019ea9a1-83a9-7802-a299-8713fa7a433a/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 Map primitive ramps into semantic content, background, border, accent, and intent tokens before applying them to components.
- Do Reserve saturated cobalt, red, green, amber, and orange for focus, selected navigation, primary action, and explicit status communication.
- Do Pair every color state with a rail, dot, label, icon, or text so meaning never depends on hue alone.
- Do Use warm neutral layers and one-pixel borders to create most of the spatial system.
- Don't Do not flood cards, sidebars, or hero areas with saturated brand color.
- Don't Do not use beige text on cream surfaces below accessible contrast thresholds.
- Don't Do not make success, warning, destructive, and informational states share a generic accent treatment.
- Don't Do not introduce glossy gradients, neon glow, glassmorphism, or decorative rainbow charts.
### Accessibility
Maintain WCAG AA contrast for body text and controls, use high-contrast focus rings, duplicate color semantics with labels and shape, and keep muted badges dark enough to read.
### Usage Context
Best for administrative tools, research operations, healthcare-adjacent workflows, knowledge systems, civic software, and product surfaces that need calm neutrality with precise semantic states.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "warm-signal-neutrals",
"type": "registry:theme",
"title": "Warm Signal Neutrals shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F1E8",
"foreground": "#211D19",
"card": "#FFF9F0",
"card-foreground": "#211D19",
"popover": "#FFF9F0",
"popover-foreground": "#211D19",
"primary": "#3657D8",
"primary-foreground": "#ffffff",
"secondary": "#8C7763",
"secondary-foreground": "#ffffff",
"muted": "#7A6B5F",
"muted-foreground": "#211D19",
"accent": "#D86B2A",
"accent-foreground": "#ffffff",
"destructive": "#B3261E",
"border": "#DED2C3",
"input": "#DED2C3",
"ring": "#D86B2A",
"chart-1": "#3657D8",
"chart-2": "#8C7763",
"chart-3": "#D86B2A",
"chart-4": "#1E7A4A",
"chart-5": "#B75E00",
"sidebar": "#FFF9F0",
"sidebar-foreground": "#211D19",
"sidebar-primary": "#3657D8",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2850C8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#DED2C3",
"sidebar-ring": "#D86B2A",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#3657D8",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D86B2A",
"accent-foreground": "#ffffff",
"destructive": "#B3261E",
"border": "#303642",
"input": "#303642",
"ring": "#D86B2A",
"chart-1": "#3657D8",
"chart-2": "#8C7763",
"chart-3": "#D86B2A",
"chart-4": "#1E7A4A",
"chart-5": "#B75E00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#3657D8",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D86B2A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D86B2A",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a1-83a9-7802-a299-8713fa7a433a",
"slug": "warm-signal-neutrals",
"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"
]
}
}
}
```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: #F7F1E8;
--foreground: #211D19;
--card: #FFF9F0;
--card-foreground: #211D19;
--popover: #FFF9F0;
--popover-foreground: #211D19;
--primary: #3657D8;
--primary-foreground: #ffffff;
--secondary: #8C7763;
--secondary-foreground: #ffffff;
--muted: #7A6B5F;
--muted-foreground: #211D19;
--accent: #D86B2A;
--accent-foreground: #ffffff;
--destructive: #B3261E;
--border: #DED2C3;
--input: #DED2C3;
--ring: #D86B2A;
--chart-1: #3657D8;
--chart-2: #8C7763;
--chart-3: #D86B2A;
--chart-4: #1E7A4A;
--chart-5: #B75E00;
--sidebar: #FFF9F0;
--sidebar-foreground: #211D19;
--sidebar-primary: #3657D8;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2850C8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #DED2C3;
--sidebar-ring: #D86B2A;
--radius: 10px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #3657D8;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #D86B2A;
--accent-foreground: #ffffff;
--destructive: #B3261E;
--border: #303642;
--input: #303642;
--ring: #D86B2A;
--chart-1: #3657D8;
--chart-2: #8C7763;
--chart-3: #D86B2A;
--chart-4: #1E7A4A;
--chart-5: #B75E00;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #3657D8;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #D86B2A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #D86B2A;
--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 WarmSignalNeutralsShadcnKit() {
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">Warm Signal Neutrals</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": "warm-signal-neutrals",
"type": "registry:theme",
"title": "Warm Signal Neutrals shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F7F1E8",
"foreground": "#211D19",
"card": "#FFF9F0",
"card-foreground": "#211D19",
"popover": "#FFF9F0",
"popover-foreground": "#211D19",
"primary": "#3657D8",
"primary-foreground": "#ffffff",
"secondary": "#8C7763",
"secondary-foreground": "#ffffff",
"muted": "#7A6B5F",
"muted-foreground": "#211D19",
"accent": "#D86B2A",
"accent-foreground": "#ffffff",
"destructive": "#B3261E",
"border": "#DED2C3",
"input": "#DED2C3",
"ring": "#D86B2A",
"chart-1": "#3657D8",
"chart-2": "#8C7763",
"chart-3": "#D86B2A",
"chart-4": "#1E7A4A",
"chart-5": "#B75E00",
"sidebar": "#FFF9F0",
"sidebar-foreground": "#211D19",
"sidebar-primary": "#3657D8",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2850C8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#DED2C3",
"sidebar-ring": "#D86B2A",
"radius": "10px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#3657D8",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D86B2A",
"accent-foreground": "#ffffff",
"destructive": "#B3261E",
"border": "#303642",
"input": "#303642",
"ring": "#D86B2A",
"chart-1": "#3657D8",
"chart-2": "#8C7763",
"chart-3": "#D86B2A",
"chart-4": "#1E7A4A",
"chart-5": "#B75E00",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#3657D8",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D86B2A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D86B2A",
"radius": "10px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ea9a1-83a9-7802-a299-8713fa7a433a",
"slug": "warm-signal-neutrals",
"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"
]
}
}
}
# shadcn/ui Components — Warm Signal Neutrals
Author: `katagami-agent`
## ShadSync visual profile
- Family: warm semantic product workspace
- Material: matte cream paper surfaces with quiet one-pixel warm hairlines
- Contour: softly rounded cards, steady control radii, small coded badges
- Border: solid warm borders plus 3px semantic rails for state-bearing regions
- Underlay: low-opacity dot-grid/paper-grain gutters, never glossy gradients
- Motion: 160ms cubic-bezier(.2,.8,.2,1) lift/rail confirmation
- Density: medium operational density with compact metadata and clear labels
- Accents: cobalt for focus/selection/primary, orange for attention, red/green/amber/info only for explicit labelled states
## Signature component recipes
### button
Use neutral surface buttons by default with 1px warm border; primary buttons use cobalt fill, white text, 10px radius, and a high-contrast focus ring. Destructive buttons use red only with explicit destructive copy.
### card
Use warm surface cards with 18px radius, 1px #DED2C3 border, soft cream shadow, and optional 3px semantic left rail with matching dot and label.
### input
Use inset cream fields, 10px radius, muted placeholder, warm border, and cobalt outline plus 1px lift on focus.
### textarea
Match input treatment; preserve generous line-height and never use beige low-contrast text.
### select
Use the same field shell; selected values remain text-first with small semantic dot only when state is meaningful.
### dialog
Render as matte raised warm panel, 18px radius, border, limited shadow, and a clear semantic header badge when the dialog changes state.
### sheet
Use a paper side panel with warm border divider, compact rows, and rail markers for active subsections.
### tabs
Active tab receives cobalt 3px rail/underline and strong text; inactive tabs stay neutral with no color flooding.
### badge
Badges are labelled state pills with small dot/rail companions; colors map to success/warning/error/info with accessible text.
### separator
Use one-pixel warm hairlines; never heavy black dividers except focus outlines.
### checkbox
10px-ish control box with cobalt checked state, warm border, and visible focus ring.
### switch
Neutral track with cobalt active state; pair with text label and avoid relying on color alone.
### slider
Warm track, cobalt filled segment, compact thumb with focus ring, and numeric label for meaning.
### tooltip
Small matte cream surface, warm border, crisp dark text, and no glass/blur effects.
### dropdown-menu
Raised cream list with compact rows, selected row rail, semantic icons/dots where needed, and warm separators.
### table
Compact operational rows on warm surface, sticky semantic state column, labelled badges, and selected rows indicated by a cobalt rail.
## Preview shots
- `application-shell`: wayfinding rail, task surface, semantic summary cards.
- `detail-editor`: form editor with status rails and accessible focus.
- `data-operations`: compact table with labelled state badges and filters.
## 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"
export function WarmSignalCard() {
return (
<Card className="border-[#DED2C3] bg-[#FFF9F0] shadow-[0_14px_32px_rgba(71,52,31,0.10)] rounded-[18px] border-l-[3px] border-l-[#3657D8]">
<CardHeader>
<Badge className="bg-[#EAF0FF] text-[#2850C8] border border-[#2850C8]">● In review</Badge>
<CardTitle className="text-[#211D19]">Semantic palette audit</CardTitle>
</CardHeader>
<CardContent className="text-[#7A6B5F]">Warm neutral surface, rationed cobalt focus, and redundant status labelling.</CardContent>
<Button className="bg-[#3657D8] text-white focus-visible:ring-[#2850C8]">Resolve contrast</Button>
</Card>
)
}
```
{
"artifact": "katagami:shadcn-preview-shots",
"author": "katagami-agent",
"componentRecipes": [
{
"component": "button",
"recipe": "Use neutral surface buttons by default with 1px warm border; primary buttons use cobalt fill, white text, 10px radius, and a high-contrast focus ring. Destructive buttons use red only with explicit destructive copy."
},
{
"component": "card",
"recipe": "Use warm surface cards with 18px radius, 1px #DED2C3 border, soft cream shadow, and optional 3px semantic left rail with matching dot and label."
},
{
"component": "input",
"recipe": "Use inset cream fields, 10px radius, muted placeholder, warm border, and cobalt outline plus 1px lift on focus."
},
{
"component": "textarea",
"recipe": "Match input treatment; preserve generous line-height and never use beige low-contrast text."
},
{
"component": "select",
"recipe": "Use the same field shell; selected values remain text-first with small semantic dot only when state is meaningful."
},
{
"component": "dialog",
"recipe": "Render as matte raised warm panel, 18px radius, border, limited shadow, and a clear semantic header badge when the dialog changes state."
},
{
"component": "sheet",
"recipe": "Use a paper side panel with warm border divider, compact rows, and rail markers for active subsections."
},
{
"component": "tabs",
"recipe": "Active tab receives cobalt 3px rail/underline and strong text; inactive tabs stay neutral with no color flooding."
},
{
"component": "badge",
"recipe": "Badges are labelled state pills with small dot/rail companions; colors map to success/warning/error/info with accessible text."
},
{
"component": "separator",
"recipe": "Use one-pixel warm hairlines; never heavy black dividers except focus outlines."
},
{
"component": "checkbox",
"recipe": "10px-ish control box with cobalt checked state, warm border, and visible focus ring."
},
{
"component": "switch",
"recipe": "Neutral track with cobalt active state; pair with text label and avoid relying on color alone."
},
{
"component": "slider",
"recipe": "Warm track, cobalt filled segment, compact thumb with focus ring, and numeric label for meaning."
},
{
"component": "tooltip",
"recipe": "Small matte cream surface, warm border, crisp dark text, and no glass/blur effects."
},
{
"component": "dropdown-menu",
"recipe": "Raised cream list with compact rows, selected row rail, semantic icons/dots where needed, and warm separators."
},
{
"component": "table",
"recipe": "Compact operational rows on warm surface, sticky semantic state column, labelled badges, and selected rows indicated by a cobalt rail."
}
],
"generatedBy": "katagami-agent",
"renderable": true,
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"shots": [
{
"id": "application-shell",
"scene": {
"actions": [
"Review queue",
"Open state map"
],
"description": "A warm shell with selected cobalt rail, calm task cards, and status summaries that pair dot, rail, and label.",
"eyebrow": "Operations console",
"headline": "Palette signals without saturation flood",
"rows": [
{
"accent": "info",
"name": "Navigation state",
"status": "Selected"
},
{
"accent": "success",
"name": "Semantic ramp",
"status": "Mapped"
},
{
"accent": "warning",
"name": "Muted neutral",
"status": "Needs label"
}
],
"stats": [
{
"label": "Contrast checks",
"state": "success",
"value": "42"
},
{
"label": "Warnings",
"state": "warning",
"value": "6"
},
{
"label": "Blocked",
"state": "error",
"value": "2"
}
]
}
},
{
"id": "detail-editor",
"scene": {
"actions": [
"Save mapping",
"Preview focus"
],
"description": "Focused form controls sit on inset cream fields with cobalt focus, concise helper copy, and labelled semantic badges.",
"eyebrow": "Design token editor",
"fields": [
{
"label": "Primary accent",
"state": "info",
"value": "#3657D8"
},
{
"label": "Warning rail",
"state": "warning",
"value": "#B75E00"
},
{
"label": "Destructive copy",
"state": "error",
"value": "Requires explicit label"
}
],
"headline": "Warm neutrals with explicit state rails",
"stats": [
{
"label": "AA labels",
"state": "success",
"value": "100%"
}
]
}
},
{
"id": "data-operations",
"scene": {
"actions": [
"Filter states",
"Export audit"
],
"description": "Compact rows use warm separators, accessible text, and state badges with redundant dots instead of color-only meaning.",
"eyebrow": "Release readiness",
"headline": "Semantic states stay readable in dense product UI",
"rows": [
{
"name": "Checkout sheet",
"owner": "Mira",
"state": "success",
"status": "Passing"
},
{
"name": "Billing dialog",
"owner": "Theo",
"state": "warning",
"status": "Warning contrast"
},
{
"name": "Delete flow",
"owner": "Ari",
"state": "error",
"status": "Blocked"
},
{
"name": "Import table",
"owner": "Jun",
"state": "info",
"status": "Info review"
}
]
}
}
],
"version": "preview-shots-v1",
"visualProfile": {
"accents": [
"cobalt focus and selection",
"orange attention",
"red destructive",
"green success",
"amber warning",
"blue information"
],
"border": "solid-hairline-plus-semantic-rail",
"contour": "soft-rounded-operational",
"density": "medium",
"family": "warm-semantic-product",
"grain": true,
"material": "matte-cream-paper",
"motion": "brief-lift-rail-brighten",
"stickerBadges": false,
"underlay": true
}
}