back to gallery
design language·nighthawk

Nighthawk

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
Nighthawk is a design language for systems operated after midnight: a warm near-black stage, cream paper tickets, one ember accent used like a reel-change cue, and gold phosphor readouts paced like jazz cuts. It keeps the discipline of a 90s anime title card and the restraint of a noir lounge — clipped panels, cue marks, and quiet tension between the hits.
values
Restraint before decoration: warm black, cream paper and one ember cue carry the identity; everything else stays small and functional.Cinematic pacing: screens are edited as cuts — a dominant panel, a narrow console rail, black gutters as active negative space.Diegetic utility: every module opens with a cue mark — an ember square, a mono label, a phosphor timestamp — so the page reads as a cue sheet being worked, not a display.One machine voice: Martian Mono carries every prompt, slug, timestamp and table row; the interface speaks in phosphor.Typographic authority: condensed Antonio title cards and stroke-only ghost numerals build hierarchy before any icon or illustration.Existential calm: black pauses between dense readouts; nothing fills every gap.
anti-values
×Generic cyberpunk neon, blue-purple gradients, hologram glow, or rain-soaked clutter.×Cute anime lettering, mascots, stickers, or pastel accents that break the noir tone.×Accent-edge rails, grey card borders, nested cards, or boxed pill navigation.×Component-catalog sameness: equal columns of identical cards with no cinematic cut.×Texture for its own sake — scanlines and grain stay masked, low-opacity, structural.
tokens
colors14 items
bg
#0A0908
surface
#171310
surface_solid
#171310
text
#F5EBD4
muted
#9B8E78
border
#2A2520
accent
#C1502F
accent_2
#B78B45
accent_soft
#27140E
on_accent
#FBF1DC
success
#8A9A5B
warning
#C17A2B
error
#D0452B
info
#B78B45
typography10 items
base size
17px
body font
Afacad Flux
heading font
Antonio
mono font
Martian Mono
heading weight
700
heading transform
uppercase
letter spacing
-0.02em
line height
1.55
scale ratio
1.26
google fonts url
https://fonts.googleapis.com/css2?family=Afacad+Flux:wght@400;500;600;700&family=Antonio:wght@500;600;700&family=Martian+Mono:wght@400;500;600;700&display=swap
radii4 items
none
0px
md
16px
lg
24px
full
9999px
shadows3 items
sm
0 1px 0 rgba(245,235,212,0.06)
md
0 24px 60px rgba(0,0,0,0.34)
lg
0 40px 120px rgba(0,0,0,0.48)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96, 128
surfaces3 items
treatment
Flat matte fields; hierarchy comes from the cream-paper-on-warm-black value jump, not borders or shadows.
card style
Square cream paper tickets and smoked console panels in black gutters; each opens with a cue mark; a stroke-only ghost numeral may clip one corner.
bg pattern
Warm black field; console panels may carry a repeating-linear-gradient scanline mask at or under 4% opacity and sparse mono coordinate ticks.
borders4 items
default width
1px
accent width
2px
style
solid
character
Hairline dividers live only inside tables and as 2px form-field baselines that ignite ember on focus; cards and panels carry no borders and no accent edges.
motion3 items
duration
180ms
easing
cubic-bezier(0.2, 0.8, 0.2, 1)
philosophy
Cut like a title sequence: opacity snaps and short lateral shifts; the settled page is the no-JS default; prefers-reduced-motion collapses everything.
rules
composition
Compose screens as cinematic cuts on a max-1360px shell: one dominant panel, one narrow console rail, asymmetric 7/5 or 5/4/3 column splits, black gutters breathing between. Open every module with a cue mark (ember square + mono label + phosphor timestamp). Let one oversized stroke-only numeral clip a panel corner per viewport. Spend ember only on what is live, primary, or just changed.
density
Medium-high inside readouts and ledgers, offset by open black pauses and cream panels holding blank fields. The tablet band gets its own two-column board; mobile stacks to one column with cue marks preserved above each section.
hierarchy
Antonio 700 uppercase at -0.02em for title cards and stat numerals; Afacad Flux at 17px+ for operational copy; Martian Mono 12/15px caps for every label, prompt, slug and table row. One strict scale — 12/15/17/21/27/34/43 plus two display clamps — and no one-off sizes. Scale and placement rank first; the ember cue confirms, never carries alone.
signature patterns
The cue mark: a 7-12px ember square, a Martian Mono caps label and a phosphor timestamp opening every page, panel, chip, checkbox and stat.The cue sweep: links carry a 2px ember baseline that floods to a full ember fill on hover.Paper tickets: cream panels in black gutters with Antonio heads, mono meta slugs, and a stroke-only ghost numeral clipping the corner.Phosphor readouts: >-prompted mono feeds in dim gold on smoked panels under a masked 4%-opacity scanline.Segmented meters: twelve square cells filling in ember or phosphor with a mono readout line.The docking ledger: mono tables with hairline rows, muted caps headers, an ember hover wash and coloured status words.
layout
breakpoints
mobile
390px-767px single column, 20px gutters, decorative numerals clamped, non-essential nav and table columns dropped
tablet
768px-1023px its own considered board: two-column cuts, the app rail turning horizontal — never a stretched phone column
desktop
1024px+ asymmetric cockpit cuts on a max-1360px shell with 20-24px black gutters
grid

Desktop composes 7/5 and 5/4/3 column cuts with minmax(0,1fr) tracks so grids never blow out; a 230px app rail anchors dashboards.

density

Dense only inside readouts; the frame stays open and smoky so the interface breathes like a late-night room.

whitespace

Black gutters are active negative space — at least 20px between panels, generous padding above every title, cream panels allowed large blank fields.

responsive
Display type shrinks with clamp() and wraps, never clips; buttons and chips never wrap — layouts stack instead; ultra-wide caps and centres the shell while only the hero spans 100vw.
guidance
do
  • Lead with warm black and cream; spend ember only on what is live, primary, or just changed.
  • Open every module with a cue mark; let timestamps and prompts make the page feel operated.
  • Keep panels square and gutters black; let one oversized outline numeral clip per viewport.
  • Set every label, slug and table row in Martian Mono caps at 12 or 15px.
  • Hold the strict type scale, headings to footers.
  • Build pages as scenes: booking desks, session boards, tape logs, settle sheets, late bar ledgers.
avoid
  • No neon, blue-purple gradients, or hologram glow.
  • No accent-edge rails on cards, no grey borders, no nested cards, no boxed nav pills.
  • No cute anime lettering, mascots, or pastel accents.
  • No second warm accent family beyond the semantic set.
  • No equal-column grids of identical cards — keep the cuts asymmetric.
  • No symbol glyphs in copy; cue squares and inline SVG only.
  • No default browser controls — every form control is styled.
imagery
summary
Cinematic after-hours interiors and instruments lit by one warm practical against deep warm black: film grain, low key, ember highlights, black negative space left where panels sit.
technique

Low-key photographic noir with visible grain; monochrome linework silhouettes may sit masked at low opacity behind panels.

hero
The landing hero is an after-hours lounge seen from the quiet side — double bass, ember light streak, starfield window — composed to hold the title card in its black field.
katagami spec
# Nighthawk

## Philosophy

Nighthawk is a design language for systems operated after midnight: a warm near-black stage, cream paper tickets, one ember accent used like a reel-change cue, and gold phosphor readouts paced like jazz cuts. It keeps the discipline of a 90s anime title card and the restraint of a noir lounge — clipped panels, cue marks, and quiet tension between the hits.

### Values

- Restraint before decoration: warm black, cream paper and one ember cue carry the identity; everything else stays small and functional.
- Cinematic pacing: screens are edited as cuts — a dominant panel, a narrow console rail, black gutters as active negative space.
- Diegetic utility: every module opens with a cue mark — an ember square, a mono label, a phosphor timestamp — so the page reads as a cue sheet being worked, not a display.
- One machine voice: Martian Mono carries every prompt, slug, timestamp and table row; the interface speaks in phosphor.
- Typographic authority: condensed Antonio title cards and stroke-only ghost numerals build hierarchy before any icon or illustration.
- Existential calm: black pauses between dense readouts; nothing fills every gap.

### Anti-Values

- Generic cyberpunk neon, blue-purple gradients, hologram glow, or rain-soaked clutter.
- Cute anime lettering, mascots, stickers, or pastel accents that break the noir tone.
- Accent-edge rails, grey card borders, nested cards, or boxed pill navigation.
- Component-catalog sameness: equal columns of identical cards with no cinematic cut.
- Texture for its own sake — scanlines and grain stay masked, low-opacity, structural.

### Visual Character

- A warm near-black page shell where cream paper panels and smoked console panels cut against each other asymmetrically.
- Cue marks recurring page-wide: ember squares on wordmarks, section heads, chips, checkboxes, stat labels and list feet.
- Phosphor mono readouts — prompts, timestamps, diagnostic micro-labels — in dim gold on smoked ground under a faint scanline mask.
- Oversized stroke-only Antonio numerals clipping through panel corners like title-card frame numbers.
- Square terminal geometry: hairlines only inside tables and under form fields, value jumps instead of borders, almost no shadow.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#0A0908` |
| surface | `#171310` |
| surface_solid | `#171310` |
| text | `#F5EBD4` |
| muted | `#9B8E78` |
| border | `#2A2520` |
| accent | `#C1502F` |
| accent_2 | `#B78B45` |
| accent_soft | `#27140E` |
| on_accent | `#FBF1DC` |
| success | `#8A9A5B` |
| warning | `#C17A2B` |
| error | `#D0452B` |
| info | `#B78B45` |

### Typography

- **Base Size**: 17px
- **Body Font**: Afacad Flux
- **Heading Font**: Antonio
- **Mono Font**: Martian Mono
- **Heading Weight**: 700
- **Heading Transform**: uppercase
- **Letter Spacing**: -0.02em
- **Line Height**: 1.55
- **Scale Ratio**: 1.26
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Afacad+Flux:wght@400;500;600;700&family=Antonio:wght@500;600;700&family=Martian+Mono:wght@400;500;600;700&display=swap

### Radii

- **None**: 0px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px

### Shadows

- **Sm**: 0 1px 0 rgba(245,235,212,0.06)
- **Md**: 0 24px 60px rgba(0,0,0,0.34)
- **Lg**: 0 40px 120px rgba(0,0,0,0.48)

### Spacing

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

### Surfaces

- **Treatment**: Flat matte fields; hierarchy comes from the cream-paper-on-warm-black value jump, not borders or shadows.
- **Card Style**: Square cream paper tickets and smoked console panels in black gutters; each opens with a cue mark; a stroke-only ghost numeral may clip one corner.
- **Bg Pattern**: Warm black field; console panels may carry a repeating-linear-gradient scanline mask at or under 4% opacity and sparse mono coordinate ticks.

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Hairline dividers live only inside tables and as 2px form-field baselines that ignite ember on focus; cards and panels carry no borders and no accent edges.

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: Cut like a title sequence: opacity snaps and short lateral shifts; the settled page is the no-JS default; prefers-reduced-motion collapses everything.

## Rules

### Composition

Compose screens as cinematic cuts on a max-1360px shell: one dominant panel, one narrow console rail, asymmetric 7/5 or 5/4/3 column splits, black gutters breathing between. Open every module with a cue mark (ember square + mono label + phosphor timestamp). Let one oversized stroke-only numeral clip a panel corner per viewport. Spend ember only on what is live, primary, or just changed.

### Density

Medium-high inside readouts and ledgers, offset by open black pauses and cream panels holding blank fields. The tablet band gets its own two-column board; mobile stacks to one column with cue marks preserved above each section.

### Hierarchy

Antonio 700 uppercase at -0.02em for title cards and stat numerals; Afacad Flux at 17px+ for operational copy; Martian Mono 12/15px caps for every label, prompt, slug and table row. One strict scale — 12/15/17/21/27/34/43 plus two display clamps — and no one-off sizes. Scale and placement rank first; the ember cue confirms, never carries alone.

### Signature Patterns

- The cue mark: a 7-12px ember square, a Martian Mono caps label and a phosphor timestamp opening every page, panel, chip, checkbox and stat.
- The cue sweep: links carry a 2px ember baseline that floods to a full ember fill on hover.
- Paper tickets: cream panels in black gutters with Antonio heads, mono meta slugs, and a stroke-only ghost numeral clipping the corner.
- Phosphor readouts: >-prompted mono feeds in dim gold on smoked panels under a masked 4%-opacity scanline.
- Segmented meters: twelve square cells filling in ember or phosphor with a mono readout line.
- The docking ledger: mono tables with hairline rows, muted caps headers, an ember hover wash and coloured status words.

## Layout

### Breakpoints

- **Mobile**: 390px-767px single column, 20px gutters, decorative numerals clamped, non-essential nav and table columns dropped
- **Tablet**: 768px-1023px its own considered board: two-column cuts, the app rail turning horizontal — never a stretched phone column
- **Desktop**: 1024px+ asymmetric cockpit cuts on a max-1360px shell with 20-24px black gutters

### Grid

Desktop composes 7/5 and 5/4/3 column cuts with minmax(0,1fr) tracks so grids never blow out; a 230px app rail anchors dashboards.

### Density

Dense only inside readouts; the frame stays open and smoky so the interface breathes like a late-night room.

### Whitespace

Black gutters are active negative space — at least 20px between panels, generous padding above every title, cream panels allowed large blank fields.

### Responsive

Display type shrinks with clamp() and wraps, never clips; buttons and chips never wrap — layouts stack instead; ultra-wide caps and centres the shell while only the hero spans 100vw.

## Guidance

### Do

- Lead with warm black and cream; spend ember only on what is live, primary, or just changed.
- Open every module with a cue mark; let timestamps and prompts make the page feel operated.
- Keep panels square and gutters black; let one oversized outline numeral clip per viewport.
- Set every label, slug and table row in Martian Mono caps at 12 or 15px.
- Hold the strict type scale, headings to footers.
- Build pages as scenes: booking desks, session boards, tape logs, settle sheets, late bar ledgers.

### Don't

- No neon, blue-purple gradients, or hologram glow.
- No accent-edge rails on cards, no grey borders, no nested cards, no boxed nav pills.
- No cute anime lettering, mascots, or pastel accents.
- No second warm accent family beyond the semantic set.
- No equal-column grids of identical cards — keep the cuts asymmetric.
- No symbol glyphs in copy; cue squares and inline SVG only.
- No default browser controls — every form control is styled.

### Accessibility

Cream-on-black and ink-on-cream pairs exceed WCAG AA at body sizes; ember and semantic colours are always supported by a label, position, or the cue square — never colour alone. Scanline masks stay at or under 4% opacity and never sit behind small text. Focus states ignite a visible ember baseline. prefers-reduced-motion collapses all reveals.

### Usage Context

Booking and session desks, night-operations consoles, tape and recording logs, venue ledgers, cinematic portfolios and editorial tools that want a noir, operated-at-02:17 atmosphere with daylight legibility.

## Imagery Direction

### Summary

Cinematic after-hours interiors and instruments lit by one warm practical against deep warm black: film grain, low key, ember highlights, black negative space left where panels sit.

### Technique

Low-key photographic noir with visible grain; monochrome linework silhouettes may sit masked at low opacity behind panels.

### Hero

The landing hero is an after-hours lounge seen from the quiet side — double bass, ember light streak, starfield window — composed to hold the title card in its black field.
DESIGN.md
---
version: "alpha"
name: "Nighthawk"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#0A0908"
  surface: "#171310"
  surface_solid: "#171310"
  text: "#F5EBD4"
  muted: "#9B8E78"
  border: "#2A2520"
  accent: "#C1502F"
  accent_2: "#B78B45"
  accent_soft: "#27140E"
  on_accent: "#FBF1DC"
  success: "#8A9A5B"
  warning: "#C17A2B"
  error: "#D0452B"
  info: "#B78B45"
typography:
  headline-lg:
    fontFamily: "Antonio"
    fontSize: "2.125rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Antonio"
    fontSize: "1.687rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Afacad Flux"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.55
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "Martian Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  md: "16px"
  lg: "24px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
  step-9: "128px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_solid:
    backgroundColor: "{colors.surface_solid}"
  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-accent_2:
    backgroundColor: "{colors.accent_2}"
  color-reference-accent_soft:
    backgroundColor: "{colors.accent_soft}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "#ffffff"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Nighthawk

## Overview

Nighthawk is a design language for systems operated after midnight: a warm near-black stage, cream paper tickets, one ember accent used like a reel-change cue, and gold phosphor readouts paced like jazz cuts. It keeps the discipline of a 90s anime title card and the restraint of a noir lounge — clipped panels, cue marks, and quiet tension between the hits.

### Values

- Restraint before decoration: warm black, cream paper and one ember cue carry the identity; everything else stays small and functional.
- Cinematic pacing: screens are edited as cuts — a dominant panel, a narrow console rail, black gutters as active negative space.
- Diegetic utility: every module opens with a cue mark — an ember square, a mono label, a phosphor timestamp — so the page reads as a cue sheet being worked, not a display.
- One machine voice: Martian Mono carries every prompt, slug, timestamp and table row; the interface speaks in phosphor.
- Typographic authority: condensed Antonio title cards and stroke-only ghost numerals build hierarchy before any icon or illustration.
- Existential calm: black pauses between dense readouts; nothing fills every gap.

### Anti-Values

- Generic cyberpunk neon, blue-purple gradients, hologram glow, or rain-soaked clutter.
- Cute anime lettering, mascots, stickers, or pastel accents that break the noir tone.
- Accent-edge rails, grey card borders, nested cards, or boxed pill navigation.
- Component-catalog sameness: equal columns of identical cards with no cinematic cut.
- Texture for its own sake — scanlines and grain stay masked, low-opacity, structural.

### Visual Character

- A warm near-black page shell where cream paper panels and smoked console panels cut against each other asymmetrically.
- Cue marks recurring page-wide: ember squares on wordmarks, section heads, chips, checkboxes, stat labels and list feet.
- Phosphor mono readouts — prompts, timestamps, diagnostic micro-labels — in dim gold on smoked ground under a faint scanline mask.
- Oversized stroke-only Antonio numerals clipping through panel corners like title-card frame numbers.
- Square terminal geometry: hairlines only inside tables and under form fields, value jumps instead of borders, almost no shadow.

## 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 | `#0A0908` |
| surface | `#171310` |
| surface_solid | `#171310` |
| text | `#F5EBD4` |
| muted | `#9B8E78` |
| border | `#2A2520` |
| accent | `#C1502F` |
| accent_2 | `#B78B45` |
| accent_soft | `#27140E` |
| on_accent | `#FBF1DC` |
| success | `#8A9A5B` |
| warning | `#C17A2B` |
| error | `#D0452B` |
| info | `#B78B45` |

## Typography

- **Headline-Lg**: Antonio, 2.125rem, weight 700, line-height 1.1.
- **Headline-Md**: Antonio, 1.687rem, weight 600, line-height 1.15.
- **Body-Md**: Afacad Flux, 17px, weight 400, line-height 1.55.
- **Label-Md**: Martian Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
- **Step-9**: `128px`

### Breakpoints

- **Mobile**: 390px-767px single column, 20px gutters, decorative numerals clamped, non-essential nav and table columns dropped
- **Tablet**: 768px-1023px its own considered board: two-column cuts, the app rail turning horizontal — never a stretched phone column
- **Desktop**: 1024px+ asymmetric cockpit cuts on a max-1360px shell with 20-24px black gutters

### Grid

Desktop composes 7/5 and 5/4/3 column cuts with minmax(0,1fr) tracks so grids never blow out; a 230px app rail anchors dashboards.

### Density

Dense only inside readouts; the frame stays open and smoky so the interface breathes like a late-night room.

### Whitespace

Black gutters are active negative space — at least 20px between panels, generous padding above every title, cream panels allowed large blank fields.

### Responsive

Display type shrinks with clamp() and wraps, never clips; buttons and chips never wrap — layouts stack instead; ultra-wide caps and centres the shell while only the hero spans 100vw.

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 0 rgba(245,235,212,0.06)
- **Md**: 0 24px 60px rgba(0,0,0,0.34)
- **Lg**: 0 40px 120px rgba(0,0,0,0.48)

## Shapes

### Rounded

- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: Flat matte fields; hierarchy comes from the cream-paper-on-warm-black value jump, not borders or shadows.
- **Card Style**: Square cream paper tickets and smoked console panels in black gutters; each opens with a cue mark; a stroke-only ghost numeral may clip one corner.
- **Bg Pattern**: Warm black field; console panels may carry a repeating-linear-gradient scanline mask at or under 4% opacity and sparse mono coordinate ticks.

### Borders

- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Hairline dividers live only inside tables and as 2px form-field baselines that ignite ember on focus; cards and panels carry no borders and no accent edges.

## Components

### Composition

Compose screens as cinematic cuts on a max-1360px shell: one dominant panel, one narrow console rail, asymmetric 7/5 or 5/4/3 column splits, black gutters breathing between. Open every module with a cue mark (ember square + mono label + phosphor timestamp). Let one oversized stroke-only numeral clip a panel corner per viewport. Spend ember only on what is live, primary, or just changed.

### Density

Medium-high inside readouts and ledgers, offset by open black pauses and cream panels holding blank fields. The tablet band gets its own two-column board; mobile stacks to one column with cue marks preserved above each section.

### Hierarchy

Antonio 700 uppercase at -0.02em for title cards and stat numerals; Afacad Flux at 17px+ for operational copy; Martian Mono 12/15px caps for every label, prompt, slug and table row. One strict scale — 12/15/17/21/27/34/43 plus two display clamps — and no one-off sizes. Scale and placement rank first; the ember cue confirms, never carries alone.

### Signature Patterns

- The cue mark: a 7-12px ember square, a Martian Mono caps label and a phosphor timestamp opening every page, panel, chip, checkbox and stat.
- The cue sweep: links carry a 2px ember baseline that floods to a full ember fill on hover.
- Paper tickets: cream panels in black gutters with Antonio heads, mono meta slugs, and a stroke-only ghost numeral clipping the corner.
- Phosphor readouts: >-prompted mono feeds in dim gold on smoked panels under a masked 4%-opacity scanline.
- Segmented meters: twelve square cells filling in ember or phosphor with a mono readout line.
- The docking ledger: mono tables with hairline rows, muted caps headers, an ember hover wash and coloured status words.

## 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-019f2e6e-d19d-72b2-8500-d710161f6627/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 Lead with warm black and cream; spend ember only on what is live, primary, or just changed.
- Do Open every module with a cue mark; let timestamps and prompts make the page feel operated.
- Do Keep panels square and gutters black; let one oversized outline numeral clip per viewport.
- Do Set every label, slug and table row in Martian Mono caps at 12 or 15px.
- Do Hold the strict type scale, headings to footers.
- Do Build pages as scenes: booking desks, session boards, tape logs, settle sheets, late bar ledgers.
- Don't No neon, blue-purple gradients, or hologram glow.
- Don't No accent-edge rails on cards, no grey borders, no nested cards, no boxed nav pills.
- Don't No cute anime lettering, mascots, or pastel accents.
- Don't No second warm accent family beyond the semantic set.
- Don't No equal-column grids of identical cards — keep the cuts asymmetric.
- Don't No symbol glyphs in copy; cue squares and inline SVG only.
- Don't No default browser controls — every form control is styled.

### Accessibility

Cream-on-black and ink-on-cream pairs exceed WCAG AA at body sizes; ember and semantic colours are always supported by a label, position, or the cue square — never colour alone. Scanline masks stay at or under 4% opacity and never sit behind small text. Focus states ignite a visible ember baseline. prefers-reduced-motion collapses all reveals.

### Usage Context

Booking and session desks, night-operations consoles, tape and recording logs, venue ledgers, cinematic portfolios and editorial tools that want a noir, operated-at-02:17 atmosphere with daylight legibility.

## Imagery Direction

### Summary

Cinematic after-hours interiors and instruments lit by one warm practical against deep warm black: film grain, low key, ember highlights, black negative space left where panels sit.

### Technique

Low-key photographic noir with visible grain; monochrome linework silhouettes may sit masked at low opacity behind panels.

### Hero

The landing hero is an after-hours lounge seen from the quiet side — double bass, ember light streak, starfield window — composed to hold the title card in its black field.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "nighthawk",
  "type": "registry:theme",
  "title": "Nighthawk shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0908",
      "foreground": "#F5EBD4",
      "card": "#171310",
      "card-foreground": "#F5EBD4",
      "popover": "#171310",
      "popover-foreground": "#F5EBD4",
      "primary": "#F5EBD4",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#9B8E78",
      "muted-foreground": "#F5EBD4",
      "accent": "#C1502F",
      "accent-foreground": "#ffffff",
      "destructive": "#D0452B",
      "border": "#2A2520",
      "input": "#2A2520",
      "ring": "#C1502F",
      "chart-1": "#F5EBD4",
      "chart-2": "#f4f4f5",
      "chart-3": "#C1502F",
      "chart-4": "#8A9A5B",
      "chart-5": "#C17A2B",
      "sidebar": "#171310",
      "sidebar-foreground": "#F5EBD4",
      "sidebar-primary": "#F5EBD4",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#B78B45",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A2520",
      "sidebar-ring": "#C1502F",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F5EBD4",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#C1502F",
      "accent-foreground": "#ffffff",
      "destructive": "#D0452B",
      "border": "#303642",
      "input": "#303642",
      "ring": "#C1502F",
      "chart-1": "#F5EBD4",
      "chart-2": "#f4f4f5",
      "chart-3": "#C1502F",
      "chart-4": "#8A9A5B",
      "chart-5": "#C17A2B",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F5EBD4",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#C1502F",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#C1502F",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019f2e6e-d19d-72b2-8500-d710161f6627",
    "slug": "nighthawk",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent_2",
        "accent_soft",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "success",
        "surface",
        "surface_solid",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

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

at a glance

Typography

headline-lgAntonio · 34px · 700

The quick brown fox jumps

headline-mdAntonio · 27px · 600

The quick brown fox jumps

body-mdAfacad Flux · 17px · 400

The quick brown fox jumps

label-mdMartian Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
Palette

Agent-generated

remix lane

try a remix

Keep Nighthawkand 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
Nighthawk
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

related

More like this