back to gallery
design language·nocturne-grid-editorial

Nocturne Grid Editorial

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
Nocturne Grid Editorial is a digital editorial language for magazines, journals, and cultural publications that want the intellectual rigor of Swiss modernism without inheriting its white-paper brightness. It treats the screen as a dark press sheet: black and graphite fields hold precise columns, restrained accents, and disciplined typography that feels objective at a glance yet cinematic in atmosphere. The goal is not decorative darkness. The goal is compositional focus. Dense stories, issue lineups, contributor notes, metrics, and production controls all live inside a grid system that privileges alignment, interval, and pacing over ornament. Where many dark interfaces rely on glowing gradients and soft cards, this language insists on crisp structure, hard seams, and a deliberate editorial rhythm. The visual drama comes from scale contrast, measured emptiness, and the tension between very fine rules and oversized grotesk headlines. It borrows from International Typographic Style through asymmetry, modular grids, left alignment, and hierarchy created by scale rather than boxes. It borrows from magazine design through sequencing, cover-line pacing, and the idea that every panel is part of a spread, not a standalone widget. In practice, that means interfaces should feel curated and typeset: captions sit in narrow columns, utilities are reduced to small uppercase labels, and every block looks placed rather than merely arranged. The dark palette is handled ergonomically, with softened contrast bands and controlled accent use so long reading sessions remain comfortable. This language is for editorial systems where authority comes from restraint, not exuberance.
values
Grid discipline over freeform composition; every major edge should lock to a repeatable column or baseline system.Objective typographic hierarchy; size, weight, and spacing create emphasis before color or illustration does.Asymmetric balance; layouts should feel dynamic through offset columns and unequal spans rather than centered symmetry.Atmospheric darkness with readable contrast; dark surfaces should support reading instead of turning the interface into neon theater.Editorial pacing; alternate dense information bands with large quiet fields so the interface reads like a sequence of spreads.Functional reduction; controls, filters, and metadata should be compact, precise, and subordinate to the content narrative.Material honesty; rules, borders, and separators should be visibly intentional rather than hidden under shadows.Typographic seriousness; grotesk headlines, clean body copy, and tabular metadata should feel like a publication system.
anti-values
×Soft generic SaaS cards with floating shadows and center-aligned marketing layouts.×Glow-heavy cyberpunk dark mode that reduces legibility and overwhelms editorial content.×Playful rounded components that weaken the sense of institutional rigor.×Overillustrated interfaces where decoration competes with the reading order.×Color-first hierarchy that makes structure depend on accents instead of typography and alignment.
tokens
colors16 items
primary
#F3F1EA
secondary
#A7B0B8
accent
#D9FF66
background
#0A0B0D
surface
#111317
text
#F5F3EE
muted
#8B919A
border
#2A2F36
error
#FF6B6B
success
#69E2A1
warning
#F5C86A
info
#7DB7FF
surface_alt
#171A1F
surface_emphasis
#1E232A
ink_soft
#C9CDD3
rule_bright
#3C424C
typography10 items
heading font
Schibsted Grotesk, Arial Narrow, sans-serif
body font
Schibsted Grotesk, Arial, sans-serif
mono font
IBM Plex Mono, monospace
base size
16px
scale ratio
1.2
line height
1.58
letter spacing
0.01em
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Schibsted+Grotesk:wght@400;500;700;800;900&display=swap
weights
regular 400·medium 500·bold 700·black 900
roles
display Schibsted Grotesk 800-900 uppercase·body Schibsted Grotesk 400-500·data IBM Plex Mono 500 with tabular numerals
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
radii6 items
none
0
sm
2px
md
6px
lg
12px
xl
18px
full
9999px
shadows3 items
sm
0 1px 0 rgba(255,255,255,0.04)
md
0 0 0 1px rgba(255,255,255,0.02), 0 18px 48px rgba(0,0,0,0.24)
lg
0 0 0 1px rgba(255,255,255,0.03), 0 30px 80px rgba(0,0,0,0.38)
surfaces3 items
treatment
gradient
card style
layered graphite bands with subtle top-to-bottom tonal shifts and inset separators, never floating bright cards
bg pattern
grid
borders4 items
default width
1px
accent width
2px
style
solid
character
precise editorial rules; hairline seams and dividers create structure more often than shadows do
motion3 items
duration
180ms
easing
cubic-bezier(0.22, 1, 0.36, 1)
philosophy
deliberate
rules
composition
Use a 12-column frame on desktop with one dominant content slab spanning five to seven columns and supporting material occupying narrow side columns. Keep all primary modules flush to the same outer rails. Treat every horizontal band as part of a spread, using top and bottom rules to establish pacing. Never center a major heading; align it to the left column edge and let scale create drama. Use tonal surface shifts to separate layers instead of detached cards. Reserve the accent color for issue state, one or two key metrics, and active selection only. Place metadata in small uppercase or monospace fragments at the start or end of rows rather than inside badges whenever possible. Long-form content blocks should include narrow measure captions or side annotations to reinforce the editorial structure.
hierarchy
Hierarchy begins with headline scale, then with column span, then with tonal contrast, and only lastly with color. Primary headlines should be all-caps or near-caps, large enough to feel poster-like, with tight line-height and slightly expanded tracking. Secondary headings should use lighter weights but preserve the same alignment discipline. Body copy should sit in comfortable measures with softened white text on deep charcoal instead of pure white on pure black. Metadata, timestamps, and counts should use the mono role and appear smaller but denser, creating a clear distinction between narrative text and production data. Interactive controls should look integrated into the grid through rules and label placement, not through pill-heavy component styling.
density
Moderate-to-dense. The language supports substantial editorial information, but density is managed through disciplined spacing intervals and alternating quiet zones. Crowding is acceptable inside data bands if line alignment remains exact; decorative clutter is never acceptable.
signature patterns
Persistent vertical column rules using pseudo-elements or border lines that make multiple sections feel printed on one grid sheet.Section headers rendered as compact mono overlines above very large uppercase grotesk titles, creating a cover-line stack.Tonal band panels with inset top and bottom rules instead of floating drop-shadow cards.Edge-aligned metadata rails where issue codes, timestamps, and status labels sit in narrow mono columns beside main content.Accent color used as thin progress bars, active row markers, and numeric emphasis only, never as large fills.
layout
density
Use medium-high information density appropriate for newsroom planning, issue assembly, and editorial review. The interface should feel serious and inhabited, but every line must still have breathing room through consistent baseline spacing.
grid
Desktop uses a 12-column grid inside a max-width of 1480px with 24px gutters and 40px outer margins. Major spans commonly use 7/3/2 or 6/4/2 proportions. Tablet landscape reduces to 8 columns with 20px gutters. Tablet portrait reduces to 4 columns with 16px gutters. Phone collapses to a single column with stacked content and horizontally scrollable tables inside framed containers.
breakpoints
Desktop default at 1200px and above. First breakpoint at 1024px rebalances the spread to 8 columns and stacks the right rail beneath the hero band. Second breakpoint at 768px moves all multi-column analytic bands into vertical flow, preserving metadata rails as top rows. Third breakpoint at 480px collapses navigation, converts stat strips into two-column cards, and keeps tables and timeline lanes scrollable within border frames.
whitespace
Whitespace should feel deliberate and editorial rather than luxurious. Use large quiet margins around lead stories and tighter spacing inside operational panels. Preserve visible gutters; never let modules blur together. Empty space should reinforce reading order the way margins do in a printed spread.
responsive
All layout declarations belong to CSS classes. No inline grid or flex styling. Headline scales step down sharply at each breakpoint, while metadata rails convert from side columns to horizontal strips. Dense tabular regions gain overflow containers instead of shrinking text below readable thresholds.
guidance
do
  • Do begin each major section with a mono overline and a decisive headline that anchors the left edge.
  • Do keep dividers visible; the language depends on rules and seams to communicate order.
  • Do use asymmetry intentionally by pairing wide narrative modules with narrow factual rails.
  • Do keep accent color scarce and meaningful, ideally attached to progress, selection, or one decisive numeric signal.
  • Do preserve long reading comfort with softened text values on charcoal surfaces rather than absolute black-white extremes.
  • Do style all form controls as part of the typographic system, with labels, rules, and focus states that match the editorial grid.
  • Do let tables, schedules, and contributor lists look typeset, with exact alignment and tabular figures.
  • Do create pacing between expansive feature modules and compressed utility rows so the interface feels sequenced like a magazine.
  • Do keep hover and focus feedback subtle but crisp, relying on rule brightness, accent slivers, and tonal lifts.
  • Do use mono metadata to clarify issue numbers, deadlines, and status without competing with narrative hierarchy.
avoid
  • Do not round everything into friendly pills; softness erodes the editorial authority of the system.
  • Do not use large accent-color backgrounds behind content blocks.
  • Do not center hero copy, KPI rows, or major calls to action.
  • Do not hide structure behind oversized blur and shadow effects.
  • Do not mix decorative serif display faces into the primary hierarchy.
  • Do not collapse all content into identical cards; preserve wide bands, rails, and asymmetry.
  • Do not let metadata badges become louder than story titles or contributor names.
  • Do not reduce table text until it becomes unreadable on mobile; allow controlled scrolling instead.
  • Do not leave native browser chrome on selects, inputs, checkboxes, or radio controls.
  • Do not use more than one or two accent moments per viewport band.
katagami spec
# Nocturne Grid Editorial

## Philosophy

Nocturne Grid Editorial is a digital editorial language for magazines, journals, and cultural publications that want the intellectual rigor of Swiss modernism without inheriting its white-paper brightness. It treats the screen as a dark press sheet: black and graphite fields hold precise columns, restrained accents, and disciplined typography that feels objective at a glance yet cinematic in atmosphere. The goal is not decorative darkness. The goal is compositional focus. Dense stories, issue lineups, contributor notes, metrics, and production controls all live inside a grid system that privileges alignment, interval, and pacing over ornament. Where many dark interfaces rely on glowing gradients and soft cards, this language insists on crisp structure, hard seams, and a deliberate editorial rhythm. The visual drama comes from scale contrast, measured emptiness, and the tension between very fine rules and oversized grotesk headlines. It borrows from International Typographic Style through asymmetry, modular grids, left alignment, and hierarchy created by scale rather than boxes. It borrows from magazine design through sequencing, cover-line pacing, and the idea that every panel is part of a spread, not a standalone widget. In practice, that means interfaces should feel curated and typeset: captions sit in narrow columns, utilities are reduced to small uppercase labels, and every block looks placed rather than merely arranged. The dark palette is handled ergonomically, with softened contrast bands and controlled accent use so long reading sessions remain comfortable. This language is for editorial systems where authority comes from restraint, not exuberance.

### Values

- Grid discipline over freeform composition; every major edge should lock to a repeatable column or baseline system.
- Objective typographic hierarchy; size, weight, and spacing create emphasis before color or illustration does.
- Asymmetric balance; layouts should feel dynamic through offset columns and unequal spans rather than centered symmetry.
- Atmospheric darkness with readable contrast; dark surfaces should support reading instead of turning the interface into neon theater.
- Editorial pacing; alternate dense information bands with large quiet fields so the interface reads like a sequence of spreads.
- Functional reduction; controls, filters, and metadata should be compact, precise, and subordinate to the content narrative.
- Material honesty; rules, borders, and separators should be visibly intentional rather than hidden under shadows.
- Typographic seriousness; grotesk headlines, clean body copy, and tabular metadata should feel like a publication system.

### Anti-Values

- Soft generic SaaS cards with floating shadows and center-aligned marketing layouts.
- Glow-heavy cyberpunk dark mode that reduces legibility and overwhelms editorial content.
- Playful rounded components that weaken the sense of institutional rigor.
- Overillustrated interfaces where decoration competes with the reading order.
- Color-first hierarchy that makes structure depend on accents instead of typography and alignment.

### Visual Character

- Oversized uppercase grotesk headlines that sit flush-left in wide dark fields with generous tracking and tight vertical rhythm.
- Hairline grid rules and column dividers that remain visible across panels, making the entire screen feel typeset on a shared scaffold.
- Stacked charcoal surface bands with subtle tonal separation instead of floating bright cards, creating the feeling of layered print spreads.
- Small monospace or tabular metadata labels in caps, used as issue codes, timestamps, and section markers along the edges of content.
- Asymmetric multi-column compositions where one dominant story block is counterweighted by narrow annotation, schedule, or data columns.

## Tokens

### Colors

| Name | Value |
|------|-------|
| primary | `#F3F1EA` |
| secondary | `#A7B0B8` |
| accent | `#D9FF66` |
| background | `#0A0B0D` |
| surface | `#111317` |
| text | `#F5F3EE` |
| muted | `#8B919A` |
| border | `#2A2F36` |
| error | `#FF6B6B` |
| success | `#69E2A1` |
| warning | `#F5C86A` |
| info | `#7DB7FF` |
| surface_alt | `#171A1F` |
| surface_emphasis | `#1E232A` |
| ink_soft | `#C9CDD3` |
| rule_bright | `#3C424C` |

### Typography

- **Heading Font**: Schibsted Grotesk, Arial Narrow, sans-serif
- **Body Font**: Schibsted Grotesk, Arial, sans-serif
- **Mono Font**: IBM Plex Mono, monospace
- **Base Size**: 16px
- **Scale Ratio**: 1.2
- **Line Height**: 1.58
- **Letter Spacing**: 0.01em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Schibsted+Grotesk:wght@400;500;700;800;900&display=swap
- **Weights**: {"regular":400,"medium":500,"bold":700,"black":900}
- **Roles**: {"display":"Schibsted Grotesk 800-900 uppercase","body":"Schibsted Grotesk 400-500","data":"IBM Plex Mono 500 with tabular numerals"}

### Spacing

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

### Radii

- **None**: 0
- **Sm**: 2px
- **Md**: 6px
- **Lg**: 12px
- **Xl**: 18px
- **Full**: 9999px

### Shadows

- **Sm**: 0 1px 0 rgba(255,255,255,0.04)
- **Md**: 0 0 0 1px rgba(255,255,255,0.02), 0 18px 48px rgba(0,0,0,0.24)
- **Lg**: 0 0 0 1px rgba(255,255,255,0.03), 0 30px 80px rgba(0,0,0,0.38)

### Surfaces

- **Treatment**: gradient
- **Card Style**: layered graphite bands with subtle top-to-bottom tonal shifts and inset separators, never floating bright cards
- **Bg Pattern**: grid

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: precise editorial rules; hairline seams and dividers create structure more often than shadows do

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.22, 1, 0.36, 1)
- **Philosophy**: deliberate

## Rules

### Composition

Use a 12-column frame on desktop with one dominant content slab spanning five to seven columns and supporting material occupying narrow side columns. Keep all primary modules flush to the same outer rails. Treat every horizontal band as part of a spread, using top and bottom rules to establish pacing. Never center a major heading; align it to the left column edge and let scale create drama. Use tonal surface shifts to separate layers instead of detached cards. Reserve the accent color for issue state, one or two key metrics, and active selection only. Place metadata in small uppercase or monospace fragments at the start or end of rows rather than inside badges whenever possible. Long-form content blocks should include narrow measure captions or side annotations to reinforce the editorial structure.

### Hierarchy

Hierarchy begins with headline scale, then with column span, then with tonal contrast, and only lastly with color. Primary headlines should be all-caps or near-caps, large enough to feel poster-like, with tight line-height and slightly expanded tracking. Secondary headings should use lighter weights but preserve the same alignment discipline. Body copy should sit in comfortable measures with softened white text on deep charcoal instead of pure white on pure black. Metadata, timestamps, and counts should use the mono role and appear smaller but denser, creating a clear distinction between narrative text and production data. Interactive controls should look integrated into the grid through rules and label placement, not through pill-heavy component styling.

### Density

Moderate-to-dense. The language supports substantial editorial information, but density is managed through disciplined spacing intervals and alternating quiet zones. Crowding is acceptable inside data bands if line alignment remains exact; decorative clutter is never acceptable.

### Signature Patterns

- Persistent vertical column rules using pseudo-elements or border lines that make multiple sections feel printed on one grid sheet.
- Section headers rendered as compact mono overlines above very large uppercase grotesk titles, creating a cover-line stack.
- Tonal band panels with inset top and bottom rules instead of floating drop-shadow cards.
- Edge-aligned metadata rails where issue codes, timestamps, and status labels sit in narrow mono columns beside main content.
- Accent color used as thin progress bars, active row markers, and numeric emphasis only, never as large fills.

## Layout

### Density

Use medium-high information density appropriate for newsroom planning, issue assembly, and editorial review. The interface should feel serious and inhabited, but every line must still have breathing room through consistent baseline spacing.

### Grid

Desktop uses a 12-column grid inside a max-width of 1480px with 24px gutters and 40px outer margins. Major spans commonly use 7/3/2 or 6/4/2 proportions. Tablet landscape reduces to 8 columns with 20px gutters. Tablet portrait reduces to 4 columns with 16px gutters. Phone collapses to a single column with stacked content and horizontally scrollable tables inside framed containers.

### Breakpoints

Desktop default at 1200px and above. First breakpoint at 1024px rebalances the spread to 8 columns and stacks the right rail beneath the hero band. Second breakpoint at 768px moves all multi-column analytic bands into vertical flow, preserving metadata rails as top rows. Third breakpoint at 480px collapses navigation, converts stat strips into two-column cards, and keeps tables and timeline lanes scrollable within border frames.

### Whitespace

Whitespace should feel deliberate and editorial rather than luxurious. Use large quiet margins around lead stories and tighter spacing inside operational panels. Preserve visible gutters; never let modules blur together. Empty space should reinforce reading order the way margins do in a printed spread.

### Responsive

All layout declarations belong to CSS classes. No inline grid or flex styling. Headline scales step down sharply at each breakpoint, while metadata rails convert from side columns to horizontal strips. Dense tabular regions gain overflow containers instead of shrinking text below readable thresholds.

## Guidance

### Do

- Do begin each major section with a mono overline and a decisive headline that anchors the left edge.
- Do keep dividers visible; the language depends on rules and seams to communicate order.
- Do use asymmetry intentionally by pairing wide narrative modules with narrow factual rails.
- Do keep accent color scarce and meaningful, ideally attached to progress, selection, or one decisive numeric signal.
- Do preserve long reading comfort with softened text values on charcoal surfaces rather than absolute black-white extremes.
- Do style all form controls as part of the typographic system, with labels, rules, and focus states that match the editorial grid.
- Do let tables, schedules, and contributor lists look typeset, with exact alignment and tabular figures.
- Do create pacing between expansive feature modules and compressed utility rows so the interface feels sequenced like a magazine.
- Do keep hover and focus feedback subtle but crisp, relying on rule brightness, accent slivers, and tonal lifts.
- Do use mono metadata to clarify issue numbers, deadlines, and status without competing with narrative hierarchy.

### Don't

- Do not round everything into friendly pills; softness erodes the editorial authority of the system.
- Do not use large accent-color backgrounds behind content blocks.
- Do not center hero copy, KPI rows, or major calls to action.
- Do not hide structure behind oversized blur and shadow effects.
- Do not mix decorative serif display faces into the primary hierarchy.
- Do not collapse all content into identical cards; preserve wide bands, rails, and asymmetry.
- Do not let metadata badges become louder than story titles or contributor names.
- Do not reduce table text until it becomes unreadable on mobile; allow controlled scrolling instead.
- Do not leave native browser chrome on selects, inputs, checkboxes, or radio controls.
- Do not use more than one or two accent moments per viewport band.

### Usage Context

Best suited to editorial CMS dashboards, issue planning rooms, digital magazine homepages, publishing analytics, cultural archives, and content review systems where authority, sequence, and typographic order matter more than casual friendliness.

### Accessibility

Maintain readable contrast with off-white text on charcoal, never relying on neon color alone for state. Use clear focus rings, 16px minimum body text, generous hit areas for controls, and tabular alignment for data comprehension. Support keyboard navigation and preserve semantic headings and labels so the reading order remains coherent for assistive technologies.
DESIGN.md
---
version: "alpha"
name: "Nocturne Grid Editorial"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  primary: "#F3F1EA"
  secondary: "#A7B0B8"
  accent: "#D9FF66"
  background: "#0A0B0D"
  surface: "#111317"
  text: "#F5F3EE"
  muted: "#8B919A"
  border: "#2A2F36"
  error: "#FF6B6B"
  success: "#69E2A1"
  warning: "#F5C86A"
  info: "#7DB7FF"
  surface_alt: "#171A1F"
  surface_emphasis: "#1E232A"
  ink_soft: "#C9CDD3"
  rule_bright: "#3C424C"
typography:
  headline-lg:
    fontFamily: "Schibsted Grotesk, Arial Narrow, sans-serif"
    fontSize: "1.728rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "0.01em"
  headline-md:
    fontFamily: "Schibsted Grotesk, Arial Narrow, sans-serif"
    fontSize: "1.44rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "0.01em"
  body-md:
    fontFamily: "Schibsted Grotesk, Arial, sans-serif"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.58
    letterSpacing: "0.01em"
  label-md:
    fontFamily: "IBM Plex Mono, monospace"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "2px"
  md: "6px"
  lg: "12px"
  xl: "18px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-surface_alt:
    backgroundColor: "{colors.surface_alt}"
  color-reference-surface_emphasis:
    backgroundColor: "{colors.surface_emphasis}"
  color-reference-ink_soft:
    backgroundColor: "{colors.ink_soft}"
  color-reference-rule_bright:
    backgroundColor: "{colors.rule_bright}"
  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"
---

# Nocturne Grid Editorial

## Overview

Nocturne Grid Editorial is a digital editorial language for magazines, journals, and cultural publications that want the intellectual rigor of Swiss modernism without inheriting its white-paper brightness. It treats the screen as a dark press sheet: black and graphite fields hold precise columns, restrained accents, and disciplined typography that feels objective at a glance yet cinematic in atmosphere. The goal is not decorative darkness. The goal is compositional focus. Dense stories, issue lineups, contributor notes, metrics, and production controls all live inside a grid system that privileges alignment, interval, and pacing over ornament. Where many dark interfaces rely on glowing gradients and soft cards, this language insists on crisp structure, hard seams, and a deliberate editorial rhythm. The visual drama comes from scale contrast, measured emptiness, and the tension between very fine rules and oversized grotesk headlines. It borrows from International Typographic Style through asymmetry, modular grids, left alignment, and hierarchy created by scale rather than boxes. It borrows from magazine design through sequencing, cover-line pacing, and the idea that every panel is part of a spread, not a standalone widget. In practice, that means interfaces should feel curated and typeset: captions sit in narrow columns, utilities are reduced to small uppercase labels, and every block looks placed rather than merely arranged. The dark palette is handled ergonomically, with softened contrast bands and controlled accent use so long reading sessions remain comfortable. This language is for editorial systems where authority comes from restraint, not exuberance.

### Values

- Grid discipline over freeform composition; every major edge should lock to a repeatable column or baseline system.
- Objective typographic hierarchy; size, weight, and spacing create emphasis before color or illustration does.
- Asymmetric balance; layouts should feel dynamic through offset columns and unequal spans rather than centered symmetry.
- Atmospheric darkness with readable contrast; dark surfaces should support reading instead of turning the interface into neon theater.
- Editorial pacing; alternate dense information bands with large quiet fields so the interface reads like a sequence of spreads.
- Functional reduction; controls, filters, and metadata should be compact, precise, and subordinate to the content narrative.
- Material honesty; rules, borders, and separators should be visibly intentional rather than hidden under shadows.
- Typographic seriousness; grotesk headlines, clean body copy, and tabular metadata should feel like a publication system.

### Anti-Values

- Soft generic SaaS cards with floating shadows and center-aligned marketing layouts.
- Glow-heavy cyberpunk dark mode that reduces legibility and overwhelms editorial content.
- Playful rounded components that weaken the sense of institutional rigor.
- Overillustrated interfaces where decoration competes with the reading order.
- Color-first hierarchy that makes structure depend on accents instead of typography and alignment.

### Visual Character

- Oversized uppercase grotesk headlines that sit flush-left in wide dark fields with generous tracking and tight vertical rhythm.
- Hairline grid rules and column dividers that remain visible across panels, making the entire screen feel typeset on a shared scaffold.
- Stacked charcoal surface bands with subtle tonal separation instead of floating bright cards, creating the feeling of layered print spreads.
- Small monospace or tabular metadata labels in caps, used as issue codes, timestamps, and section markers along the edges of content.
- Asymmetric multi-column compositions where one dominant story block is counterweighted by narrow annotation, schedule, or data columns.

## Colors

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

| Token | Value |
|-------|-------|
| primary | `#F3F1EA` |
| secondary | `#A7B0B8` |
| accent | `#D9FF66` |
| background | `#0A0B0D` |
| surface | `#111317` |
| text | `#F5F3EE` |
| muted | `#8B919A` |
| border | `#2A2F36` |
| error | `#FF6B6B` |
| success | `#69E2A1` |
| warning | `#F5C86A` |
| info | `#7DB7FF` |
| surface_alt | `#171A1F` |
| surface_emphasis | `#1E232A` |
| ink_soft | `#C9CDD3` |
| rule_bright | `#3C424C` |

## Typography

- **Headline-Lg**: Schibsted Grotesk, Arial Narrow, sans-serif, 1.728rem, weight 700, line-height 1.1.
- **Headline-Md**: Schibsted Grotesk, Arial Narrow, sans-serif, 1.44rem, weight 600, line-height 1.15.
- **Body-Md**: Schibsted Grotesk, Arial, sans-serif, 16px, weight 400, line-height 1.58.
- **Label-Md**: IBM Plex Mono, monospace, 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`
- **Step-8**: `96px`

### Density

Use medium-high information density appropriate for newsroom planning, issue assembly, and editorial review. The interface should feel serious and inhabited, but every line must still have breathing room through consistent baseline spacing.

### Grid

Desktop uses a 12-column grid inside a max-width of 1480px with 24px gutters and 40px outer margins. Major spans commonly use 7/3/2 or 6/4/2 proportions. Tablet landscape reduces to 8 columns with 20px gutters. Tablet portrait reduces to 4 columns with 16px gutters. Phone collapses to a single column with stacked content and horizontally scrollable tables inside framed containers.

### Breakpoints

Desktop default at 1200px and above. First breakpoint at 1024px rebalances the spread to 8 columns and stacks the right rail beneath the hero band. Second breakpoint at 768px moves all multi-column analytic bands into vertical flow, preserving metadata rails as top rows. Third breakpoint at 480px collapses navigation, converts stat strips into two-column cards, and keeps tables and timeline lanes scrollable within border frames.

### Whitespace

Whitespace should feel deliberate and editorial rather than luxurious. Use large quiet margins around lead stories and tighter spacing inside operational panels. Preserve visible gutters; never let modules blur together. Empty space should reinforce reading order the way margins do in a printed spread.

### Responsive

All layout declarations belong to CSS classes. No inline grid or flex styling. Headline scales step down sharply at each breakpoint, while metadata rails convert from side columns to horizontal strips. Dense tabular regions gain overflow containers instead of shrinking text below readable thresholds.

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 0 rgba(255,255,255,0.04)
- **Md**: 0 0 0 1px rgba(255,255,255,0.02), 0 18px 48px rgba(0,0,0,0.24)
- **Lg**: 0 0 0 1px rgba(255,255,255,0.03), 0 30px 80px rgba(0,0,0,0.38)

## Shapes

### Rounded

- **None**: `0px`
- **Sm**: `2px`
- **Md**: `6px`
- **Lg**: `12px`
- **Xl**: `18px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: gradient
- **Card Style**: layered graphite bands with subtle top-to-bottom tonal shifts and inset separators, never floating bright cards
- **Bg Pattern**: grid

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: precise editorial rules; hairline seams and dividers create structure more often than shadows do

## Components

### Composition

Use a 12-column frame on desktop with one dominant content slab spanning five to seven columns and supporting material occupying narrow side columns. Keep all primary modules flush to the same outer rails. Treat every horizontal band as part of a spread, using top and bottom rules to establish pacing. Never center a major heading; align it to the left column edge and let scale create drama. Use tonal surface shifts to separate layers instead of detached cards. Reserve the accent color for issue state, one or two key metrics, and active selection only. Place metadata in small uppercase or monospace fragments at the start or end of rows rather than inside badges whenever possible. Long-form content blocks should include narrow measure captions or side annotations to reinforce the editorial structure.

### Hierarchy

Hierarchy begins with headline scale, then with column span, then with tonal contrast, and only lastly with color. Primary headlines should be all-caps or near-caps, large enough to feel poster-like, with tight line-height and slightly expanded tracking. Secondary headings should use lighter weights but preserve the same alignment discipline. Body copy should sit in comfortable measures with softened white text on deep charcoal instead of pure white on pure black. Metadata, timestamps, and counts should use the mono role and appear smaller but denser, creating a clear distinction between narrative text and production data. Interactive controls should look integrated into the grid through rules and label placement, not through pill-heavy component styling.

### Density

Moderate-to-dense. The language supports substantial editorial information, but density is managed through disciplined spacing intervals and alternating quiet zones. Crowding is acceptable inside data bands if line alignment remains exact; decorative clutter is never acceptable.

### Signature Patterns

- Persistent vertical column rules using pseudo-elements or border lines that make multiple sections feel printed on one grid sheet.
- Section headers rendered as compact mono overlines above very large uppercase grotesk titles, creating a cover-line stack.
- Tonal band panels with inset top and bottom rules instead of floating drop-shadow cards.
- Edge-aligned metadata rails where issue codes, timestamps, and status labels sit in narrow mono columns beside main content.
- Accent color used as thin progress bars, active row markers, and numeric emphasis only, never as large fills.

## 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-019d9bba-5208-7c90-a966-880d16c18501/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 Do begin each major section with a mono overline and a decisive headline that anchors the left edge.
- Do Do keep dividers visible; the language depends on rules and seams to communicate order.
- Do Do use asymmetry intentionally by pairing wide narrative modules with narrow factual rails.
- Do Do keep accent color scarce and meaningful, ideally attached to progress, selection, or one decisive numeric signal.
- Do Do preserve long reading comfort with softened text values on charcoal surfaces rather than absolute black-white extremes.
- Do Do style all form controls as part of the typographic system, with labels, rules, and focus states that match the editorial grid.
- Do Do let tables, schedules, and contributor lists look typeset, with exact alignment and tabular figures.
- Do Do create pacing between expansive feature modules and compressed utility rows so the interface feels sequenced like a magazine.
- Do Do keep hover and focus feedback subtle but crisp, relying on rule brightness, accent slivers, and tonal lifts.
- Do Do use mono metadata to clarify issue numbers, deadlines, and status without competing with narrative hierarchy.
- Don't Do not round everything into friendly pills; softness erodes the editorial authority of the system.
- Don't Do not use large accent-color backgrounds behind content blocks.
- Don't Do not center hero copy, KPI rows, or major calls to action.
- Don't Do not hide structure behind oversized blur and shadow effects.
- Don't Do not mix decorative serif display faces into the primary hierarchy.
- Don't Do not collapse all content into identical cards; preserve wide bands, rails, and asymmetry.
- Don't Do not let metadata badges become louder than story titles or contributor names.
- Don't Do not reduce table text until it becomes unreadable on mobile; allow controlled scrolling instead.
- Don't Do not leave native browser chrome on selects, inputs, checkboxes, or radio controls.
- Don't Do not use more than one or two accent moments per viewport band.

### Usage Context

Best suited to editorial CMS dashboards, issue planning rooms, digital magazine homepages, publishing analytics, cultural archives, and content review systems where authority, sequence, and typographic order matter more than casual friendliness.

### Accessibility

Maintain readable contrast with off-white text on charcoal, never relying on neon color alone for state. Use clear focus rings, 16px minimum body text, generous hit areas for controls, and tabular alignment for data comprehension. Support keyboard navigation and preserve semantic headings and labels so the reading order remains coherent for assistive technologies.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "nocturne-grid-editorial",
  "type": "registry:theme",
  "title": "Nocturne Grid Editorial shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0B0D",
      "foreground": "#F5F3EE",
      "card": "#111317",
      "card-foreground": "#F5F3EE",
      "popover": "#111317",
      "popover-foreground": "#F5F3EE",
      "primary": "#F3F1EA",
      "primary-foreground": "#111111",
      "secondary": "#A7B0B8",
      "secondary-foreground": "#ffffff",
      "muted": "#8B919A",
      "muted-foreground": "#F5F3EE",
      "accent": "#D9FF66",
      "accent-foreground": "#111111",
      "destructive": "#FF6B6B",
      "border": "#2A2F36",
      "input": "#2A2F36",
      "ring": "#D9FF66",
      "chart-1": "#F3F1EA",
      "chart-2": "#A7B0B8",
      "chart-3": "#D9FF66",
      "chart-4": "#69E2A1",
      "chart-5": "#F5C86A",
      "sidebar": "#111317",
      "sidebar-foreground": "#F5F3EE",
      "sidebar-primary": "#F3F1EA",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#7DB7FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A2F36",
      "sidebar-ring": "#D9FF66",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F3F1EA",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D9FF66",
      "accent-foreground": "#111111",
      "destructive": "#FF6B6B",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D9FF66",
      "chart-1": "#F3F1EA",
      "chart-2": "#A7B0B8",
      "chart-3": "#D9FF66",
      "chart-4": "#69E2A1",
      "chart-5": "#F5C86A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F3F1EA",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#D9FF66",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D9FF66",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019d9bba-5208-7c90-a966-880d16c18501",
    "slug": "nocturne-grid-editorial",
    "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",
        "background",
        "border",
        "error",
        "info",
        "ink_soft",
        "muted",
        "primary",
        "rule_bright",
        "secondary",
        "success",
        "surface",
        "surface_alt",
        "surface_emphasis",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "roles",
        "scale_ratio",
        "weights"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm",
        "xl"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · nocturne-grid-editorial
DESIGN.md

at a glance

Palette

Typography

headline-lgSchibsted Grotesk · 28px · 700

The quick brown fox jumps

headline-mdSchibsted Grotesk · 23px · 600

The quick brown fox jumps

body-mdSchibsted Grotesk · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px
  • step-896px

Shape

none0px
sm2px
md6px
lg12px
xl18px
full9999px
shadcn/ui

implementation kit

needs agent-authored kitcompatibility 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: #0A0B0D;
  --foreground: #F5F3EE;
  --card: #111317;
  --card-foreground: #F5F3EE;
  --popover: #111317;
  --popover-foreground: #F5F3EE;
  --primary: #F3F1EA;
  --primary-foreground: #111111;
  --secondary: #A7B0B8;
  --secondary-foreground: #ffffff;
  --muted: #8B919A;
  --muted-foreground: #F5F3EE;
  --accent: #D9FF66;
  --accent-foreground: #111111;
  --destructive: #FF6B6B;
  --border: #2A2F36;
  --input: #2A2F36;
  --ring: #D9FF66;
  --chart-1: #F3F1EA;
  --chart-2: #A7B0B8;
  --chart-3: #D9FF66;
  --chart-4: #69E2A1;
  --chart-5: #F5C86A;
  --sidebar: #111317;
  --sidebar-foreground: #F5F3EE;
  --sidebar-primary: #F3F1EA;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #7DB7FF;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #2A2F36;
  --sidebar-ring: #D9FF66;
  --radius: 6px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #F3F1EA;
  --primary-foreground: #111111;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #D9FF66;
  --accent-foreground: #111111;
  --destructive: #FF6B6B;
  --border: #303642;
  --input: #303642;
  --ring: #D9FF66;
  --chart-1: #F3F1EA;
  --chart-2: #A7B0B8;
  --chart-3: #D9FF66;
  --chart-4: #69E2A1;
  --chart-5: #F5C86A;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #F3F1EA;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #D9FF66;
  --sidebar-accent-foreground: #111111;
  --sidebar-border: #303642;
  --sidebar-ring: #D9FF66;
  --radius: 6px;
}
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 NocturneGridEditorialShadcnKit() {
  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">Nocturne Grid Editorial</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": "nocturne-grid-editorial",
  "type": "registry:theme",
  "title": "Nocturne Grid Editorial shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0B0D",
      "foreground": "#F5F3EE",
      "card": "#111317",
      "card-foreground": "#F5F3EE",
      "popover": "#111317",
      "popover-foreground": "#F5F3EE",
      "primary": "#F3F1EA",
      "primary-foreground": "#111111",
      "secondary": "#A7B0B8",
      "secondary-foreground": "#ffffff",
      "muted": "#8B919A",
      "muted-foreground": "#F5F3EE",
      "accent": "#D9FF66",
      "accent-foreground": "#111111",
      "destructive": "#FF6B6B",
      "border": "#2A2F36",
      "input": "#2A2F36",
      "ring": "#D9FF66",
      "chart-1": "#F3F1EA",
      "chart-2": "#A7B0B8",
      "chart-3": "#D9FF66",
      "chart-4": "#69E2A1",
      "chart-5": "#F5C86A",
      "sidebar": "#111317",
      "sidebar-foreground": "#F5F3EE",
      "sidebar-primary": "#F3F1EA",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#7DB7FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A2F36",
      "sidebar-ring": "#D9FF66",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F3F1EA",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D9FF66",
      "accent-foreground": "#111111",
      "destructive": "#FF6B6B",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D9FF66",
      "chart-1": "#F3F1EA",
      "chart-2": "#A7B0B8",
      "chart-3": "#D9FF66",
      "chart-4": "#69E2A1",
      "chart-5": "#F5C86A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F3F1EA",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#D9FF66",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D9FF66",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019d9bba-5208-7c90-a966-880d16c18501",
    "slug": "nocturne-grid-editorial",
    "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",
        "background",
        "border",
        "error",
        "info",
        "ink_soft",
        "muted",
        "primary",
        "rule_bright",
        "secondary",
        "success",
        "surface",
        "surface_alt",
        "surface_emphasis",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "roles",
        "scale_ratio",
        "weights"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm",
        "xl"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
component recipescompatibility fallback
# Nocturne Grid Editorial shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019d9bba-5208-7c90-a966-880d16c18501`
Slug: `nocturne-grid-editorial`

## Intent

Nocturne Grid Editorial is a digital editorial language for magazines, journals, and cultural publications that want the intellectual rigor of Swiss modernism without inheriting its white-paper brightness. It treats the screen as a dark press sheet: black and graphite fields hold precise columns, restrained accents, and disciplined typography that feels objective at a glance yet cinematic in atmosphere. The goal is not decorative darkness. The goal is compositional focus. Dense stories, issue lineups, contributor notes, metrics, and production controls all live inside a grid system that privileges alignment, interval, and pacing over ornament. Where many dark interfaces rely on glowing gradients and soft cards, this language insists on crisp structure, hard seams, and a deliberate editorial rhythm. The visual drama comes from scale contrast, measured emptiness, and the tension between very fine rules and oversized grotesk headlines. It borrows from International Typographic Style through asymmetry, modular grids, left alignment, and hierarchy created by scale rather than boxes. It borrows from magazine design through sequencing, cover-line pacing, and the idea that every panel is part of a spread, not a standalone widget. In practice, that means interfaces should feel curated and typeset: captions sit in narrow columns, utilities are reduced to small uppercase labels, and every block looks placed rather than merely arranged. The dark palette is handled ergonomically, with softened contrast bands and controlled accent use so long reading sessions remain comfortable. This language is for editorial systems where authority comes from restraint, not exuberance.

## Required primitives

- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

## Token cues

Colors:

{
  "primary": "#F3F1EA",
  "secondary": "#A7B0B8",
  "accent": "#D9FF66",
  "background": "#0A0B0D",
  "surface": "#111317",
  "text": "#F5F3EE",
  "muted": "#8B919A",
  "border": "#2A2F36",
  "error": "#FF6B6B",
  "success": "#69E2A1",
  "warning": "#F5C86A",
  "info": "#7DB7FF",
  "surface_alt": "#171A1F",
  "surface_emphasis": "#1E232A",
  "ink_soft": "#C9CDD3",
  "rule_bright": "#3C424C"
}

Typography:

{
  "heading_font": "Schibsted Grotesk, Arial Narrow, sans-serif",
  "body_font": "Schibsted Grotesk, Arial, sans-serif",
  "mono_font": "IBM Plex Mono, monospace",
  "base_size": "16px",
  "scale_ratio": 1.2,
  "line_height": 1.58,
  "letter_spacing": "0.01em",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Schibsted+Grotesk:wght@400;500;700;800;900&display=swap",
  "weights": {
    "regular": 400,
    "medium": 500,
    "bold": 700,
    "black": 900
  },
  "roles": {
    "display": "Schibsted Grotesk 800-900 uppercase",
    "body": "Schibsted Grotesk 400-500",
    "data": "IBM Plex Mono 500 with tabular numerals"
  }
}

## Visual character to preserve

- Oversized uppercase grotesk headlines that sit flush-left in wide dark fields with generous tracking and tight vertical rhythm.
- Hairline grid rules and column dividers that remain visible across panels, making the entire screen feel typeset on a shared scaffold.
- Stacked charcoal surface bands with subtle tonal separation instead of floating bright cards, creating the feeling of layered print spreads.
- Small monospace or tabular metadata labels in caps, used as issue codes, timestamps, and section markers along the edges of content.
- Asymmetric multi-column compositions where one dominant story block is counterweighted by narrow annotation, schedule, or data columns.

## ShadSync visual profile

{
  "family": "editorial",
  "material": "flat",
  "contour": "default",
  "border": "solid",
  "underlay": true,
  "grain": false,
  "stickerBadges": true,
  "motion": "still",
  "density": "dense",
  "accents": [
    "primary",
    "accent",
    "secondary",
    "muted"
  ]
}

## Signature component recipes

### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.

### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.

### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.

### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.

### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.

## Preview shots

- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.

## Implementation contract

- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/nocturne-grid-editorial/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Do begin each major section with a mono overline and a decisive headline that anchors the left edge.; Do keep dividers visible; the language depends on rules and seams to communicate order.; Do use asymmetry intentionally by pairing wide narrative modules with narrow factual rails.; Do keep accent color scarce and meaningful, ideally attached to progress, selection, or one decisive numeric signal.; Do preserve long reading comfort with softened text values on charcoal surfaces rather than absolute black-white extremes.; Do style all form controls as part of the typographic system, with labels, rules, and focus states that match the editorial grid.; Do let tables, schedules, and contributor lists look typeset, with exact alignment and tabular figures.; Do create pacing between expansive feature modules and compressed utility rows so the interface feels sequenced like a magazine.; Do keep hover and focus feedback subtle but crisp, relying on rule brightness, accent slivers, and tonal lifts.; Do use mono metadata to clarify issue numbers, deadlines, and status without competing with narrative hierarchy.
- Do not: Do not round everything into friendly pills; softness erodes the editorial authority of the system.; Do not use large accent-color backgrounds behind content blocks.; Do not center hero copy, KPI rows, or major calls to action.; Do not hide structure behind oversized blur and shadow effects.; Do not mix decorative serif display faces into the primary hierarchy.; Do not collapse all content into identical cards; preserve wide bands, rails, and asymmetry.; Do not let metadata badges become louder than story titles or contributor names.; Do not reduce table text until it becomes unreadable on mobile; allow controlled scrolling instead.; Do not leave native browser chrome on selects, inputs, checkboxes, or radio controls.; Do not use more than one or two accent moments per viewport band.

## Copy-paste component example

This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.

```tsx
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 NocturneGridEditorialShadcnKit() {
  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">Nocturne Grid Editorial</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>
  );
}
```

## Layout notes

{
  "density": "Use medium-high information density appropriate for newsroom planning, issue assembly, and editorial review. The interface should feel serious and inhabited, but every line must still have breathing room through consistent baseline spacing.",
  "grid": "Desktop uses a 12-column grid inside a max-width of 1480px with 24px gutters and 40px outer margins. Major spans commonly use 7/3/2 or 6/4/2 proportions. Tablet landscape reduces to 8 columns with 20px gutters. Tablet portrait reduces to 4 columns with 16px gutters. Phone collapses to a single column with stacked content and horizontally scrollable tables inside framed containers.",
  "breakpoints": "Desktop default at 1200px and above. First breakpoint at 1024px rebalances the spread to 8 columns and stacks the right rail beneath the hero band. Second breakpoint at 768px moves all multi-column analytic bands into vertical flow, preserving metadata rails as top rows. Third breakpoint at 480px collapses navigation, converts stat strips into two-column cards, and keeps tables and timeline lanes scrollable within border frames.",
  "whitespace": "Whitespace should feel deliberate and editorial rather than luxurious. Use large quiet margins around lead stories and tighter spacing inside operational panels. Preserve visible gutters; never let modules blur together. Empty space should reinforce reading order the way margins do in a printed spread.",
  "responsive": "All layout declarations belong to CSS classes. No inline grid or flex styling. Headline scales step down sharply at each breakpoint, while metadata rails convert from side columns to horizontal strips. Dense tabular regions gain overflow containers instead of shrinking text below readable thresholds."
}
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-019d9bba-5208-7c90-a966-880d16c18501",
    "name": "Nocturne Grid Editorial",
    "slug": "nocturne-grid-editorial"
  },
  "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": [
    "Oversized uppercase grotesk headlines that sit flush-left in wide dark fields with generous tracking and tight vertical rhythm.",
    "Hairline grid rules and column dividers that remain visible across panels, making the entire screen feel typeset on a shared scaffold.",
    "Stacked charcoal surface bands with subtle tonal separation instead of floating bright cards, creating the feeling of layered print spreads.",
    "Small monospace or tabular metadata labels in caps, used as issue codes, timestamps, and section markers along the edges of content.",
    "Asymmetric multi-column compositions where one dominant story block is counterweighted by narrow annotation, schedule, or data columns."
  ],
  "visualProfile": {
    "family": "system",
    "material": "flat",
    "contour": "default",
    "border": "solid",
    "underlay": true,
    "grain": false,
    "stickerBadges": true,
    "motion": "still",
    "density": "dense",
    "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": "Nocturne Grid Editorial 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": [
      "Do begin each major section with a mono overline and a decisive headline that anchors the left edge.",
      "Do keep dividers visible; the language depends on rules and seams to communicate order.",
      "Do use asymmetry intentionally by pairing wide narrative modules with narrow factual rails.",
      "Do keep accent color scarce and meaningful, ideally attached to progress, selection, or one decisive numeric signal.",
      "Do preserve long reading comfort with softened text values on charcoal surfaces rather than absolute black-white extremes.",
      "Do style all form controls as part of the typographic system, with labels, rules, and focus states that match the editorial grid.",
      "Do let tables, schedules, and contributor lists look typeset, with exact alignment and tabular figures.",
      "Do create pacing between expansive feature modules and compressed utility rows so the interface feels sequenced like a magazine.",
      "Do keep hover and focus feedback subtle but crisp, relying on rule brightness, accent slivers, and tonal lifts.",
      "Do use mono metadata to clarify issue numbers, deadlines, and status without competing with narrative hierarchy."
    ],
    "dont": [
      "Do not round everything into friendly pills; softness erodes the editorial authority of the system.",
      "Do not use large accent-color backgrounds behind content blocks.",
      "Do not center hero copy, KPI rows, or major calls to action.",
      "Do not hide structure behind oversized blur and shadow effects.",
      "Do not mix decorative serif display faces into the primary hierarchy.",
      "Do not collapse all content into identical cards; preserve wide bands, rails, and asymmetry.",
      "Do not let metadata badges become louder than story titles or contributor names.",
      "Do not reduce table text until it becomes unreadable on mobile; allow controlled scrolling instead.",
      "Do not leave native browser chrome on selects, inputs, checkboxes, or radio controls.",
      "Do not use more than one or two accent moments per viewport band."
    ]
  }
}
related

More like this