back to gallery
design language·meridian

Meridian

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 clear-air seasonal-chart language: every metric is read like an almanac reads the day, as a neon arc climbing a tick-scale. The altitude arc is the hero chart and the progress primitive at once — loading, capacity, countdown and live values all render as the same filling arc, recoloured by role. Built for civic almanacs and live festival operations boards.
values
clear-air white groundneon used like a surveyor's pentabular-figure readoutsone arc primitive for every metricmeasured baseline-and-scale grid
anti-values
×muted or greyed accents×borders and accent edges×pastel background washes×the generic SaaS hero×untabular numbers that break the scale
tokens
colors12 items
bg
#FFFFFF
surface
#FFFFFF
surface_sunk
#F6F8FB
text
#0A0D11
muted
#4B5662
border
#E0E6EE
accent
#15D66B
on_accent
#0A0D11
info
#2E84FF
warning
#FFB000
error
#FF3B47
success
#15D66B
typography8 items
base size
17px
body font
Inter
heading font
Space Grotesk
mono font
IBM Plex Mono
heading weight
700
heading transform
none
letter spacing
-0.02em
google fonts url
https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
radii6 items
base
16px
card
16px
panel
24px
pill
9999px
flat
0px
scale
0, 16, 24, 9999
shadows2 items
card
0 1px 0 rgba(10,13,17,.04), 0 18px 44px -34px rgba(10,13,17,.30)
panel
0 1px 0 rgba(10,13,17,.04), 0 26px 60px -42px rgba(10,13,17,.30)
spacing2 items
base
4px
scale
6, 12, 20, 32, 52, 84
surfaces4 items
page
#FFFFFF
card
#FFFFFF
sunk
#F6F8FB
separation
soft-shadow + space, never a border
borders2 items
default
none
structural
1.5px ink hairline under table header; 1.5px datum baseline under charts only
motion3 items
reveal
sections rise + fade on scroll
arc
arcs read as filling toward their value
reduced motion
honoured; settled state is the default
rules
composition
A measured baseline-and-scale grid: a thin tick-scale ruler organizes the top of each section; the hero altitude-arc anchors the top; charts and instrument cards fall into a calm asymmetric grid with generous gutters.
hierarchy

Titles padded above; values right-aligned to the scale in tabular mono; one neon accent leads, the rest are quieter chips.

density

balanced — generous whitespace, instrument cards breathe

signature
Altitude arc on a tick-scale: a faint graduated arc with a neon fill; recurs as the gauge/progress/countdown primitive. Instrument cards carry a neon arc-glyph in the title row; nav is a tick-scale of words; the primary button is a 'set heading' pill with a degree-tick mark.
layout
grid

baseline-and-scale; tick-scale ruler per section; asymmetric module grid below the hero

whitespace

generous; always pad above titles

density

balanced

responsive
ultra-wide caps and centres content, full-bleed hero spans 100vw; mobile stacks to single column, charts reflow with minmax(0,1fr), non-essential reading columns hidden, no horizontal overflow
breakpoints
mobile
390px
stack
880px
table collapse
680px
ultrawide
2200px
guidance
do
  • Read every metric through the arc and keep the progress primitive the same shape as the hero chart
  • Keep the ground clear white; let neon appear only in the instrument layer
  • Set every figure in tabular mono so columns and scales align
  • Reserve amber for peaks and alerts; green carries success and primary action
avoid
  • Mute the neons to grey or wash the background with pastel
  • Add borders, accent edges, or decorative sidelines to cards
  • Stack two CTAs or fall back to the generic SaaS hero
  • Use emoji or symbol glyphs on buttons
imagery
pairs with

meridian

summary
High-key early-summer-dawn photography with a crisp neon vector instrument layer drawn edge to edge — altitude arcs, degree-tick scales, an angle-mark wedge, a datum baseline. The photographic light stays airy and atmospheric; the neon comes only from the precise annotation layer.
subjects
a dawn river with koinobori carp streamers on a polean open early-summer sky over fresh greeneryfestival grounds at first light
usage

One full-bleed hero per landing; the altitude-arc overlay echoes the UI's signature arc.

katagami spec
# Meridian

## Philosophy

A clear-air seasonal-chart language: every metric is read like an almanac reads the day, as a neon arc climbing a tick-scale. The altitude arc is the hero chart and the progress primitive at once — loading, capacity, countdown and live values all render as the same filling arc, recoloured by role. Built for civic almanacs and live festival operations boards.

### Values

- clear-air white ground
- neon used like a surveyor's pen
- tabular-figure readouts
- one arc primitive for every metric
- measured baseline-and-scale grid

### Anti-Values

- muted or greyed accents
- borders and accent edges
- pastel background washes
- the generic SaaS hero
- untabular numbers that break the scale

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#FFFFFF` |
| surface | `#FFFFFF` |
| surface_sunk | `#F6F8FB` |
| text | `#0A0D11` |
| muted | `#4B5662` |
| border | `#E0E6EE` |
| accent | `#15D66B` |
| on_accent | `#0A0D11` |
| info | `#2E84FF` |
| warning | `#FFB000` |
| error | `#FF3B47` |
| success | `#15D66B` |

### Typography

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

### Radii

- **Base**: 16px
- **Card**: 16px
- **Panel**: 24px
- **Pill**: 9999px
- **Flat**: 0px
- **Scale**: [0,16,24,9999]

### Shadows

- **Card**: 0 1px 0 rgba(10,13,17,.04), 0 18px 44px -34px rgba(10,13,17,.30)
- **Panel**: 0 1px 0 rgba(10,13,17,.04), 0 26px 60px -42px rgba(10,13,17,.30)

### Spacing

- **Base**: 4px
- **Scale**: [6,12,20,32,52,84]

### Surfaces

- **Page**: #FFFFFF
- **Card**: #FFFFFF
- **Sunk**: #F6F8FB
- **Separation**: soft-shadow + space, never a border

### Borders

- **Default**: none
- **Structural**: 1.5px ink hairline under table header; 1.5px datum baseline under charts only

### Motion

- **Reveal**: sections rise + fade on scroll
- **Arc**: arcs read as filling toward their value
- **Reduced Motion**: honoured; settled state is the default

## Rules

### Composition

A measured baseline-and-scale grid: a thin tick-scale ruler organizes the top of each section; the hero altitude-arc anchors the top; charts and instrument cards fall into a calm asymmetric grid with generous gutters.

### Hierarchy

Titles padded above; values right-aligned to the scale in tabular mono; one neon accent leads, the rest are quieter chips.

### Density

balanced — generous whitespace, instrument cards breathe

### Signature

Altitude arc on a tick-scale: a faint graduated arc with a neon fill; recurs as the gauge/progress/countdown primitive. Instrument cards carry a neon arc-glyph in the title row; nav is a tick-scale of words; the primary button is a 'set heading' pill with a degree-tick mark.

## Layout

### Grid

baseline-and-scale; tick-scale ruler per section; asymmetric module grid below the hero

### Whitespace

generous; always pad above titles

### Density

balanced

### Responsive

ultra-wide caps and centres content, full-bleed hero spans 100vw; mobile stacks to single column, charts reflow with minmax(0,1fr), non-essential reading columns hidden, no horizontal overflow

### Breakpoints

- **Mobile**: 390px
- **Stack**: 880px
- **Table Collapse**: 680px
- **Ultrawide**: 2200px

## Guidance

### Do

- Read every metric through the arc and keep the progress primitive the same shape as the hero chart
- Keep the ground clear white; let neon appear only in the instrument layer
- Set every figure in tabular mono so columns and scales align
- Reserve amber for peaks and alerts; green carries success and primary action

### Don't

- Mute the neons to grey or wash the background with pastel
- Add borders, accent edges, or decorative sidelines to cards
- Stack two CTAs or fall back to the generic SaaS hero
- Use emoji or symbol glyphs on buttons

### Accessibility

High contrast: ink #0A0D11 on white; neon accents carry a tabular value or a text label, never colour alone; tap targets generous; prefers-reduced-motion honoured; settled state visible with no JavaScript.

## Imagery Direction

### Pairs With

meridian

### Summary

High-key early-summer-dawn photography with a crisp neon vector instrument layer drawn edge to edge — altitude arcs, degree-tick scales, an angle-mark wedge, a datum baseline. The photographic light stays airy and atmospheric; the neon comes only from the precise annotation layer.

### Subjects

- a dawn river with koinobori carp streamers on a pole
- an open early-summer sky over fresh greenery
- festival grounds at first light

### Usage

One full-bleed hero per landing; the altitude-arc overlay echoes the UI's signature arc.
DESIGN.md
---
version: "alpha"
name: "Meridian"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#FFFFFF"
  surface: "#FFFFFF"
  surface_sunk: "#F6F8FB"
  text: "#0A0D11"
  muted: "#4B5662"
  border: "#E0E6EE"
  accent: "#15D66B"
  on_accent: "#0A0D11"
  info: "#2E84FF"
  warning: "#FFB000"
  error: "#FF3B47"
  success: "#15D66B"
typography:
  headline-lg:
    fontFamily: "Space Grotesk"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Space Grotesk"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Inter"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  base: "16px"
  card: "16px"
  panel: "24px"
  pill: "9999px"
  flat: "0px"
  scale: "0px"
spacing:
  base: "4px"
  xs: "6px"
  sm: "12px"
  md: "20px"
  lg: "32px"
  xl: "52px"
  2xl: "84px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_sunk:
    backgroundColor: "{colors.surface_sunk}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  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"
---

# Meridian

## Overview

A clear-air seasonal-chart language: every metric is read like an almanac reads the day, as a neon arc climbing a tick-scale. The altitude arc is the hero chart and the progress primitive at once — loading, capacity, countdown and live values all render as the same filling arc, recoloured by role. Built for civic almanacs and live festival operations boards.

### Values

- clear-air white ground
- neon used like a surveyor's pen
- tabular-figure readouts
- one arc primitive for every metric
- measured baseline-and-scale grid

### Anti-Values

- muted or greyed accents
- borders and accent edges
- pastel background washes
- the generic SaaS hero
- untabular numbers that break the scale

## 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 | `#FFFFFF` |
| surface | `#FFFFFF` |
| surface_sunk | `#F6F8FB` |
| text | `#0A0D11` |
| muted | `#4B5662` |
| border | `#E0E6EE` |
| accent | `#15D66B` |
| on_accent | `#0A0D11` |
| info | `#2E84FF` |
| warning | `#FFB000` |
| error | `#FF3B47` |
| success | `#15D66B` |

## Typography

- **Headline-Lg**: Space Grotesk, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Space Grotesk, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 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**: `6px`
- **Sm**: `12px`
- **Md**: `20px`
- **Lg**: `32px`
- **Xl**: `52px`
- **2xl**: `84px`

### Grid

baseline-and-scale; tick-scale ruler per section; asymmetric module grid below the hero

### Whitespace

generous; always pad above titles

### Density

balanced

### Responsive

ultra-wide caps and centres content, full-bleed hero spans 100vw; mobile stacks to single column, charts reflow with minmax(0,1fr), non-essential reading columns hidden, no horizontal overflow

### Breakpoints

- **Mobile**: 390px
- **Stack**: 880px
- **Table Collapse**: 680px
- **Ultrawide**: 2200px

## Elevation & Depth

### Shadows

- **Card**: 0 1px 0 rgba(10,13,17,.04), 0 18px 44px -34px rgba(10,13,17,.30)
- **Panel**: 0 1px 0 rgba(10,13,17,.04), 0 26px 60px -42px rgba(10,13,17,.30)

## Shapes

### Rounded

- **Base**: `16px`
- **Card**: `16px`
- **Panel**: `24px`
- **Pill**: `9999px`
- **Flat**: `0px`
- **Scale**: `0px`

### Surfaces

- **Page**: #FFFFFF
- **Card**: #FFFFFF
- **Sunk**: #F6F8FB
- **Separation**: soft-shadow + space, never a border

### Borders

- **Default**: none
- **Structural**: 1.5px ink hairline under table header; 1.5px datum baseline under charts only

## Components

### Composition

A measured baseline-and-scale grid: a thin tick-scale ruler organizes the top of each section; the hero altitude-arc anchors the top; charts and instrument cards fall into a calm asymmetric grid with generous gutters.

### Hierarchy

Titles padded above; values right-aligned to the scale in tabular mono; one neon accent leads, the rest are quieter chips.

### Density

balanced — generous whitespace, instrument cards breathe

### Signature

Altitude arc on a tick-scale: a faint graduated arc with a neon fill; recurs as the gauge/progress/countdown primitive. Instrument cards carry a neon arc-glyph in the title row; nav is a tick-scale of words; the primary button is a 'set heading' pill with a degree-tick mark.

## 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-019efb77-0301-7d12-af3c-b85d7288cb34/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 Read every metric through the arc and keep the progress primitive the same shape as the hero chart
- Do Keep the ground clear white; let neon appear only in the instrument layer
- Do Set every figure in tabular mono so columns and scales align
- Do Reserve amber for peaks and alerts; green carries success and primary action
- Don't Mute the neons to grey or wash the background with pastel
- Don't Add borders, accent edges, or decorative sidelines to cards
- Don't Stack two CTAs or fall back to the generic SaaS hero
- Don't Use emoji or symbol glyphs on buttons

### Accessibility

High contrast: ink #0A0D11 on white; neon accents carry a tabular value or a text label, never colour alone; tap targets generous; prefers-reduced-motion honoured; settled state visible with no JavaScript.

## Imagery Direction

### Pairs With

meridian

### Summary

High-key early-summer-dawn photography with a crisp neon vector instrument layer drawn edge to edge — altitude arcs, degree-tick scales, an angle-mark wedge, a datum baseline. The photographic light stays airy and atmospheric; the neon comes only from the precise annotation layer.

### Subjects

- a dawn river with koinobori carp streamers on a pole
- an open early-summer sky over fresh greenery
- festival grounds at first light

### Usage

One full-bleed hero per landing; the altitude-arc overlay echoes the UI's signature arc.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "meridian",
  "type": "registry:theme",
  "title": "Meridian shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FFFFFF",
      "foreground": "#0A0D11",
      "card": "#FFFFFF",
      "card-foreground": "#0A0D11",
      "popover": "#FFFFFF",
      "popover-foreground": "#0A0D11",
      "primary": "#0A0D11",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#4B5662",
      "muted-foreground": "#0A0D11",
      "accent": "#15D66B",
      "accent-foreground": "#ffffff",
      "destructive": "#FF3B47",
      "border": "#E0E6EE",
      "input": "#E0E6EE",
      "ring": "#15D66B",
      "chart-1": "#0A0D11",
      "chart-2": "#f4f4f5",
      "chart-3": "#15D66B",
      "chart-4": "#15D66B",
      "chart-5": "#FFB000",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#0A0D11",
      "sidebar-primary": "#0A0D11",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2E84FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#E0E6EE",
      "sidebar-ring": "#15D66B",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#0A0D11",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#15D66B",
      "accent-foreground": "#ffffff",
      "destructive": "#FF3B47",
      "border": "#303642",
      "input": "#303642",
      "ring": "#15D66B",
      "chart-1": "#0A0D11",
      "chart-2": "#f4f4f5",
      "chart-3": "#15D66B",
      "chart-4": "#15D66B",
      "chart-5": "#FFB000",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#0A0D11",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#15D66B",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#15D66B",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efb77-0301-7d12-af3c-b85d7288cb34",
    "slug": "meridian",
    "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",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "success",
        "surface",
        "surface_sunk",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "mono_font"
      ],
      "radii": [
        "base",
        "card",
        "flat",
        "panel",
        "pill",
        "scale"
      ],
      "shadows": [
        "card",
        "panel"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "card",
        "page",
        "separation",
        "sunk"
      ],
      "borders": [
        "default",
        "structural"
      ],
      "motion": [
        "arc",
        "reduced_motion",
        "reveal"
      ]
    }
  }
}
```
in the wild

embodiments

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

at a glance

Typography

headline-lgSpace Grotesk · 33px · 700

The quick brown fox jumps

headline-mdSpace Grotesk · 27px · 600

The quick brown fox jumps

body-mdInter · 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

produced by claude-opus-4-8 · sourced by claude-opus-4-8 · images by gpt-image-2

remix lane

try a remix

Keep Meridianand 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
Meridian
Palette
Art style
Landing Page
live preview · recolored + filled
related

More like this