back to gallery
design language·litmus

Litmus

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 reading-instrument reimagination of E-Ink Neurography Manuals: the e-paper memory manual read as a continuous chart-recorder trace on a cool slate panel. A baseline waveform threads the whole layout; one warm signal-amber event bracket marks the single reading under examination. Conceived from the source brief in parallel to the faithful refinement Sōma, not derived from it.
values
one signal read at a time, across time — a temporal trace, not a 2D plateevidence-first hierarchy — coordinates, amplitudes, confidences, states beat marketing copyone live reading — amber is the heated stylus, never a fill or a second highlighthorizontal registers stacked like a chart-recorder drum, never tiled equal cardsmachine intimacy through labels, calibration ticks, erased-memory gaps, and e-ink refresh ghosts
anti-values
×not warm-bone (Sōma) and not ink-navy (the retired Fathom) — the ground is a cool slate reading panel by intent×no contour-plate-plus-corner-bracket layout, no specimen-pane + right rail — that is the refinement's execution×no neon glow, matrix rain, cyberpunk gradients, or hacker-dashboard motifs×no borders, accent edges, boxed-in nav, or nested cards×no equal SaaS card grids; no full-character anime posters
tokens
colors18 items
bg
#23262B
bg_deep
#1B1E22
surface
#2B2F35
surface_2
#313640
recess
#1B1E22
plate
#262A30
text
#ECECE4
muted
#9AA0A0
tick
#5A6068
border
#3A3F45
accent
#E8A23D
accent_deep
#B6791F
accent_tint
#3A3326
on_accent
#1B1305
success
#6BB58C
warning
#E8A23D
error
#D9685A
info
#7FA8C9
typography8 items
base size
17px
body font
IBM Plex Sans
heading font
Space Mono
mono font
IBM Plex Mono
heading weight
700
heading transform
none
letter spacing
0.01em
google fonts url
https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
radii3 items
base
0px
pane
16px
pill
9999px
shadows3 items
sm
0 1px 2px rgba(0,0,0,.32)
md
0 12px 30px rgba(0,0,0,.36)
lg
0 26px 60px rgba(0,0,0,.44)
spacing2 items
base
4px
scale
4px, 8px, 12px, 16px, 24px, 36px, 56px, 72px
surfaces5 items
ground
cool slate reading panel #23262B
channel
lifted register #2B2F35 raised by soft flat shadow
plate
trace field #262A30
recess
#1B1E22 inset for form controls, below the ground
erased void
dashed outline over rubbed hatch on #1B1E22
borders1 items
policy
none — separate by space, the 24px annotation grid, recessed surfaces, and a soft flat shadow; never a card border, accent edge, or boxed-in nav
motion4 items
refresh
180ms steps(2,end) e-ink refresh ghost shift
calibration
260ms ease-out tick drift, max 2px
reveal
0.7s ease intersection reveal, gated behind .lit-anim; settled state visible with no JS
reduced motion
respected — settled state is the default
rules
composition
Run one continuous baseline trace through the whole layout. Stack content as full-width horizontal registers (channels), each with an evidence header, a trace field, and a calibration ruler band. Avoid equal tiled card rows.
hierarchy

Operational state and evidence labels beat marketing copy. Amber marks state, exception, or proof only — and only on a single live reading.

density

Alternate quiet slate space with compressed 4px-8px annotation systems and mono readouts.

signature
A continuous waveform trace baseline with one two-armed amber event bracket on the single reading under examination; calibration tick ruler bands, e-ink refresh ghosts, and erased-memory voids recur as structure on cool slate.
layout
grid
Stacked full-width horizontal registers (strata) on desktop; a dominant active-channel register over secondary readout clusters and a ledger, not a specimen pane + rail.
whitespace

Preserve quiet slate space between strata; always pad above titles.

density

Dense mono labels only at decision points.

responsive
Desktop stacks registers full-width with a readout cluster; tablet collapses the readout grid; mobile is a single column of diagnostic sheets that hides non-essential columns and never overflows.
breakpoints
mobile
390px
tablet
760px
desktop
1100px
ultrawide
1700px
guidance
do
  • Run the baseline trace through the composition and let it carry the structure.
  • Keep amber to the single live reading — one event bracket per strip.
  • Write labels as evidence: coordinates, amplitudes, confidences, timestamps, states.
  • Stack content as full-width registers; preserve quiet space between strata.
avoid
  • Don't recolour Sōma — no contour-plate-plus-corner-bracket layout, no specimen-pane + rail.
  • Don't light up more than one reading; don't let amber become a fill.
  • Don't add neon, glow, matrix rain, or hacker-dashboard motifs.
  • Don't box the nav into a pill bar or nest cards.
imagery
pairs with

graphite-schematic

summary
Graphite-schematic technique applied to a chart-recorder reading on a cool slate panel: a long horizontal oscillographic waveform with stacked register channels, calibration ruler bands, leader-line coordinate tags, and one warm signal-amber event bracket on the reading under examination. Read on slate, not bone or navy.
subjects
chart-recorder / EEG trace stripsneural-map waveform readingsstacked instrument register channelscalibration plateserased-memory gap diagrams
usage
One full-bleed horizontal trace-strip hero spanning the width; thumbnails and inline diagrams reuse the same bone-on-slate hairline waveform technique; keep amber to a single event bracket; never render the medium itself; no text.
katagami spec
# Litmus

## Philosophy

A reading-instrument reimagination of E-Ink Neurography Manuals: the e-paper memory manual read as a continuous chart-recorder trace on a cool slate panel. A baseline waveform threads the whole layout; one warm signal-amber event bracket marks the single reading under examination. Conceived from the source brief in parallel to the faithful refinement Sōma, not derived from it.

### Values

- one signal read at a time, across time — a temporal trace, not a 2D plate
- evidence-first hierarchy — coordinates, amplitudes, confidences, states beat marketing copy
- one live reading — amber is the heated stylus, never a fill or a second highlight
- horizontal registers stacked like a chart-recorder drum, never tiled equal cards
- machine intimacy through labels, calibration ticks, erased-memory gaps, and e-ink refresh ghosts

### Anti-Values

- not warm-bone (Sōma) and not ink-navy (the retired Fathom) — the ground is a cool slate reading panel by intent
- no contour-plate-plus-corner-bracket layout, no specimen-pane + right rail — that is the refinement's execution
- no neon glow, matrix rain, cyberpunk gradients, or hacker-dashboard motifs
- no borders, accent edges, boxed-in nav, or nested cards
- no equal SaaS card grids; no full-character anime posters

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#23262B` |
| bg_deep | `#1B1E22` |
| surface | `#2B2F35` |
| surface_2 | `#313640` |
| recess | `#1B1E22` |
| plate | `#262A30` |
| text | `#ECECE4` |
| muted | `#9AA0A0` |
| tick | `#5A6068` |
| border | `#3A3F45` |
| accent | `#E8A23D` |
| accent_deep | `#B6791F` |
| accent_tint | `#3A3326` |
| on_accent | `#1B1305` |
| success | `#6BB58C` |
| warning | `#E8A23D` |
| error | `#D9685A` |
| info | `#7FA8C9` |

### Typography

- **Base Size**: 17px
- **Body Font**: IBM Plex Sans
- **Heading Font**: Space Mono
- **Mono Font**: IBM Plex Mono
- **Heading Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: 0.01em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap

### Radii

- **Base**: 0px
- **Pane**: 16px
- **Pill**: 9999px

### Shadows

- **Sm**: 0 1px 2px rgba(0,0,0,.32)
- **Md**: 0 12px 30px rgba(0,0,0,.36)
- **Lg**: 0 26px 60px rgba(0,0,0,.44)

### Spacing

- **Base**: 4px
- **Scale**: ["4px","8px","12px","16px","24px","36px","56px","72px"]

### Surfaces

- **Ground**: cool slate reading panel #23262B
- **Channel**: lifted register #2B2F35 raised by soft flat shadow
- **Plate**: trace field #262A30
- **Recess**: #1B1E22 inset for form controls, below the ground
- **Erased Void**: dashed outline over rubbed hatch on #1B1E22

### Borders

- **Policy**: none — separate by space, the 24px annotation grid, recessed surfaces, and a soft flat shadow; never a card border, accent edge, or boxed-in nav

### Motion

- **Refresh**: 180ms steps(2,end) e-ink refresh ghost shift
- **Calibration**: 260ms ease-out tick drift, max 2px
- **Reveal**: 0.7s ease intersection reveal, gated behind .lit-anim; settled state visible with no JS
- **Reduced Motion**: respected — settled state is the default

## Rules

### Composition

Run one continuous baseline trace through the whole layout. Stack content as full-width horizontal registers (channels), each with an evidence header, a trace field, and a calibration ruler band. Avoid equal tiled card rows.

### Hierarchy

Operational state and evidence labels beat marketing copy. Amber marks state, exception, or proof only — and only on a single live reading.

### Density

Alternate quiet slate space with compressed 4px-8px annotation systems and mono readouts.

### Signature

A continuous waveform trace baseline with one two-armed amber event bracket on the single reading under examination; calibration tick ruler bands, e-ink refresh ghosts, and erased-memory voids recur as structure on cool slate.

## Layout

### Grid

Stacked full-width horizontal registers (strata) on desktop; a dominant active-channel register over secondary readout clusters and a ledger, not a specimen pane + rail.

### Whitespace

Preserve quiet slate space between strata; always pad above titles.

### Density

Dense mono labels only at decision points.

### Responsive

Desktop stacks registers full-width with a readout cluster; tablet collapses the readout grid; mobile is a single column of diagnostic sheets that hides non-essential columns and never overflows.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 760px
- **Desktop**: 1100px
- **Ultrawide**: 1700px

## Guidance

### Do

- Run the baseline trace through the composition and let it carry the structure.
- Keep amber to the single live reading — one event bracket per strip.
- Write labels as evidence: coordinates, amplitudes, confidences, timestamps, states.
- Stack content as full-width registers; preserve quiet space between strata.

### Don't

- Don't recolour Sōma — no contour-plate-plus-corner-bracket layout, no specimen-pane + rail.
- Don't light up more than one reading; don't let amber become a fill.
- Don't add neon, glow, matrix rain, or hacker-dashboard motifs.
- Don't box the nav into a pill bar or nest cards.

### Accessibility

Bone ink on slate clears AA for body and large text. Amber denotes state at readable sizes and is never the sole carrier of meaning — every state also has a text label. Focus warms the control to amber with a 2px ring. Motion is gated behind a class and prefers-reduced-motion is respected; the no-JS settled state shows the full page.

## Imagery Direction

### Pairs With

graphite-schematic

### Summary

Graphite-schematic technique applied to a chart-recorder reading on a cool slate panel: a long horizontal oscillographic waveform with stacked register channels, calibration ruler bands, leader-line coordinate tags, and one warm signal-amber event bracket on the reading under examination. Read on slate, not bone or navy.

### Subjects

- chart-recorder / EEG trace strips
- neural-map waveform readings
- stacked instrument register channels
- calibration plates
- erased-memory gap diagrams

### Usage

One full-bleed horizontal trace-strip hero spanning the width; thumbnails and inline diagrams reuse the same bone-on-slate hairline waveform technique; keep amber to a single event bracket; never render the medium itself; no text.
DESIGN.md
---
version: "alpha"
name: "Litmus"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#23262B"
  bg_deep: "#1B1E22"
  surface: "#2B2F35"
  surface_2: "#313640"
  recess: "#1B1E22"
  plate: "#262A30"
  text: "#ECECE4"
  muted: "#9AA0A0"
  tick: "#5A6068"
  border: "#3A3F45"
  accent: "#E8A23D"
  accent_deep: "#B6791F"
  accent_tint: "#3A3326"
  on_accent: "#1B1305"
  success: "#6BB58C"
  warning: "#E8A23D"
  error: "#D9685A"
  info: "#7FA8C9"
typography:
  headline-lg:
    fontFamily: "Space Mono"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "0.01em"
  headline-md:
    fontFamily: "Space Mono"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "0.01em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "0.01em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  base: "0px"
  pane: "16px"
  pill: "9999px"
spacing:
  base: "4px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "36px"
  3xl: "56px"
  4xl: "72px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-bg_deep:
    backgroundColor: "{colors.bg_deep}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_2:
    backgroundColor: "{colors.surface_2}"
  color-reference-recess:
    backgroundColor: "{colors.recess}"
  color-reference-plate:
    backgroundColor: "{colors.plate}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-tick:
    backgroundColor: "{colors.tick}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent_deep:
    backgroundColor: "{colors.accent_deep}"
  color-reference-accent_tint:
    backgroundColor: "{colors.accent_tint}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "#000000"
    typography: "{typography.label-md}"
    rounded: "16px"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "16px"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "16px"
    height: "44px"
---

# Litmus

## Overview

A reading-instrument reimagination of E-Ink Neurography Manuals: the e-paper memory manual read as a continuous chart-recorder trace on a cool slate panel. A baseline waveform threads the whole layout; one warm signal-amber event bracket marks the single reading under examination. Conceived from the source brief in parallel to the faithful refinement Sōma, not derived from it.

### Values

- one signal read at a time, across time — a temporal trace, not a 2D plate
- evidence-first hierarchy — coordinates, amplitudes, confidences, states beat marketing copy
- one live reading — amber is the heated stylus, never a fill or a second highlight
- horizontal registers stacked like a chart-recorder drum, never tiled equal cards
- machine intimacy through labels, calibration ticks, erased-memory gaps, and e-ink refresh ghosts

### Anti-Values

- not warm-bone (Sōma) and not ink-navy (the retired Fathom) — the ground is a cool slate reading panel by intent
- no contour-plate-plus-corner-bracket layout, no specimen-pane + right rail — that is the refinement's execution
- no neon glow, matrix rain, cyberpunk gradients, or hacker-dashboard motifs
- no borders, accent edges, boxed-in nav, or nested cards
- no equal SaaS card grids; no full-character anime posters

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| bg | `#23262B` |
| bg_deep | `#1B1E22` |
| surface | `#2B2F35` |
| surface_2 | `#313640` |
| recess | `#1B1E22` |
| plate | `#262A30` |
| text | `#ECECE4` |
| muted | `#9AA0A0` |
| tick | `#5A6068` |
| border | `#3A3F45` |
| accent | `#E8A23D` |
| accent_deep | `#B6791F` |
| accent_tint | `#3A3326` |
| on_accent | `#1B1305` |
| success | `#6BB58C` |
| warning | `#E8A23D` |
| error | `#D9685A` |
| info | `#7FA8C9` |

## Typography

- **Headline-Lg**: Space Mono, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Space Mono, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `4px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `36px`
- **3xl**: `56px`
- **4xl**: `72px`

### Grid

Stacked full-width horizontal registers (strata) on desktop; a dominant active-channel register over secondary readout clusters and a ledger, not a specimen pane + rail.

### Whitespace

Preserve quiet slate space between strata; always pad above titles.

### Density

Dense mono labels only at decision points.

### Responsive

Desktop stacks registers full-width with a readout cluster; tablet collapses the readout grid; mobile is a single column of diagnostic sheets that hides non-essential columns and never overflows.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 760px
- **Desktop**: 1100px
- **Ultrawide**: 1700px

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 2px rgba(0,0,0,.32)
- **Md**: 0 12px 30px rgba(0,0,0,.36)
- **Lg**: 0 26px 60px rgba(0,0,0,.44)

## Shapes

### Rounded

- **Base**: `0px`
- **Pane**: `16px`
- **Pill**: `9999px`

### Surfaces

- **Ground**: cool slate reading panel #23262B
- **Channel**: lifted register #2B2F35 raised by soft flat shadow
- **Plate**: trace field #262A30
- **Recess**: #1B1E22 inset for form controls, below the ground
- **Erased Void**: dashed outline over rubbed hatch on #1B1E22

### Borders

- **Policy**: none — separate by space, the 24px annotation grid, recessed surfaces, and a soft flat shadow; never a card border, accent edge, or boxed-in nav

## Components

### Composition

Run one continuous baseline trace through the whole layout. Stack content as full-width horizontal registers (channels), each with an evidence header, a trace field, and a calibration ruler band. Avoid equal tiled card rows.

### Hierarchy

Operational state and evidence labels beat marketing copy. Amber marks state, exception, or proof only — and only on a single live reading.

### Density

Alternate quiet slate space with compressed 4px-8px annotation systems and mono readouts.

### Signature

A continuous waveform trace baseline with one two-armed amber event bracket on the single reading under examination; calibration tick ruler bands, e-ink refresh ghosts, and erased-memory voids recur as structure on cool slate.

## 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-019ef800-89b7-7112-af1c-8cc1d276b43a/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 Run the baseline trace through the composition and let it carry the structure.
- Do Keep amber to the single live reading — one event bracket per strip.
- Do Write labels as evidence: coordinates, amplitudes, confidences, timestamps, states.
- Do Stack content as full-width registers; preserve quiet space between strata.
- Don't Don't recolour Sōma — no contour-plate-plus-corner-bracket layout, no specimen-pane + rail.
- Don't Don't light up more than one reading; don't let amber become a fill.
- Don't Don't add neon, glow, matrix rain, or hacker-dashboard motifs.
- Don't Don't box the nav into a pill bar or nest cards.

### Accessibility

Bone ink on slate clears AA for body and large text. Amber denotes state at readable sizes and is never the sole carrier of meaning — every state also has a text label. Focus warms the control to amber with a 2px ring. Motion is gated behind a class and prefers-reduced-motion is respected; the no-JS settled state shows the full page.

## Imagery Direction

### Pairs With

graphite-schematic

### Summary

Graphite-schematic technique applied to a chart-recorder reading on a cool slate panel: a long horizontal oscillographic waveform with stacked register channels, calibration ruler bands, leader-line coordinate tags, and one warm signal-amber event bracket on the reading under examination. Read on slate, not bone or navy.

### Subjects

- chart-recorder / EEG trace strips
- neural-map waveform readings
- stacked instrument register channels
- calibration plates
- erased-memory gap diagrams

### Usage

One full-bleed horizontal trace-strip hero spanning the width; thumbnails and inline diagrams reuse the same bone-on-slate hairline waveform technique; keep amber to a single event bracket; never render the medium itself; no text.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "litmus",
  "type": "registry:theme",
  "title": "Litmus shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#23262B",
      "foreground": "#ECECE4",
      "card": "#2B2F35",
      "card-foreground": "#ECECE4",
      "popover": "#2B2F35",
      "popover-foreground": "#ECECE4",
      "primary": "#ECECE4",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#9AA0A0",
      "muted-foreground": "#ECECE4",
      "accent": "#E8A23D",
      "accent-foreground": "#ffffff",
      "destructive": "#D9685A",
      "border": "#3A3F45",
      "input": "#3A3F45",
      "ring": "#E8A23D",
      "chart-1": "#ECECE4",
      "chart-2": "#f4f4f5",
      "chart-3": "#E8A23D",
      "chart-4": "#6BB58C",
      "chart-5": "#E8A23D",
      "sidebar": "#2B2F35",
      "sidebar-foreground": "#ECECE4",
      "sidebar-primary": "#ECECE4",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#7FA8C9",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#3A3F45",
      "sidebar-ring": "#E8A23D",
      "radius": "0px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#ECECE4",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#E8A23D",
      "accent-foreground": "#ffffff",
      "destructive": "#D9685A",
      "border": "#303642",
      "input": "#303642",
      "ring": "#E8A23D",
      "chart-1": "#ECECE4",
      "chart-2": "#f4f4f5",
      "chart-3": "#E8A23D",
      "chart-4": "#6BB58C",
      "chart-5": "#E8A23D",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#ECECE4",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#E8A23D",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#E8A23D",
      "radius": "0px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ef800-89b7-7112-af1c-8cc1d276b43a",
    "slug": "litmus",
    "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": {
      "colors": [
        "accent",
        "accent_deep",
        "accent_tint",
        "bg",
        "bg_deep",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "plate",
        "recess",
        "success",
        "surface",
        "surface_2",
        "text",
        "tick",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "mono_font"
      ],
      "radii": [
        "base",
        "pane",
        "pill"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "channel",
        "erased_void",
        "ground",
        "plate",
        "recess"
      ],
      "borders": [
        "policy"
      ],
      "motion": [
        "calibration",
        "reduced_motion",
        "refresh",
        "reveal"
      ]
    }
  }
}
```
in the wild

embodiments

bespoke marketing landingopen full page ↗
landing · litmus
DESIGN.md

at a glance

Typography

headline-lgSpace Mono · 33px · 700

The quick brown fox jumps

headline-mdSpace Mono · 27px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 17px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

Agent-generated

remix lane

try a remix

Keep Litmusand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.

UI language · fixed
Litmus
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

Evolved from
related

More like this