back to gallery
design language·lumen-chroma-console

Lumen Chroma 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 product design language for 2026 color systems where UI palettes are built as perceptual OKLCH lightness steps, controlled chroma bands, semantic role tokens, and automated WCAG/APCA contrast gates before any brand flourish is allowed.
values
Perceived-lightness first palette constructionSemantic role tokens over raw color namesMeasured accessibility with graceful brand expressionMode-aware families for light, dark, and high-contrast states
anti-values
×Decorative color ramps with uneven contrast jumps×Brand hues applied directly to text without contrast validation×Unlabeled one-off hex values hidden inside components
tokens
borders4 items
accent width
3px
character
Neutral hairlines define structure; chroma borders are reserved for active, warning, and pass/fail states.
default width
1px
style
solid
colors12 items
accent
#00A989
background
#F7F8F2
border
#D6DDD8
error
#D63C3C
info
#1976D2
muted
#65717C
primary
#246BFE
secondary
#7A58D7
success
#168A58
surface
#FFFFFF
text
#101418
warning
#B67505
motion3 items
duration
160ms
easing
cubic-bezier(0.2, 0.8, 0.2, 1)
philosophy
Motion is diagnostic and quick: meters fill, rails brighten, and panels lift only enough to confirm state without distracting from contrast decisions.
radii5 items
full
9999px
lg
22px
md
14px
none
0
sm
8px
shadows3 items
lg
0 26px 70px rgba(16,20,24,0.18)
md
0 14px 34px rgba(36,107,254,0.13)
sm
0 1px 2px rgba(16,20,24,0.08)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
Subtle 24px dot-grid and horizontal lightness ruler lines at the page margins.
card style
Rounded panels with 1px neutral borders, inset top lightness strips, and small monospace token captions.
treatment
Warm neutral base with white token slabs, pale OKLCH-like lightness bands, and sparse chroma rails.
typography8 items
base size
16px
body font
Source Sans 3
google fonts url
https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&family=Source+Sans+3:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap
heading font
Space Grotesk
letter spacing
-0.015em
line height
1.52
mono font
JetBrains Mono
scale ratio
1.22
rules
composition
Arrange screens like a palette laboratory: left navigation for token families, central semantic-role workbench, right rail for contrast gates and mode comparison.
density

Moderately dense enterprise UI with generous panel padding but many measurable chips, ramps, and status rows visible at once.

hierarchy

Use high-contrast Space Grotesk headings, monospace token labels, and compact Source Sans descriptions so decisions read before decoration.

signature patterns
Perceptual ramp cards show vertical lightness steps with numeric L-values and adjacent semantic role aliases.Contrast-gate badges pair each color relationship with WCAG ratio text, APCA polarity marks, and a pass/fail progress stripe.Brand hue harmonization appears as thin chroma rails beside neutral slabs instead of saturated backgrounds.Mode-aware split panels compare light and dark theme tokens in mirrored cards joined by a central source-color spine.
layout
breakpoints

desktop 1200px, tablet 768px, mobile 375px with stacked cards and horizontally scrollable ramp chips

grid

12-column desktop shell with a 260px token navigation, fluid workbench, and 320px audit rail; tablet collapses audit rail under workbench.

whitespace

Use 24px gutters, 16px card interiors, and 8px chip gaps so measured color data stays readable without feeling loose.

guidance
do
  • Name tokens by semantic role and mode, then map brand hues to those roles.
  • Gate text, icon, border, and state relationships with automated WCAG/APCA checks.
  • Keep large surfaces neutral and use chroma in rails, chips, focus rings, and status states.
avoid
  • Do not create arbitrary hex values inside components or marketing sections.
  • Do not assume equal HSL steps produce equal perceived lightness.
  • Do not use saturated brand color as the main dark-mode surface.
katagami spec
# Lumen Chroma Console

## Philosophy

A product design language for 2026 color systems where UI palettes are built as perceptual OKLCH lightness steps, controlled chroma bands, semantic role tokens, and automated WCAG/APCA contrast gates before any brand flourish is allowed.

### Values

- Perceived-lightness first palette construction
- Semantic role tokens over raw color names
- Measured accessibility with graceful brand expression
- Mode-aware families for light, dark, and high-contrast states

### Anti-Values

- Decorative color ramps with uneven contrast jumps
- Brand hues applied directly to text without contrast validation
- Unlabeled one-off hex values hidden inside components

### Visual Character

- Cards use stepped OKLCH lightness slabs with visible L94, L88, L76, and L62 labels printed into the surface edges.
- Accent color appears as controlled chroma rails and small semantic status chips rather than flooding large content surfaces.
- Every interactive cluster includes a contrast-gate meter motif with pass bands, ratio labels, and APCA-style polarity markers.
- Neutral ramps are layered as calm data-console panels with fine 1px borders, inset grid lines, and token-name annotations.

## Tokens

### Borders

- **Accent Width**: 3px
- **Character**: Neutral hairlines define structure; chroma borders are reserved for active, warning, and pass/fail states.
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#00A989` |
| background | `#F7F8F2` |
| border | `#D6DDD8` |
| error | `#D63C3C` |
| info | `#1976D2` |
| muted | `#65717C` |
| primary | `#246BFE` |
| secondary | `#7A58D7` |
| success | `#168A58` |
| surface | `#FFFFFF` |
| text | `#101418` |
| warning | `#B67505` |

### Motion

- **Duration**: 160ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: Motion is diagnostic and quick: meters fill, rails brighten, and panels lift only enough to confirm state without distracting from contrast decisions.

### Radii

- **Full**: 9999px
- **Lg**: 22px
- **Md**: 14px
- **None**: 0
- **Sm**: 8px

### Shadows

- **Lg**: 0 26px 70px rgba(16,20,24,0.18)
- **Md**: 0 14px 34px rgba(36,107,254,0.13)
- **Sm**: 0 1px 2px rgba(16,20,24,0.08)

### Spacing

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

### Surfaces

- **Bg Pattern**: Subtle 24px dot-grid and horizontal lightness ruler lines at the page margins.
- **Card Style**: Rounded panels with 1px neutral borders, inset top lightness strips, and small monospace token captions.
- **Treatment**: Warm neutral base with white token slabs, pale OKLCH-like lightness bands, and sparse chroma rails.

### Typography

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

## Rules

### Composition

Arrange screens like a palette laboratory: left navigation for token families, central semantic-role workbench, right rail for contrast gates and mode comparison.

### Density

Moderately dense enterprise UI with generous panel padding but many measurable chips, ramps, and status rows visible at once.

### Hierarchy

Use high-contrast Space Grotesk headings, monospace token labels, and compact Source Sans descriptions so decisions read before decoration.

### Signature Patterns

- Perceptual ramp cards show vertical lightness steps with numeric L-values and adjacent semantic role aliases.
- Contrast-gate badges pair each color relationship with WCAG ratio text, APCA polarity marks, and a pass/fail progress stripe.
- Brand hue harmonization appears as thin chroma rails beside neutral slabs instead of saturated backgrounds.
- Mode-aware split panels compare light and dark theme tokens in mirrored cards joined by a central source-color spine.

## Layout

### Breakpoints

desktop 1200px, tablet 768px, mobile 375px with stacked cards and horizontally scrollable ramp chips

### Grid

12-column desktop shell with a 260px token navigation, fluid workbench, and 320px audit rail; tablet collapses audit rail under workbench.

### Whitespace

Use 24px gutters, 16px card interiors, and 8px chip gaps so measured color data stays readable without feeling loose.

## Guidance

### Do

- Name tokens by semantic role and mode, then map brand hues to those roles.
- Gate text, icon, border, and state relationships with automated WCAG/APCA checks.
- Keep large surfaces neutral and use chroma in rails, chips, focus rings, and status states.

### Don't

- Do not create arbitrary hex values inside components or marketing sections.
- Do not assume equal HSL steps produce equal perceived lightness.
- Do not use saturated brand color as the main dark-mode surface.
DESIGN.md
---
version: "alpha"
name: "Lumen Chroma Console"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#00A989"
  background: "#F7F8F2"
  border: "#D6DDD8"
  error: "#D63C3C"
  info: "#1976D2"
  muted: "#65717C"
  primary: "#246BFE"
  secondary: "#7A58D7"
  success: "#168A58"
  surface: "#FFFFFF"
  text: "#101418"
  warning: "#B67505"
typography:
  headline-lg:
    fontFamily: "Space Grotesk"
    fontSize: "1.816rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.015em"
  headline-md:
    fontFamily: "Space Grotesk"
    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: "JetBrains Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "22px"
  md: "14px"
  none: "0px"
  sm: "8px"
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: "#000000"
    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"
---

# Lumen Chroma Console

## Overview

A product design language for 2026 color systems where UI palettes are built as perceptual OKLCH lightness steps, controlled chroma bands, semantic role tokens, and automated WCAG/APCA contrast gates before any brand flourish is allowed.

### Values

- Perceived-lightness first palette construction
- Semantic role tokens over raw color names
- Measured accessibility with graceful brand expression
- Mode-aware families for light, dark, and high-contrast states

### Anti-Values

- Decorative color ramps with uneven contrast jumps
- Brand hues applied directly to text without contrast validation
- Unlabeled one-off hex values hidden inside components

### Visual Character

- Cards use stepped OKLCH lightness slabs with visible L94, L88, L76, and L62 labels printed into the surface edges.
- Accent color appears as controlled chroma rails and small semantic status chips rather than flooding large content surfaces.
- Every interactive cluster includes a contrast-gate meter motif with pass bands, ratio labels, and APCA-style polarity markers.
- Neutral ramps are layered as calm data-console panels with fine 1px borders, inset grid lines, and token-name annotations.

## 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 | `#00A989` |
| background | `#F7F8F2` |
| border | `#D6DDD8` |
| error | `#D63C3C` |
| info | `#1976D2` |
| muted | `#65717C` |
| primary | `#246BFE` |
| secondary | `#7A58D7` |
| success | `#168A58` |
| surface | `#FFFFFF` |
| text | `#101418` |
| warning | `#B67505` |

## Typography

- **Headline-Lg**: Space Grotesk, 1.816rem, weight 700, line-height 1.1.
- **Headline-Md**: Space Grotesk, 1.488rem, weight 600, line-height 1.15.
- **Body-Md**: Source Sans 3, 16px, weight 400, line-height 1.52.
- **Label-Md**: JetBrains 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

desktop 1200px, tablet 768px, mobile 375px with stacked cards and horizontally scrollable ramp chips

### Grid

12-column desktop shell with a 260px token navigation, fluid workbench, and 320px audit rail; tablet collapses audit rail under workbench.

### Whitespace

Use 24px gutters, 16px card interiors, and 8px chip gaps so measured color data stays readable without feeling loose.

## Elevation & Depth

### Shadows

- **Lg**: 0 26px 70px rgba(16,20,24,0.18)
- **Md**: 0 14px 34px rgba(36,107,254,0.13)
- **Sm**: 0 1px 2px rgba(16,20,24,0.08)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `22px`
- **Md**: `14px`
- **None**: `0px`
- **Sm**: `8px`

### Surfaces

- **Bg Pattern**: Subtle 24px dot-grid and horizontal lightness ruler lines at the page margins.
- **Card Style**: Rounded panels with 1px neutral borders, inset top lightness strips, and small monospace token captions.
- **Treatment**: Warm neutral base with white token slabs, pale OKLCH-like lightness bands, and sparse chroma rails.

### Borders

- **Accent Width**: 3px
- **Character**: Neutral hairlines define structure; chroma borders are reserved for active, warning, and pass/fail states.
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Arrange screens like a palette laboratory: left navigation for token families, central semantic-role workbench, right rail for contrast gates and mode comparison.

### Density

Moderately dense enterprise UI with generous panel padding but many measurable chips, ramps, and status rows visible at once.

### Hierarchy

Use high-contrast Space Grotesk headings, monospace token labels, and compact Source Sans descriptions so decisions read before decoration.

### Signature Patterns

- Perceptual ramp cards show vertical lightness steps with numeric L-values and adjacent semantic role aliases.
- Contrast-gate badges pair each color relationship with WCAG ratio text, APCA polarity marks, and a pass/fail progress stripe.
- Brand hue harmonization appears as thin chroma rails beside neutral slabs instead of saturated backgrounds.
- Mode-aware split panels compare light and dark theme tokens in mirrored cards joined by a central source-color spine.

## 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-019ea9a3-76da-7850-9a94-feffade4bbc7/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 tokens by semantic role and mode, then map brand hues to those roles.
- Do Gate text, icon, border, and state relationships with automated WCAG/APCA checks.
- Do Keep large surfaces neutral and use chroma in rails, chips, focus rings, and status states.
- Don't Do not create arbitrary hex values inside components or marketing sections.
- Don't Do not assume equal HSL steps produce equal perceived lightness.
- Don't Do not use saturated brand color as the main dark-mode surface.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "lumen-chroma-console",
  "type": "registry:theme",
  "title": "Lumen Chroma Console shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F7F8F2",
      "foreground": "#101418",
      "card": "#FFFFFF",
      "card-foreground": "#101418",
      "popover": "#FFFFFF",
      "popover-foreground": "#101418",
      "primary": "#246BFE",
      "primary-foreground": "#ffffff",
      "secondary": "#7A58D7",
      "secondary-foreground": "#ffffff",
      "muted": "#65717C",
      "muted-foreground": "#101418",
      "accent": "#00A989",
      "accent-foreground": "#ffffff",
      "destructive": "#D63C3C",
      "border": "#D6DDD8",
      "input": "#D6DDD8",
      "ring": "#00A989",
      "chart-1": "#246BFE",
      "chart-2": "#7A58D7",
      "chart-3": "#00A989",
      "chart-4": "#168A58",
      "chart-5": "#B67505",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#101418",
      "sidebar-primary": "#246BFE",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1976D2",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#D6DDD8",
      "sidebar-ring": "#00A989",
      "radius": "14px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#246BFE",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#00A989",
      "accent-foreground": "#ffffff",
      "destructive": "#D63C3C",
      "border": "#303642",
      "input": "#303642",
      "ring": "#00A989",
      "chart-1": "#246BFE",
      "chart-2": "#7A58D7",
      "chart-3": "#00A989",
      "chart-4": "#168A58",
      "chart-5": "#B67505",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#246BFE",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#00A989",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#00A989",
      "radius": "14px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a3-76da-7850-9a94-feffade4bbc7",
    "slug": "lumen-chroma-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 · lumen-chroma-console
DESIGN.md

at a glance

Palette

Typography

headline-lgSpace Grotesk · 29px · 700

The quick brown fox jumps

headline-mdSpace Grotesk · 24px · 600

The quick brown fox jumps

body-mdSource Sans 3 · 16px · 400

The quick brown fox jumps

label-mdJetBrains 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
lg22px
md14px
none0px
sm8px
shadcn/ui

implementation kit

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

DESIGN.md with shadcn

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

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #F7F8F2;
  --foreground: #101418;
  --card: #FFFFFF;
  --card-foreground: #101418;
  --popover: #FFFFFF;
  --popover-foreground: #101418;
  --primary: #246BFE;
  --primary-foreground: #ffffff;
  --secondary: #7A58D7;
  --secondary-foreground: #ffffff;
  --muted: #65717C;
  --muted-foreground: #101418;
  --accent: #00A989;
  --accent-foreground: #ffffff;
  --destructive: #D63C3C;
  --border: #D6DDD8;
  --input: #D6DDD8;
  --ring: #00A989;
  --chart-1: #246BFE;
  --chart-2: #7A58D7;
  --chart-3: #00A989;
  --chart-4: #168A58;
  --chart-5: #B67505;
  --sidebar: #FFFFFF;
  --sidebar-foreground: #101418;
  --sidebar-primary: #246BFE;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #1976D2;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #D6DDD8;
  --sidebar-ring: #00A989;
  --radius: 14px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #246BFE;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #00A989;
  --accent-foreground: #ffffff;
  --destructive: #D63C3C;
  --border: #303642;
  --input: #303642;
  --ring: #00A989;
  --chart-1: #246BFE;
  --chart-2: #7A58D7;
  --chart-3: #00A989;
  --chart-4: #168A58;
  --chart-5: #B67505;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #246BFE;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #00A989;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #00A989;
  --radius: 14px;
}
tsx starter
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";

export function LumenChromaConsoleShadcnKit() {
  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">Lumen Chroma 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": "lumen-chroma-console",
  "type": "registry:theme",
  "title": "Lumen Chroma Console shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F7F8F2",
      "foreground": "#101418",
      "card": "#FFFFFF",
      "card-foreground": "#101418",
      "popover": "#FFFFFF",
      "popover-foreground": "#101418",
      "primary": "#246BFE",
      "primary-foreground": "#ffffff",
      "secondary": "#7A58D7",
      "secondary-foreground": "#ffffff",
      "muted": "#65717C",
      "muted-foreground": "#101418",
      "accent": "#00A989",
      "accent-foreground": "#ffffff",
      "destructive": "#D63C3C",
      "border": "#D6DDD8",
      "input": "#D6DDD8",
      "ring": "#00A989",
      "chart-1": "#246BFE",
      "chart-2": "#7A58D7",
      "chart-3": "#00A989",
      "chart-4": "#168A58",
      "chart-5": "#B67505",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#101418",
      "sidebar-primary": "#246BFE",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#1976D2",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#D6DDD8",
      "sidebar-ring": "#00A989",
      "radius": "14px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#246BFE",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#00A989",
      "accent-foreground": "#ffffff",
      "destructive": "#D63C3C",
      "border": "#303642",
      "input": "#303642",
      "ring": "#00A989",
      "chart-1": "#246BFE",
      "chart-2": "#7A58D7",
      "chart-3": "#00A989",
      "chart-4": "#168A58",
      "chart-5": "#B67505",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#246BFE",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#00A989",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#00A989",
      "radius": "14px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ea9a3-76da-7850-9a94-feffade4bbc7",
    "slug": "lumen-chroma-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
# shadcn/ui Components — Lumen Chroma Console

Author: `katagami-agent`

This first-class shadcn/ui artifact translates the Lumen Chroma Console visual profile into local primitives from `@/components/ui/*`.

## ShadSync visual profile

- Warm neutral canvas `#F7F8F2`, white/L94 slabs `#FFFFFF`, and 1px ruler borders `#D6DDD8`.
- Source color spine `#246BFE`, violet comparison focus `#7A58D7`, and green pass rails `#00A989`.
- Use `JetBrains Mono` for tokens, hex values, OKLCH L/C/H readings, APCA polarity, and WCAG ratios.
- Motion: 160ms cubic-bezier(0.2, 0.8, 0.2, 1) for meter fills, focus rings, and sheet entrance.

## Signature component recipes

### button
Use `<Button>` as a pill with `rounded-full`, blue source fill, white label, shadow-sm, and `focus-visible:ring-4 focus-visible:ring-[#8A63FF]/30`; secondary buttons are white slabs with token-border and mono ratio caption.

### card
Use `<Card>` with warm white background, `border-[#D9D5C8]`, `rounded-2xl`, top 3px lightness strip, mono token eyebrow, and compact audit metric footer.

### input
Use `<Input>` with white measured field, mono label above, helper text below showing contrast target, and violet focus ring.

### textarea
Use `<Textarea>` for palette notes with dot-grid background, monospace placeholder examples, and resize-none in dense inspector panels.

### select
Use `<Select>` for role and ramp selection; trigger includes tiny color chip, semantic role text, and current L-value badge.

### dialog
Use `<Dialog>` as a contrast audit modal with primary spine, ratio rows, pass/fail badges, and warning summary block.

### sheet
Use `<Sheet>` for side audit rail; keep sticky token header, scrollable comparison list, and meter rows entering from right.

### tabs
Use `<Tabs>` for Light/Dark/Brand states; active tab gets blue underline and mono state count badge.

### badge
Use `<Badge>` for PASS/WARN/FAIL, token role labels, and APCA polarity; keep high-contrast fills and mono uppercase text.

### separator
Use `<Separator>` as ruler line with neutral border color and optional lightness tick labels.

### checkbox
Use `<Checkbox>` for contrast criteria lists; checked state uses success green with white check and mono criterion label.

### switch
Use `<Switch>` for theme and algorithm toggles; track shows lightness rail and thumb uses source color when enabled.

### slider
Use `<Slider>` for chroma/lightness tuning; rail is neutral ruler and range fill uses selected semantic color.

### tooltip
Use `<Tooltip>` for metric explanations; dark text slab, mono value line, and short WCAG/APCA note.

### dropdown-menu
Use `<DropdownMenu>` for token actions; each item has color chip, mono shortcut, and hover slab.

### table
Use `<Table>` for token matrix with sticky header, mono values, color swatch cells, ratio column, and PASS/WARN/FAIL badges.

## Preview shots

- `application-shell`: token families, source spine, central contrast matrix, and right audit rail.
- `detail-editor`: semantic role editor with sliders, inputs, and live pass/fail preview.
- `data-operations`: dense table, dropdown actions, tooltip metrics, and batch status badges.

## 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 ContrastGateCard() {
  return (
    <Card className="rounded-2xl border-[#D9D5C8] bg-[#FCFAF3] shadow-sm">
      <CardHeader className="border-t-4 border-t-[#2F6BFF]">
        <CardTitle className="font-semibold tracking-[-0.03em]">Primary / Surface</CardTitle>
      </CardHeader>
      <CardContent className="space-y-4">
        <div className="flex items-center gap-2"><Badge className="bg-[#128A5A] text-white">PASS</Badge><code>7.4:1 · APCA +78</code></div>
        <Input aria-label="Token hex" value="#2F6BFF" readOnly className="font-mono focus-visible:ring-[#8A63FF]" />
        <Table><TableHeader><TableRow><TableHead>Role</TableHead><TableHead>Hex</TableHead><TableHead>Status</TableHead></TableRow></TableHeader><TableBody><TableRow><TableCell>primary</TableCell><TableCell className="font-mono">#2F6BFF</TableCell><TableCell><Badge>PASS</Badge></TableCell></TableRow></TableBody></Table>
        <Button className="rounded-full bg-[#2F6BFF] text-white focus-visible:ring-4 focus-visible:ring-[#8A63FF]/30">Apply accessible token</Button>
      </CardContent>
    </Card>
  )
}
```
preview shotscompatibility fallback
{
  "artifact": "katagami:shadcn-preview-shots",
  "version": "preview-shots-v1",
  "generator": "katagami-ui-compatibility-projection",
  "generatedBy": "katagami-ui-projection",
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "renderable": true,
  "language": {
    "id": "en-019ea9a3-76da-7850-9a94-feffade4bbc7",
    "name": "Lumen Chroma Console",
    "slug": "lumen-chroma-console"
  },
  "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
  "primitives": [
    "button",
    "card",
    "input",
    "textarea",
    "select",
    "dialog",
    "sheet",
    "tabs",
    "badge",
    "separator",
    "checkbox",
    "switch",
    "slider",
    "tooltip",
    "dropdown-menu",
    "table"
  ],
  "identityNotes": [
    "Cards use stepped OKLCH lightness slabs with visible L94, L88, L76, and L62 labels printed into the surface edges.",
    "Accent color appears as controlled chroma rails and small semantic status chips rather than flooding large content surfaces.",
    "Every interactive cluster includes a contrast-gate meter motif with pass bands, ratio labels, and APCA-style polarity markers.",
    "Neutral ramps are layered as calm data-console panels with fine 1px borders, inset grid lines, and token-name annotations."
  ],
  "visualProfile": {
    "family": "system",
    "material": "flat",
    "contour": "default",
    "border": "solid",
    "underlay": true,
    "grain": false,
    "stickerBadges": true,
    "motion": "still",
    "density": "balanced",
    "accents": [
      "primary",
      "accent",
      "secondary",
      "muted"
    ]
  },
  "shots": [
    {
      "id": "application-shell",
      "title": "Application shell",
      "viewport": "desktop",
      "primitives": [
        "button",
        "card",
        "input",
        "select",
        "tabs",
        "badge",
        "separator",
        "table"
      ],
      "composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
      "mustShow": [
        "primary and secondary actions",
        "card hierarchy",
        "filterable state",
        "table or list density"
      ],
      "avoid": [
        "component inventory walls",
        "placeholder-only content",
        "generic rounded SaaS chrome"
      ],
      "scene": {
        "eyebrow": "workspace spread",
        "headline": "Lumen Chroma Console launch room",
        "description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
        "primaryAction": "Apply theme",
        "secondaryAction": "Review states",
        "stats": [
          {
            "label": "components",
            "value": "16",
            "tone": "accent"
          },
          {
            "label": "states",
            "value": "ready"
          },
          {
            "label": "density",
            "value": "balanced",
            "tone": "warning"
          }
        ],
        "rows": [
          {
            "label": "Primary flow",
            "value": "mapped",
            "status": "active"
          },
          {
            "label": "Token coverage",
            "value": "semantic",
            "status": "synced"
          },
          {
            "label": "Responsive proof",
            "value": "queued",
            "status": "review"
          }
        ],
        "statuses": [
          "Active",
          "Synced",
          "Draft"
        ]
      }
    },
    {
      "id": "detail-editor",
      "title": "Detail editor",
      "viewport": "tablet",
      "primitives": [
        "button",
        "card",
        "input",
        "textarea",
        "select",
        "checkbox",
        "switch",
        "slider",
        "dialog",
        "sheet"
      ],
      "composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
      "mustShow": [
        "focus ring",
        "error or destructive state",
        "dialog or sheet treatment",
        "written guidance content"
      ],
      "avoid": [
        "unstyled browser controls",
        "floating cards inside cards",
        "missing labels"
      ],
      "scene": {
        "eyebrow": "editing flow",
        "headline": "Language recipe editor",
        "description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
        "primaryAction": "Save recipe",
        "secondaryAction": "Open sheet",
        "fields": [
          {
            "label": "Component family",
            "value": "Narrative cards"
          },
          {
            "label": "State treatment",
            "value": "Visible focus + validation"
          },
          {
            "label": "Motion",
            "value": "Small lift, no opacity-only fade"
          }
        ],
        "statuses": [
          "Focus",
          "Invalid",
          "Confirmed"
        ]
      }
    },
    {
      "id": "data-operations",
      "title": "Data operations",
      "viewport": "mobile",
      "primitives": [
        "button",
        "tabs",
        "badge",
        "dropdown-menu",
        "table",
        "tooltip",
        "separator"
      ],
      "composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
      "mustShow": [
        "responsive reflow",
        "dense row styling",
        "menu affordance",
        "status badge system"
      ],
      "avoid": [
        "desktop-only tables",
        "text overflow",
        "default shadcn spacing without Katagami character"
      ],
      "scene": {
        "eyebrow": "operations",
        "headline": "Compact review queue",
        "description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
        "primaryAction": "Resolve",
        "secondaryAction": "Filter",
        "rows": [
          {
            "label": "Button hierarchy",
            "value": "approved",
            "status": "ok"
          },
          {
            "label": "Table rhythm",
            "value": "needs pass",
            "status": "watch"
          },
          {
            "label": "Empty state",
            "value": "designed",
            "status": "done"
          }
        ],
        "statuses": [
          "Queued",
          "Blocked",
          "Done"
        ]
      }
    }
  ],
  "componentRecipes": [
    {
      "primitive": "button",
      "intent": "Prove action hierarchy, focus, disabled, and destructive states."
    },
    {
      "primitive": "card",
      "intent": "Carry the language surface, border, elevation, and density rules."
    },
    {
      "primitive": "input",
      "intent": "Show labels, focus rings, validation, and spacing rhythm."
    },
    {
      "primitive": "textarea",
      "intent": "Show longer guidance, validation copy, and writing density."
    },
    {
      "primitive": "select",
      "intent": "Show filtering, selection contrast, and menu trigger styling."
    },
    {
      "primitive": "dialog",
      "intent": "Show centered decision states and overlay treatment."
    },
    {
      "primitive": "sheet",
      "intent": "Show contextual side panels and responsive editing."
    },
    {
      "primitive": "tabs",
      "intent": "Show navigational structure and active/inactive contrast."
    },
    {
      "primitive": "badge",
      "intent": "Show compact status vocabulary and semantic colors."
    },
    {
      "primitive": "separator",
      "intent": "Show section rhythm without generic gray dividers."
    },
    {
      "primitive": "checkbox",
      "intent": "Show binary selection with visible focus and checked states."
    },
    {
      "primitive": "switch",
      "intent": "Show settings toggles and on/off contrast."
    },
    {
      "primitive": "slider",
      "intent": "Show numeric adjustment with track/thumb styling."
    },
    {
      "primitive": "tooltip",
      "intent": "Show concise explanation styling above compact controls."
    },
    {
      "primitive": "dropdown-menu",
      "intent": "Show action menus, destructive items, and grouped choices."
    },
    {
      "primitive": "table",
      "intent": "Show dense operational data, separators, row states, and responsive behavior."
    }
  ],
  "qualityRules": {
    "do": [
      "Name tokens by semantic role and mode, then map brand hues to those roles.",
      "Gate text, icon, border, and state relationships with automated WCAG/APCA checks.",
      "Keep large surfaces neutral and use chroma in rails, chips, focus rings, and status states."
    ],
    "dont": [
      "Do not create arbitrary hex values inside components or marketing sections.",
      "Do not assume equal HSL steps produce equal perceived lightness.",
      "Do not use saturated brand color as the main dark-mode surface."
    ]
  }
}