back to gallery
design language·harmonic-orbit-palette-console

Harmonic Orbit Palette Console

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 UI language for teams designing adaptive color systems: complementary, analogous, triadic, and split-complementary hues are held in a calm neutral orbit so semantic roles remain stable across light, dark, and high-contrast modes.
values
Hue harmony as product structure, not decorationSemantic roles that survive raw hue changesAccessible contrast with tested on-color pairings60-30-10 restraint between surfaces, support hues, and accents
anti-values
×Rainbow dashboards where hue replaces hierarchy×Red/green-only status signaling×Dark mode made by simple inversion×Untested accent text on saturated backgrounds
tokens
borders4 items
accent width
3px
character
Cool gray dividers with semantic accent rails; borders carry state before fill color changes.
default width
1px
style
solid
colors12 items
accent
#B45309
background
#F7F2E7
border
#C9CED8
error
#B42318
info
#1D4ED8
muted
#667085
primary
#3346A8
secondary
#0D6B7D
success
#0F6B3E
surface
#FFFDF7
text
#172033
warning
#B45309
motion3 items
duration
160ms
easing
cubic-bezier(.2,.8,.2,1)
philosophy
Short, functional transitions: chips slide one scale step, focus rings bloom, and mode changes crossfade tokens without spinning decoration.
radii5 items
full
9999px
lg
20px
md
12px
none
0
sm
6px
shadows3 items
lg
0 28px 70px rgba(23,32,51,0.16)
md
0 12px 28px rgba(23,32,51,0.10)
sm
0 1px 0 rgba(23,32,51,0.08)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
Subtle radial hue-orbit arcs and a low-opacity OKLCH-like grid behind the main shell.
card style
Cards use 1px borders, 12-20px radius, topographic swatch rails, and restrained shadows only for elevated overlays.
treatment
Warm neutral canvas with ivory cards, slate-toned dark mode, and optional high-contrast black/white mapping; hue enters as thin tonal rails and chips.
typography8 items
base size
16px
body font
Atkinson Hyperlegible
google fonts url
https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
heading font
Atkinson Hyperlegible
letter spacing
-0.01em
line height
1.52
mono font
IBM Plex Mono
scale ratio
1.22
rules
composition
Compose screens as a palette laboratory: a wide neutral workbench, a left semantic role rail, center hue-harmony canvases, and a right accessibility audit column.
density

Moderately dense like a design-systems tool: compact tables and controls, but generous gutters around palette comparisons.

hierarchy

Hierarchy comes from tonal contrast, type weight, and measured accent rails; saturated fills are only for primary actions, active chips, and urgent states.

signature patterns
Orbital swatch rings made from conic gradients mark complementary, triadic, analogous, and split-complementary relationships in every major module.Semantic token rows pair each color with a dark on-color pill, a light on-color pill, and a non-hue icon or pattern marker for accessibility.Mode preview cards share identical component geometry while CSS variables swap light, dark, and high-contrast token sets.Accent rails use three-pixel left or top borders to encode state so color never has to be the only carrier of meaning.
layout
breakpoints

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

grid

Twelve-column desktop shell with 280px rail, fluid central canvas, and 320px audit panel; tablet collapses into stacked zones.

whitespace

8px baseline grid with 24px module gutters, 16px control rhythm, and tighter 8px gaps inside token rows.

guidance
do
  • Check WCAG contrast for text, icons, focus rings, and chart labels before promoting any palette.
  • Use semantic token names such as primary, warning, success, and surface instead of hue names in component APIs.
  • Provide light, dark, and high-contrast mappings with tested on-color foregrounds for every accent.
  • Pair hue with icons, labels, rail shape, or pattern so status remains perceivable without color vision assumptions.
avoid
  • Do not rely on red/green alone for pass/fail status or destructive/positive actions.
  • Do not invert light palettes mechanically for dark mode; retune tone and chroma per role.
  • Do not exceed the 60-30-10 proportion by filling large surfaces with saturated hues.
  • Do not place small text directly on amber, chartreuse, or cyan accents unless contrast has been verified.
katagami spec
# Harmonic Orbit Palette Console

## Philosophy

A UI language for teams designing adaptive color systems: complementary, analogous, triadic, and split-complementary hues are held in a calm neutral orbit so semantic roles remain stable across light, dark, and high-contrast modes.

### Values

- Hue harmony as product structure, not decoration
- Semantic roles that survive raw hue changes
- Accessible contrast with tested on-color pairings
- 60-30-10 restraint between surfaces, support hues, and accents

### Anti-Values

- Rainbow dashboards where hue replaces hierarchy
- Red/green-only status signaling
- Dark mode made by simple inversion
- Untested accent text on saturated backgrounds

### Visual Character

- Layer warm slate and ivory neutral panels in a 60 percent surface field with thin cool-gray borders and no generic white-card sprawl.
- Use orbital color chips, arcs, and swatch rails as repeated CSS motifs to make hue relationships visible without flooding layouts.
- Reserve saturated indigo, cyan, amber, and chartreuse for ten-percent accents, focus rings, status bars, and selected controls with paired on-color foregrounds.
- Map light, dark, and high-contrast palettes through explicit CSS custom properties so semantic roles stay independent of raw hue.
- Separate dense data zones with crisp one-pixel dividers, tonal bands, and square-to-soft radii rather than heavy shadows.

## Tokens

### Borders

- **Accent Width**: 3px
- **Character**: Cool gray dividers with semantic accent rails; borders carry state before fill color changes.
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#B45309` |
| background | `#F7F2E7` |
| border | `#C9CED8` |
| error | `#B42318` |
| info | `#1D4ED8` |
| muted | `#667085` |
| primary | `#3346A8` |
| secondary | `#0D6B7D` |
| success | `#0F6B3E` |
| surface | `#FFFDF7` |
| text | `#172033` |
| warning | `#B45309` |

### Motion

- **Duration**: 160ms
- **Easing**: cubic-bezier(.2,.8,.2,1)
- **Philosophy**: Short, functional transitions: chips slide one scale step, focus rings bloom, and mode changes crossfade tokens without spinning decoration.

### Radii

- **Full**: 9999px
- **Lg**: 20px
- **Md**: 12px
- **None**: 0
- **Sm**: 6px

### Shadows

- **Lg**: 0 28px 70px rgba(23,32,51,0.16)
- **Md**: 0 12px 28px rgba(23,32,51,0.10)
- **Sm**: 0 1px 0 rgba(23,32,51,0.08)

### Spacing

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

### Surfaces

- **Bg Pattern**: Subtle radial hue-orbit arcs and a low-opacity OKLCH-like grid behind the main shell.
- **Card Style**: Cards use 1px borders, 12-20px radius, topographic swatch rails, and restrained shadows only for elevated overlays.
- **Treatment**: Warm neutral canvas with ivory cards, slate-toned dark mode, and optional high-contrast black/white mapping; hue enters as thin tonal rails and chips.

### Typography

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

## Rules

### Composition

Compose screens as a palette laboratory: a wide neutral workbench, a left semantic role rail, center hue-harmony canvases, and a right accessibility audit column.

### Density

Moderately dense like a design-systems tool: compact tables and controls, but generous gutters around palette comparisons.

### Hierarchy

Hierarchy comes from tonal contrast, type weight, and measured accent rails; saturated fills are only for primary actions, active chips, and urgent states.

### Signature Patterns

- Orbital swatch rings made from conic gradients mark complementary, triadic, analogous, and split-complementary relationships in every major module.
- Semantic token rows pair each color with a dark on-color pill, a light on-color pill, and a non-hue icon or pattern marker for accessibility.
- Mode preview cards share identical component geometry while CSS variables swap light, dark, and high-contrast token sets.
- Accent rails use three-pixel left or top borders to encode state so color never has to be the only carrier of meaning.

## Layout

### Breakpoints

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

### Grid

Twelve-column desktop shell with 280px rail, fluid central canvas, and 320px audit panel; tablet collapses into stacked zones.

### Whitespace

8px baseline grid with 24px module gutters, 16px control rhythm, and tighter 8px gaps inside token rows.

## Guidance

### Do

- Check WCAG contrast for text, icons, focus rings, and chart labels before promoting any palette.
- Use semantic token names such as primary, warning, success, and surface instead of hue names in component APIs.
- Provide light, dark, and high-contrast mappings with tested on-color foregrounds for every accent.
- Pair hue with icons, labels, rail shape, or pattern so status remains perceivable without color vision assumptions.

### Don't

- Do not rely on red/green alone for pass/fail status or destructive/positive actions.
- Do not invert light palettes mechanically for dark mode; retune tone and chroma per role.
- Do not exceed the 60-30-10 proportion by filling large surfaces with saturated hues.
- Do not place small text directly on amber, chartreuse, or cyan accents unless contrast has been verified.
DESIGN.md
---
version: "alpha"
name: "Harmonic Orbit Palette Console"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#B45309"
  background: "#F7F2E7"
  border: "#C9CED8"
  error: "#B42318"
  info: "#1D4ED8"
  muted: "#667085"
  primary: "#3346A8"
  secondary: "#0D6B7D"
  success: "#0F6B3E"
  surface: "#FFFDF7"
  text: "#172033"
  warning: "#B45309"
typography:
  headline-lg:
    fontFamily: "Atkinson Hyperlegible"
    fontSize: "1.816rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "Atkinson Hyperlegible"
    fontSize: "1.488rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "Atkinson Hyperlegible"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.52
    letterSpacing: "-0.01em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "20px"
  md: "12px"
  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"
---

# Harmonic Orbit Palette Console

## Overview

A UI language for teams designing adaptive color systems: complementary, analogous, triadic, and split-complementary hues are held in a calm neutral orbit so semantic roles remain stable across light, dark, and high-contrast modes.

### Values

- Hue harmony as product structure, not decoration
- Semantic roles that survive raw hue changes
- Accessible contrast with tested on-color pairings
- 60-30-10 restraint between surfaces, support hues, and accents

### Anti-Values

- Rainbow dashboards where hue replaces hierarchy
- Red/green-only status signaling
- Dark mode made by simple inversion
- Untested accent text on saturated backgrounds

### Visual Character

- Layer warm slate and ivory neutral panels in a 60 percent surface field with thin cool-gray borders and no generic white-card sprawl.
- Use orbital color chips, arcs, and swatch rails as repeated CSS motifs to make hue relationships visible without flooding layouts.
- Reserve saturated indigo, cyan, amber, and chartreuse for ten-percent accents, focus rings, status bars, and selected controls with paired on-color foregrounds.
- Map light, dark, and high-contrast palettes through explicit CSS custom properties so semantic roles stay independent of raw hue.
- Separate dense data zones with crisp one-pixel dividers, tonal bands, and square-to-soft radii rather than heavy shadows.

## 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 | `#B45309` |
| background | `#F7F2E7` |
| border | `#C9CED8` |
| error | `#B42318` |
| info | `#1D4ED8` |
| muted | `#667085` |
| primary | `#3346A8` |
| secondary | `#0D6B7D` |
| success | `#0F6B3E` |
| surface | `#FFFDF7` |
| text | `#172033` |
| warning | `#B45309` |

## Typography

- **Headline-Lg**: Atkinson Hyperlegible, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Atkinson Hyperlegible, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Atkinson Hyperlegible, 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 375px, tablet 768px, desktop 1200px, wide 1440px

### Grid

Twelve-column desktop shell with 280px rail, fluid central canvas, and 320px audit panel; tablet collapses into stacked zones.

### Whitespace

8px baseline grid with 24px module gutters, 16px control rhythm, and tighter 8px gaps inside token rows.

## Elevation & Depth

### Shadows

- **Lg**: 0 28px 70px rgba(23,32,51,0.16)
- **Md**: 0 12px 28px rgba(23,32,51,0.10)
- **Sm**: 0 1px 0 rgba(23,32,51,0.08)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `20px`
- **Md**: `12px`
- **None**: `0px`
- **Sm**: `6px`

### Surfaces

- **Bg Pattern**: Subtle radial hue-orbit arcs and a low-opacity OKLCH-like grid behind the main shell.
- **Card Style**: Cards use 1px borders, 12-20px radius, topographic swatch rails, and restrained shadows only for elevated overlays.
- **Treatment**: Warm neutral canvas with ivory cards, slate-toned dark mode, and optional high-contrast black/white mapping; hue enters as thin tonal rails and chips.

### Borders

- **Accent Width**: 3px
- **Character**: Cool gray dividers with semantic accent rails; borders carry state before fill color changes.
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Compose screens as a palette laboratory: a wide neutral workbench, a left semantic role rail, center hue-harmony canvases, and a right accessibility audit column.

### Density

Moderately dense like a design-systems tool: compact tables and controls, but generous gutters around palette comparisons.

### Hierarchy

Hierarchy comes from tonal contrast, type weight, and measured accent rails; saturated fills are only for primary actions, active chips, and urgent states.

### Signature Patterns

- Orbital swatch rings made from conic gradients mark complementary, triadic, analogous, and split-complementary relationships in every major module.
- Semantic token rows pair each color with a dark on-color pill, a light on-color pill, and a non-hue icon or pattern marker for accessibility.
- Mode preview cards share identical component geometry while CSS variables swap light, dark, and high-contrast token sets.
- Accent rails use three-pixel left or top borders to encode state so color never has to be the only carrier of meaning.

## 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-019ea9a0-a6dc-7df1-b009-4a82914c1879/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 Check WCAG contrast for text, icons, focus rings, and chart labels before promoting any palette.
- Do Use semantic token names such as primary, warning, success, and surface instead of hue names in component APIs.
- Do Provide light, dark, and high-contrast mappings with tested on-color foregrounds for every accent.
- Do Pair hue with icons, labels, rail shape, or pattern so status remains perceivable without color vision assumptions.
- Don't Do not rely on red/green alone for pass/fail status or destructive/positive actions.
- Don't Do not invert light palettes mechanically for dark mode; retune tone and chroma per role.
- Don't Do not exceed the 60-30-10 proportion by filling large surfaces with saturated hues.
- Don't Do not place small text directly on amber, chartreuse, or cyan accents unless contrast has been verified.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "harmonic-orbit-palette-console",
  "type": "registry:theme",
  "title": "Harmonic Orbit Palette Console shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F7F2E7",
      "foreground": "#172033",
      "card": "#FFFDF7",
      "card-foreground": "#172033",
      "popover": "#FFFDF7",
      "popover-foreground": "#172033",
      "primary": "#3346A8",
      "primary-foreground": "#ffffff",
      "secondary": "#0D6B7D",
      "secondary-foreground": "#ffffff",
      "muted": "#667085",
      "muted-foreground": "#172033",
      "accent": "#B45309",
      "accent-foreground": "#ffffff",
      "destructive": "#B42318",
      "border": "#C9CED8",
      "input": "#C9CED8",
      "ring": "#B45309",
      "chart-1": "#3346A8",
      "chart-2": "#0D6B7D",
      "chart-3": "#B45309",
      "chart-4": "#0F6B3E",
      "chart-5": "#B45309",
      "sidebar": "#FFFDF7",
      "sidebar-foreground": "#172033",
      "sidebar-primary": "#3346A8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1D4ED8",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#C9CED8",
      "sidebar-ring": "#B45309",
      "radius": "12px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#3346A8",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B45309",
      "accent-foreground": "#ffffff",
      "destructive": "#B42318",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B45309",
      "chart-1": "#3346A8",
      "chart-2": "#0D6B7D",
      "chart-3": "#B45309",
      "chart-4": "#0F6B3E",
      "chart-5": "#B45309",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#3346A8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B45309",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B45309",
      "radius": "12px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a0-a6dc-7df1-b009-4a82914c1879",
    "slug": "harmonic-orbit-palette-console",
    "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 · harmonic-orbit-palette-console
DESIGN.md

at a glance

Palette

Typography

headline-lgAtkinson Hyperlegible · 29px · 700

The quick brown fox jumps

headline-mdAtkinson Hyperlegible · 24px · 600

The quick brown fox jumps

body-mdAtkinson Hyperlegible · 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
lg20px
md12px
none0px
sm6px
shadcn/ui

implementation kit

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

DESIGN.md with shadcn

Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #F7F2E7;
  --foreground: #172033;
  --card: #FFFDF7;
  --card-foreground: #172033;
  --popover: #FFFDF7;
  --popover-foreground: #172033;
  --primary: #3346A8;
  --primary-foreground: #ffffff;
  --secondary: #0D6B7D;
  --secondary-foreground: #ffffff;
  --muted: #667085;
  --muted-foreground: #172033;
  --accent: #B45309;
  --accent-foreground: #ffffff;
  --destructive: #B42318;
  --border: #C9CED8;
  --input: #C9CED8;
  --ring: #B45309;
  --chart-1: #3346A8;
  --chart-2: #0D6B7D;
  --chart-3: #B45309;
  --chart-4: #0F6B3E;
  --chart-5: #B45309;
  --sidebar: #FFFDF7;
  --sidebar-foreground: #172033;
  --sidebar-primary: #3346A8;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #1D4ED8;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #C9CED8;
  --sidebar-ring: #B45309;
  --radius: 12px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #3346A8;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #B45309;
  --accent-foreground: #ffffff;
  --destructive: #B42318;
  --border: #303642;
  --input: #303642;
  --ring: #B45309;
  --chart-1: #3346A8;
  --chart-2: #0D6B7D;
  --chart-3: #B45309;
  --chart-4: #0F6B3E;
  --chart-5: #B45309;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #3346A8;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #B45309;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #B45309;
  --radius: 12px;
}
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 HarmonicOrbitPaletteConsoleShadcnKit() {
  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">Harmonic Orbit Palette Console</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": "harmonic-orbit-palette-console",
  "type": "registry:theme",
  "title": "Harmonic Orbit Palette Console shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F7F2E7",
      "foreground": "#172033",
      "card": "#FFFDF7",
      "card-foreground": "#172033",
      "popover": "#FFFDF7",
      "popover-foreground": "#172033",
      "primary": "#3346A8",
      "primary-foreground": "#ffffff",
      "secondary": "#0D6B7D",
      "secondary-foreground": "#ffffff",
      "muted": "#667085",
      "muted-foreground": "#172033",
      "accent": "#B45309",
      "accent-foreground": "#ffffff",
      "destructive": "#B42318",
      "border": "#C9CED8",
      "input": "#C9CED8",
      "ring": "#B45309",
      "chart-1": "#3346A8",
      "chart-2": "#0D6B7D",
      "chart-3": "#B45309",
      "chart-4": "#0F6B3E",
      "chart-5": "#B45309",
      "sidebar": "#FFFDF7",
      "sidebar-foreground": "#172033",
      "sidebar-primary": "#3346A8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1D4ED8",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#C9CED8",
      "sidebar-ring": "#B45309",
      "radius": "12px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#3346A8",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B45309",
      "accent-foreground": "#ffffff",
      "destructive": "#B42318",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B45309",
      "chart-1": "#3346A8",
      "chart-2": "#0D6B7D",
      "chart-3": "#B45309",
      "chart-4": "#0F6B3E",
      "chart-5": "#B45309",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#3346A8",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B45309",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B45309",
      "radius": "12px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a0-a6dc-7df1-b009-4a82914c1879",
    "slug": "harmonic-orbit-palette-console",
    "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
# Harmonic Orbit Palette Console shadcn/ui Components
Author: `katagami-agent`

## Intent
Translate the Harmonic Orbit language into local shadcn/ui primitives for palette-system applications: neutral surface majority, orbital hue accents, semantic role rails, accessible on-color pairings, and clear light/dark/high-contrast mode previews.

## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, and table. Import primitives from `@/components/ui/*` only.

## Token cues
Use `background`, `card`, `foreground`, `muted`, `border`, `primary`, `secondary`, `accent`, `destructive`, and `ring` as semantic roles. Large planes stay warm neutral; primary indigo, cyan, amber, red, and chartreuse appear as rails, chips, focus rings, badges, and selected control fills.

## Visual character to preserve
- Warm neutral workbench with ivory cards, slate text, crisp one-pixel borders, and minimal shadow.
- Orbital swatch rings or conic-gradient chips in major modules.
- Semantic token rows with an accent rail plus text/icon/pattern marker so color is not the only state carrier.
- Mode preview cards that keep geometry stable while token values change.

## ShadSync visual profile
family: `palette-lab`; material: `warm-ivory-slate`; contour: `rounded-technical`; border: `one-pixel-plus-accent-rail`; underlay: true; grain: false; stickerBadges: false; motion: `short-token-crossfade`; density: `moderately-dense`; accents: `indigo cyan amber chartreuse red`.

## Signature component recipes
- button: Use pill radius, bold text, indigo primary fill with ivory foreground. Secondary buttons are ivory with slate border. Add a visible ring offset and never use color alone for danger; include icon/text.
- card: Ivory background, 1px cool slate border, 20px container radius, optional 3px top or left accent rail. Include an orbital chip in headers for palette contexts.
- input: 12px radius, ivory fill, cool border, monospace helper labels for contrast ratios. Focus uses dual ring: ivory gap plus indigo outline.
- textarea: Same field style as input, with left semantic rail when collecting palette notes.
- select: Same as input; trigger includes small swatch dot for selected palette family.
- dialog: Centered ivory panel, 20px radius, audit-summary rail, dim slate overlay; motion is 160ms scale/fade.
- sheet: Right side audit panel with stacked contrast scores and amber review rails.
- tabs: Use segmented neutral tabs; active tab receives slate fill and a small hue dot.
- badge: Pill badges with small square/dot marker and text label; color is never the only meaning.
- separator: 1px cool gray line or 3px accent divider between role groups.
- checkbox: Rounded 6px square, indigo check, label always explicit.
- switch: Neutral track, indigo thumb for enabled, label names the mode (dark/high contrast).
- slider: Palette tone/chroma sliders use slate track, indigo active range, and numeric value label.
- tooltip: Slate surface, ivory text, concise contrast/accessibility explanations.
- dropdown-menu: Ivory surface, 12px radius, subtle shadow, swatch dot in each item.
- table: Compact token tables with monospace headers, accent rail per row, and AA/AAA badges.

## Preview shots
Use `application-shell`, `detail-editor`, and `data-operations`. Each shot should show a real palette workflow rather than a component inventory wall.

## Implementation contract
All components must be assembled from local shadcn/ui primitives and project tokens. Preserve semantic roles independent of raw hue, include tested foreground labels where accent fills appear, and avoid red/green-only status.

## 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 { Separator } from "@/components/ui/separator"

export function PaletteAuditCard() {
  return (
    <Card className="rounded-[20px] border border-border bg-card shadow-sm overflow-hidden">
      <div className="h-1 bg-[linear-gradient(90deg,hsl(var(--primary)),hsl(var(--accent)),#88A817)]" />
      <CardHeader className="space-y-2">
        <Badge className="w-fit rounded-full gap-2"><span className="h-2 w-2 rounded-[2px] bg-current" /> AA verified</Badge>
        <CardTitle>Semantic foreground audit</CardTitle>
      </CardHeader>
      <CardContent className="space-y-4">
        <p className="text-muted-foreground">Each hue role ships with light, dark, and high-contrast on-color mappings.</p>
        <Separator />
        <Button className="rounded-full font-bold">Promote palette</Button>
      </CardContent>
    </Card>
  )
}
```
preview shotsstored
{
  "artifact": "katagami:shadcn-preview-shots",
  "author": "katagami-agent",
  "componentRecipes": [
    {
      "component": "button",
      "recipe": "Use local button primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "card",
      "recipe": "Use local card primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "input",
      "recipe": "Use local input primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "textarea",
      "recipe": "Use local textarea primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "select",
      "recipe": "Use local select primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "dialog",
      "recipe": "Use local dialog primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "sheet",
      "recipe": "Use local sheet primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "tabs",
      "recipe": "Use local tabs primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "badge",
      "recipe": "Use local badge primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "separator",
      "recipe": "Use local separator primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "checkbox",
      "recipe": "Use local checkbox primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "switch",
      "recipe": "Use local switch primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "slider",
      "recipe": "Use local slider primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "tooltip",
      "recipe": "Use local tooltip primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "dropdown-menu",
      "recipe": "Use local dropdown-menu primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    },
    {
      "component": "table",
      "recipe": "Use local table primitive with warm ivory surfaces, cool gray borders, rounded technical contours, indigo focus rings, and semantic hue chips or rails when state is shown."
    }
  ],
  "generatedBy": "katagami-agent",
  "renderable": true,
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "shots": [
    {
      "avoidRules": [
        "no red/green-only status",
        "no saturated full-page background"
      ],
      "composition": "Three-column palette console with left harmony tabs, central orbit cards, and right accessibility audit sheet.",
      "id": "application-shell",
      "mustShowStates": [
        "active indigo tab",
        "AA badges with non-hue markers",
        "dark-mode switch enabled",
        "primary and secondary buttons"
      ],
      "primitives": [
        "button",
        "card",
        "tabs",
        "badge",
        "separator",
        "switch",
        "tooltip",
        "dropdown-menu",
        "table"
      ],
      "scene": {
        "actions": [
          "Promote palette",
          "Run WCAG audit"
        ],
        "description": "Compare complementary, analogous, triadic, and split-complementary families while contrast scores remain visible.",
        "eyebrow": "Palette system console",
        "headline": "Harmonic palettes with semantic guardrails",
        "rows": [
          {
            "family": "Blue-orange",
            "status": "Ready",
            "use": "CTA plus review accent"
          },
          {
            "family": "Cyan analogous",
            "status": "AA",
            "use": "Information panels"
          },
          {
            "family": "Triadic",
            "status": "Review",
            "use": "Dashboard comparison"
          }
        ],
        "stats": [
          {
            "label": "Text pairs",
            "value": "42 AA+"
          },
          {
            "label": "Mode maps",
            "value": "3"
          },
          {
            "label": "Hue roles",
            "value": "12"
          }
        ]
      }
    },
    {
      "avoidRules": [
        "do not name component APIs after raw hues",
        "do not place small text on untested amber"
      ],
      "composition": "Palette detail editor with tone/chroma controls, token naming fields, and accessible foreground selector.",
      "id": "detail-editor",
      "mustShowStates": [
        "focused input dual ring",
        "slider numeric label",
        "checked non-hue cue checkbox",
        "amber warning badge"
      ],
      "primitives": [
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "slider",
        "button",
        "badge",
        "tooltip"
      ],
      "scene": {
        "actions": [
          "Save token",
          "Preview modes"
        ],
        "description": "Tune tone and chroma, pick on-color foregrounds, and require icon labels for warning usage.",
        "eyebrow": "Token detail",
        "fields": [
          {
            "label": "Semantic role",
            "value": "warning"
          },
          {
            "label": "Accent hex",
            "value": "#B45309"
          },
          {
            "label": "On color",
            "value": "#172033"
          }
        ],
        "headline": "Edit warning role without losing meaning",
        "stats": [
          {
            "label": "Light contrast",
            "value": "7.1"
          },
          {
            "label": "Dark contrast",
            "value": "9.2"
          }
        ]
      }
    },
    {
      "avoidRules": [
        "no generic component inventory",
        "no unlabelled color chips"
      ],
      "composition": "Operations table for palette variants with a right audit sheet and publish confirmation dialog.",
      "id": "data-operations",
      "mustShowStates": [
        "selected row accent rail",
        "contrast pass badge",
        "review sheet open",
        "high contrast switch visible"
      ],
      "primitives": [
        "table",
        "badge",
        "separator",
        "sheet",
        "dialog",
        "select",
        "button",
        "switch"
      ],
      "scene": {
        "actions": [
          "Open audit sheet",
          "Publish selected"
        ],
        "description": "A production workflow for reviewing dark-mode retuning, high-contrast mapping, and semantic export readiness.",
        "eyebrow": "Palette operations",
        "headline": "Ship variants only after role checks pass",
        "rows": [
          {
            "contrast": "Pass",
            "mode": "Light/Dark/HC",
            "variant": "Indigo amber split"
          },
          {
            "contrast": "Pass",
            "mode": "Light/Dark",
            "variant": "Cyan violet analog"
          },
          {
            "contrast": "Needs labels",
            "mode": "Draft",
            "variant": "Triadic dashboard"
          }
        ]
      }
    }
  ],
  "version": "preview-shots-v1",
  "visualProfile": {
    "accents": [
      "indigo",
      "cyan",
      "amber",
      "chartreuse",
      "red"
    ],
    "border": "one-pixel-plus-accent-rail",
    "contour": "rounded-technical",
    "density": "moderately-dense",
    "family": "palette-lab",
    "grain": false,
    "material": "warm-ivory-slate",
    "motion": "short-token-crossfade",
    "stickerBadges": false,
    "underlay": true
  }
}