back to gallerydo avoid
design language·noir-satellite-uplink-desk
Noir Satellite Uplink Desk
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
the spec
specification
philosophy
summary
A clean existential control-room language for a fictional orbital intelligence desk: charcoal monitors, off-white manga ink, amber uplink status, and cigarette-smoke haze arranged as if an investigator is waiting for a satellite pass at 03:17. The system borrows the tactile suspicion of 90s anime terminal props without becoming neon cyberpunk: most of the screen is black field, clipped linework, and hard evidence grids; warmth appears only where a relay, lock, or warning deserves attention.
values
Restraint before spectacle: black, bone, amber, and one steel-blue orbital trace carry the entire identity.Machine tactility: keyboards, scanlines, brackets, and status bulbs feel physical enough to smoke beside.Investigative hierarchy: every composition suggests evidence triage, signal lock, and surveillance timing rather than generic analytics.Manga economy: off-white strokes and silhouette blocks describe space with as few marks as possible.Noir atmosphere: haze, vignette, and low contrast shadows create dread without decorative glow.Terminal precision: monospace coordinates, fixed-width labels, and mechanical rows anchor the poetic elements.
anti-values
×Synthetic neon gradients, rainbow HUD color, or gamer sci-fi luminosity.×Rounded SaaS cards, cheerful dashboards, and generic productivity layouts.×Over-illustrated anime fan service; references must be structural, not literal character art.×Evenly weighted component catalogs or three identical panels in a row.
tokens
borders4 items
- accent width
- 2px
- character
- Low-contrast bone/charcoal rules with clipped manga bracket corners and occasional tobacco-orange underline for warnings.
- default width
- 1px
- style
- solid
colors12 items
accent
#D58A2A
background
#050505
border
#38352E
error
#B85D3D
info
#5D7483
muted
#8D887C
primary
#0B0B0A
secondary
#F1EBDD
success
#9A8F53
surface
#11110F
text
#F1EBDD
warning
#D58A2A
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(.2,.8,.2,1)
- philosophy
- Motion should feel like relay hardware catching lock: short amber pulses, slow radar sweep, and no bouncy interface animation.
radii5 items
- full
- 9999px
- lg
- 16px
- md
- 0
- none
- 0
- sm
- 0
shadows3 items
- lg
- inset 0 0 80px rgba(0,0,0,0.72), 0 40px 120px rgba(0,0,0,0.65)
- md
- 0 28px 80px rgba(0,0,0,0.55)
- sm
- 0 0 0 1px rgba(241,235,221,0.05)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64, 96, 128
surfaces3 items
- bg pattern
- Black field with weak olive-gray smoke gradients, soft vignette, sparse star-noise specks, and one steel-blue orbital sweep.
- card style
- Square-corner panels with near-invisible borders, corner crop ticks, topographic line fragments, and amber status bulbs only for active states.
- treatment
- Matte charcoal monitor glass with subtle scanline repeating-linear-gradients and off-white contour strokes.
typography9 items
- base size
- 16px
- body font
- IBM Plex Sans Condensed
- display letter spacing
- -0.04em
- google fonts url
- https://fonts.googleapis.com/css2?family=Big+Shoulders+Inline+Text:wght@700;900&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Red+Hat+Mono:wght@400;500;600&display=swap
- heading font
- Big Shoulders Inline Text
- letter spacing
- -0.02em
- line height
- 1.55
- mono font
- Red Hat Mono
- scale ratio
- 1.25
rules
composition
Use an asymmetric control desk: a dominant monitor bay occupies roughly two thirds of the first view, while narrow transcript, signal, and evidence strips stack on the other side. Keep the perimeter black and allow the orbital diagram to bleed behind panels. Avoid centered hero symmetry; the viewer should feel seated slightly off-axis at a surveillance console.
density
Dense where machines speak, spacious where dread accumulates. Terminal tables can be tight at 4–8px gaps, while the orbital field and black margins open to 64–128px so the interface feels watched rather than busy.
hierarchy
Primary hierarchy comes from scale and light scarcity: giant condensed inline titles, medium bone labels, tiny mono coordinates, then amber bulbs for live status. Amber never fills large areas; it is reserved for locks, pips, underlines, and active keys. Steel blue appears only as orbital geometry or radar sweeps.
signature patterns
Orbital sweep spine: CSS radial and conic gradients draw cropped steel-blue satellite paths that pass behind square monitor panels.Manga bracket panels: every module uses 1px borders plus pseudo-element corner ticks, cropped labels, and off-white ink rules instead of rounded cards.Amber relay grammar: status appears as tiny phosphor lamps, tobacco underlines, and segmented keyboard caps, never as full buttons or large fills.Smoke-vignette atmosphere: blurred olive-gray gradient veils and inset black shadows soften the room while preserving crisp linework.Terminal evidence strips: mono rows use fixed coordinate columns, diagonal slash dividers, and scanline overlays to imply surveillance hardware.
layout
breakpoints
mobile <= 640px, tablet 641-980px, desktop >= 981px; reduce ornamental arcs and stack evidence strips on narrow screens while preserving the amber lock hierarchy.
density
High-density investigative terminal with deliberate pockets of empty black; the contrast between cramped coordinate strips and the large orbital void creates the noir rhythm.
grid
Desktop uses a 12-column max 1360px grid with 16px gutters; the main bay spans 7 columns, side evidence spans 3, and a thin keyboard/status rail spans the lower edge. Tablet collapses to two stacked columns; mobile becomes a single scrollable console with the orbital field first.
whitespace
Use 4-8px gaps inside terminal rows, 24-32px between related panels, and 96-128px atmospheric margins around the top and bottom of the scene.
guidance
- Keep the palette nearly monochrome and let amber marks carry state, urgency, and selection.
- Use square panels, cropped ticks, scanlines, and mono coordinate rows to make every component feel like hardware.
- Let one orbital/radar diagram dominate the scene so the product purpose is legible immediately.
- Use smoke and vignette as atmosphere behind content, not as colorful decoration.
- Set display headlines tightly with -0.04em tracking and body copy at -0.02em.
- Break the grid with a bleeding diagram or offset evidence column rather than equal card rows.
- Name panels with specific surveillance language: pass window, uplink lock, azimuth trace, dead channel.
- Check contrast for bone text on charcoal and keep muted labels large enough to read.
- Do not introduce cyan, magenta, purple, or rainbow HUD accents.
- Do not use rounded SaaS cards, pill-heavy navigation, or glossy app-store surfaces.
- Do not fill space with generic charts, KPIs, or analytics widgets unrelated to satellite uplink work.
- Do not use three equal cards in a row or uniform section weights.
- Do not make smoke obscure text or reduce essential contrast.
- Do not use anime character art; evoke anime through prop design, title cards, and line economy.
- Do not let amber become a large background color; it should remain a phosphor signal.
- Do not center everything; noir control rooms need off-axis suspicion.
katagami spec
# Noir Satellite Uplink Desk ## Philosophy A clean existential control-room language for a fictional orbital intelligence desk: charcoal monitors, off-white manga ink, amber uplink status, and cigarette-smoke haze arranged as if an investigator is waiting for a satellite pass at 03:17. The system borrows the tactile suspicion of 90s anime terminal props without becoming neon cyberpunk: most of the screen is black field, clipped linework, and hard evidence grids; warmth appears only where a relay, lock, or warning deserves attention. ### Values - Restraint before spectacle: black, bone, amber, and one steel-blue orbital trace carry the entire identity. - Machine tactility: keyboards, scanlines, brackets, and status bulbs feel physical enough to smoke beside. - Investigative hierarchy: every composition suggests evidence triage, signal lock, and surveillance timing rather than generic analytics. - Manga economy: off-white strokes and silhouette blocks describe space with as few marks as possible. - Noir atmosphere: haze, vignette, and low contrast shadows create dread without decorative glow. - Terminal precision: monospace coordinates, fixed-width labels, and mechanical rows anchor the poetic elements. ### Anti-Values - Synthetic neon gradients, rainbow HUD color, or gamer sci-fi luminosity. - Rounded SaaS cards, cheerful dashboards, and generic productivity layouts. - Over-illustrated anime fan service; references must be structural, not literal character art. - Evenly weighted component catalogs or three identical panels in a row. ### Visual Character - Use a charcoal-black full-viewport background with off-white 1px manga contour lines, square panel corners, and clipped bracket ticks instead of rounded cards. - Place a dominant left monitor bay with CSS radial orbital arcs in desaturated steel blue, crossed by thin amber lock markers and coordinate labels. - Layer translucent smoke through pseudo-elements using blurred olive-gray gradients and a soft vignette, never bright neon or colorful bloom. - Build hierarchy with condensed noir display type, mono terminal rows, amber status lamps, and tobacco-orange warning underlines on otherwise bone-white text. - Break the grid with one oversized satellite pass diagram that bleeds behind smaller investigative evidence panels and keyboard strips. ## Tokens ### Borders - **Accent Width**: 2px - **Character**: Low-contrast bone/charcoal rules with clipped manga bracket corners and occasional tobacco-orange underline for warnings. - **Default Width**: 1px - **Style**: solid ### Colors | Name | Value | |------|-------| | accent | `#D58A2A` | | background | `#050505` | | border | `#38352E` | | error | `#B85D3D` | | info | `#5D7483` | | muted | `#8D887C` | | primary | `#0B0B0A` | | secondary | `#F1EBDD` | | success | `#9A8F53` | | surface | `#11110F` | | text | `#F1EBDD` | | warning | `#D58A2A` | ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: Motion should feel like relay hardware catching lock: short amber pulses, slow radar sweep, and no bouncy interface animation. ### Radii - **Full**: 9999px - **Lg**: 16px - **Md**: 0 - **None**: 0 - **Sm**: 0 ### Shadows - **Lg**: inset 0 0 80px rgba(0,0,0,0.72), 0 40px 120px rgba(0,0,0,0.65) - **Md**: 0 28px 80px rgba(0,0,0,0.55) - **Sm**: 0 0 0 1px rgba(241,235,221,0.05) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96,128] ### Surfaces - **Bg Pattern**: Black field with weak olive-gray smoke gradients, soft vignette, sparse star-noise specks, and one steel-blue orbital sweep. - **Card Style**: Square-corner panels with near-invisible borders, corner crop ticks, topographic line fragments, and amber status bulbs only for active states. - **Treatment**: Matte charcoal monitor glass with subtle scanline repeating-linear-gradients and off-white contour strokes. ### Typography - **Base Size**: 16px - **Body Font**: IBM Plex Sans Condensed - **Display Letter Spacing**: -0.04em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Big+Shoulders+Inline+Text:wght@700;900&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Red+Hat+Mono:wght@400;500;600&display=swap - **Heading Font**: Big Shoulders Inline Text - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Mono Font**: Red Hat Mono - **Scale Ratio**: 1.25 ## Rules ### Composition Use an asymmetric control desk: a dominant monitor bay occupies roughly two thirds of the first view, while narrow transcript, signal, and evidence strips stack on the other side. Keep the perimeter black and allow the orbital diagram to bleed behind panels. Avoid centered hero symmetry; the viewer should feel seated slightly off-axis at a surveillance console. ### Density Dense where machines speak, spacious where dread accumulates. Terminal tables can be tight at 4–8px gaps, while the orbital field and black margins open to 64–128px so the interface feels watched rather than busy. ### Hierarchy Primary hierarchy comes from scale and light scarcity: giant condensed inline titles, medium bone labels, tiny mono coordinates, then amber bulbs for live status. Amber never fills large areas; it is reserved for locks, pips, underlines, and active keys. Steel blue appears only as orbital geometry or radar sweeps. ### Signature Patterns - Orbital sweep spine: CSS radial and conic gradients draw cropped steel-blue satellite paths that pass behind square monitor panels. - Manga bracket panels: every module uses 1px borders plus pseudo-element corner ticks, cropped labels, and off-white ink rules instead of rounded cards. - Amber relay grammar: status appears as tiny phosphor lamps, tobacco underlines, and segmented keyboard caps, never as full buttons or large fills. - Smoke-vignette atmosphere: blurred olive-gray gradient veils and inset black shadows soften the room while preserving crisp linework. - Terminal evidence strips: mono rows use fixed coordinate columns, diagonal slash dividers, and scanline overlays to imply surveillance hardware. ## Layout ### Breakpoints mobile <= 640px, tablet 641-980px, desktop >= 981px; reduce ornamental arcs and stack evidence strips on narrow screens while preserving the amber lock hierarchy. ### Density High-density investigative terminal with deliberate pockets of empty black; the contrast between cramped coordinate strips and the large orbital void creates the noir rhythm. ### Grid Desktop uses a 12-column max 1360px grid with 16px gutters; the main bay spans 7 columns, side evidence spans 3, and a thin keyboard/status rail spans the lower edge. Tablet collapses to two stacked columns; mobile becomes a single scrollable console with the orbital field first. ### Whitespace Use 4-8px gaps inside terminal rows, 24-32px between related panels, and 96-128px atmospheric margins around the top and bottom of the scene. ## Guidance ### Do - Keep the palette nearly monochrome and let amber marks carry state, urgency, and selection. - Use square panels, cropped ticks, scanlines, and mono coordinate rows to make every component feel like hardware. - Let one orbital/radar diagram dominate the scene so the product purpose is legible immediately. - Use smoke and vignette as atmosphere behind content, not as colorful decoration. - Set display headlines tightly with -0.04em tracking and body copy at -0.02em. - Break the grid with a bleeding diagram or offset evidence column rather than equal card rows. - Name panels with specific surveillance language: pass window, uplink lock, azimuth trace, dead channel. - Check contrast for bone text on charcoal and keep muted labels large enough to read. ### Don't - Do not introduce cyan, magenta, purple, or rainbow HUD accents. - Do not use rounded SaaS cards, pill-heavy navigation, or glossy app-store surfaces. - Do not fill space with generic charts, KPIs, or analytics widgets unrelated to satellite uplink work. - Do not use three equal cards in a row or uniform section weights. - Do not make smoke obscure text or reduce essential contrast. - Do not use anime character art; evoke anime through prop design, title cards, and line economy. - Do not let amber become a large background color; it should remain a phosphor signal. - Do not center everything; noir control rooms need off-axis suspicion. ### Accessibility Maintain readable 15-16px body type, preserve visible focus outlines in amber and bone, avoid conveying state by color alone by pairing lamps with labels, and keep smoke overlays below text layers. ### Usage Context Best for fictional surveillance tools, investigative cyberpunk interfaces, orbital tracking software, noir editorial launch pages, and cinematic terminal props where restraint and tension matter more than feature density.
DESIGN.md
---
version: "alpha"
name: "Noir Satellite Uplink Desk"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#D58A2A"
background: "#050505"
border: "#38352E"
error: "#B85D3D"
info: "#5D7483"
muted: "#8D887C"
primary: "#0B0B0A"
secondary: "#F1EBDD"
success: "#9A8F53"
surface: "#11110F"
text: "#F1EBDD"
warning: "#D58A2A"
typography:
headline-lg:
fontFamily: "Big Shoulders Inline Text"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Big Shoulders Inline Text"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans Condensed"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Red Hat Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "16px"
md: "0px"
none: "0px"
sm: "0px"
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-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#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"
---
# Noir Satellite Uplink Desk
## Overview
A clean existential control-room language for a fictional orbital intelligence desk: charcoal monitors, off-white manga ink, amber uplink status, and cigarette-smoke haze arranged as if an investigator is waiting for a satellite pass at 03:17. The system borrows the tactile suspicion of 90s anime terminal props without becoming neon cyberpunk: most of the screen is black field, clipped linework, and hard evidence grids; warmth appears only where a relay, lock, or warning deserves attention.
### Values
- Restraint before spectacle: black, bone, amber, and one steel-blue orbital trace carry the entire identity.
- Machine tactility: keyboards, scanlines, brackets, and status bulbs feel physical enough to smoke beside.
- Investigative hierarchy: every composition suggests evidence triage, signal lock, and surveillance timing rather than generic analytics.
- Manga economy: off-white strokes and silhouette blocks describe space with as few marks as possible.
- Noir atmosphere: haze, vignette, and low contrast shadows create dread without decorative glow.
- Terminal precision: monospace coordinates, fixed-width labels, and mechanical rows anchor the poetic elements.
### Anti-Values
- Synthetic neon gradients, rainbow HUD color, or gamer sci-fi luminosity.
- Rounded SaaS cards, cheerful dashboards, and generic productivity layouts.
- Over-illustrated anime fan service; references must be structural, not literal character art.
- Evenly weighted component catalogs or three identical panels in a row.
### Visual Character
- Use a charcoal-black full-viewport background with off-white 1px manga contour lines, square panel corners, and clipped bracket ticks instead of rounded cards.
- Place a dominant left monitor bay with CSS radial orbital arcs in desaturated steel blue, crossed by thin amber lock markers and coordinate labels.
- Layer translucent smoke through pseudo-elements using blurred olive-gray gradients and a soft vignette, never bright neon or colorful bloom.
- Build hierarchy with condensed noir display type, mono terminal rows, amber status lamps, and tobacco-orange warning underlines on otherwise bone-white text.
- Break the grid with one oversized satellite pass diagram that bleeds behind smaller investigative evidence panels and keyboard strips.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| accent | `#D58A2A` |
| background | `#050505` |
| border | `#38352E` |
| error | `#B85D3D` |
| info | `#5D7483` |
| muted | `#8D887C` |
| primary | `#0B0B0A` |
| secondary | `#F1EBDD` |
| success | `#9A8F53` |
| surface | `#11110F` |
| text | `#F1EBDD` |
| warning | `#D58A2A` |
## Typography
- **Headline-Lg**: Big Shoulders Inline Text, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Big Shoulders Inline Text, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans Condensed, 16px, weight 400, line-height 1.55.
- **Label-Md**: Red Hat 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 <= 640px, tablet 641-980px, desktop >= 981px; reduce ornamental arcs and stack evidence strips on narrow screens while preserving the amber lock hierarchy.
### Density
High-density investigative terminal with deliberate pockets of empty black; the contrast between cramped coordinate strips and the large orbital void creates the noir rhythm.
### Grid
Desktop uses a 12-column max 1360px grid with 16px gutters; the main bay spans 7 columns, side evidence spans 3, and a thin keyboard/status rail spans the lower edge. Tablet collapses to two stacked columns; mobile becomes a single scrollable console with the orbital field first.
### Whitespace
Use 4-8px gaps inside terminal rows, 24-32px between related panels, and 96-128px atmospheric margins around the top and bottom of the scene.
## Elevation & Depth
### Shadows
- **Lg**: inset 0 0 80px rgba(0,0,0,0.72), 0 40px 120px rgba(0,0,0,0.65)
- **Md**: 0 28px 80px rgba(0,0,0,0.55)
- **Sm**: 0 0 0 1px rgba(241,235,221,0.05)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `16px`
- **Md**: `0px`
- **None**: `0px`
- **Sm**: `0px`
### Surfaces
- **Bg Pattern**: Black field with weak olive-gray smoke gradients, soft vignette, sparse star-noise specks, and one steel-blue orbital sweep.
- **Card Style**: Square-corner panels with near-invisible borders, corner crop ticks, topographic line fragments, and amber status bulbs only for active states.
- **Treatment**: Matte charcoal monitor glass with subtle scanline repeating-linear-gradients and off-white contour strokes.
### Borders
- **Accent Width**: 2px
- **Character**: Low-contrast bone/charcoal rules with clipped manga bracket corners and occasional tobacco-orange underline for warnings.
- **Default Width**: 1px
- **Style**: solid
## Components
### Composition
Use an asymmetric control desk: a dominant monitor bay occupies roughly two thirds of the first view, while narrow transcript, signal, and evidence strips stack on the other side. Keep the perimeter black and allow the orbital diagram to bleed behind panels. Avoid centered hero symmetry; the viewer should feel seated slightly off-axis at a surveillance console.
### Density
Dense where machines speak, spacious where dread accumulates. Terminal tables can be tight at 4–8px gaps, while the orbital field and black margins open to 64–128px so the interface feels watched rather than busy.
### Hierarchy
Primary hierarchy comes from scale and light scarcity: giant condensed inline titles, medium bone labels, tiny mono coordinates, then amber bulbs for live status. Amber never fills large areas; it is reserved for locks, pips, underlines, and active keys. Steel blue appears only as orbital geometry or radar sweeps.
### Signature Patterns
- Orbital sweep spine: CSS radial and conic gradients draw cropped steel-blue satellite paths that pass behind square monitor panels.
- Manga bracket panels: every module uses 1px borders plus pseudo-element corner ticks, cropped labels, and off-white ink rules instead of rounded cards.
- Amber relay grammar: status appears as tiny phosphor lamps, tobacco underlines, and segmented keyboard caps, never as full buttons or large fills.
- Smoke-vignette atmosphere: blurred olive-gray gradient veils and inset black shadows soften the room while preserving crisp linework.
- Terminal evidence strips: mono rows use fixed coordinate columns, diagonal slash dividers, and scanline overlays to imply surveillance hardware.
## 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/noir-satellite-uplink-desk/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 Keep the palette nearly monochrome and let amber marks carry state, urgency, and selection.
- Do Use square panels, cropped ticks, scanlines, and mono coordinate rows to make every component feel like hardware.
- Do Let one orbital/radar diagram dominate the scene so the product purpose is legible immediately.
- Do Use smoke and vignette as atmosphere behind content, not as colorful decoration.
- Do Set display headlines tightly with -0.04em tracking and body copy at -0.02em.
- Do Break the grid with a bleeding diagram or offset evidence column rather than equal card rows.
- Do Name panels with specific surveillance language: pass window, uplink lock, azimuth trace, dead channel.
- Do Check contrast for bone text on charcoal and keep muted labels large enough to read.
- Don't Do not introduce cyan, magenta, purple, or rainbow HUD accents.
- Don't Do not use rounded SaaS cards, pill-heavy navigation, or glossy app-store surfaces.
- Don't Do not fill space with generic charts, KPIs, or analytics widgets unrelated to satellite uplink work.
- Don't Do not use three equal cards in a row or uniform section weights.
- Don't Do not make smoke obscure text or reduce essential contrast.
- Don't Do not use anime character art; evoke anime through prop design, title cards, and line economy.
- Don't Do not let amber become a large background color; it should remain a phosphor signal.
- Don't Do not center everything; noir control rooms need off-axis suspicion.
### Accessibility
Maintain readable 15-16px body type, preserve visible focus outlines in amber and bone, avoid conveying state by color alone by pairing lamps with labels, and keep smoke overlays below text layers.
### Usage Context
Best for fictional surveillance tools, investigative cyberpunk interfaces, orbital tracking software, noir editorial launch pages, and cinematic terminal props where restraint and tension matter more than feature density.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "noir-satellite-uplink-desk",
"type": "registry:theme",
"title": "Noir Satellite Uplink Desk shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#050505",
"foreground": "#F1EBDD",
"card": "#11110F",
"card-foreground": "#F1EBDD",
"popover": "#11110F",
"popover-foreground": "#F1EBDD",
"primary": "#0B0B0A",
"primary-foreground": "#ffffff",
"secondary": "#F1EBDD",
"secondary-foreground": "#111111",
"muted": "#8D887C",
"muted-foreground": "#F1EBDD",
"accent": "#D58A2A",
"accent-foreground": "#ffffff",
"destructive": "#B85D3D",
"border": "#38352E",
"input": "#38352E",
"ring": "#D58A2A",
"chart-1": "#0B0B0A",
"chart-2": "#F1EBDD",
"chart-3": "#D58A2A",
"chart-4": "#9A8F53",
"chart-5": "#D58A2A",
"sidebar": "#11110F",
"sidebar-foreground": "#F1EBDD",
"sidebar-primary": "#0B0B0A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5D7483",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#38352E",
"sidebar-ring": "#D58A2A",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0B0B0A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D58A2A",
"accent-foreground": "#ffffff",
"destructive": "#B85D3D",
"border": "#303642",
"input": "#303642",
"ring": "#D58A2A",
"chart-1": "#0B0B0A",
"chart-2": "#F1EBDD",
"chart-3": "#D58A2A",
"chart-4": "#9A8F53",
"chart-5": "#D58A2A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0B0B0A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D58A2A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D58A2A",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "noir-satellite-uplink-desk",
"slug": "noir-satellite-uplink-desk",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"typography": [
"base_size",
"body_font",
"display_letter_spacing",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · noir-satellite-uplink-desk
DESIGN.md
at a glance
Typography
headline-lgBig Shoulders Inline Text · 31px · 700
The quick brown fox jumps
headline-mdBig Shoulders Inline Text · 25px · 600
The quick brown fox jumps
body-mdIBM Plex Sans Condensed · 16px · 400
The quick brown fox jumps
label-mdRed Hat 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
- step-9128px
Shape
full9999px
lg16px
md0px
none0px
sm0px
shadcn/ui
implementation kit
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 tabletheme css
:root {
--background: #050505;
--foreground: #F1EBDD;
--card: #11110F;
--card-foreground: #F1EBDD;
--popover: #11110F;
--popover-foreground: #F1EBDD;
--primary: #0B0B0A;
--primary-foreground: #ffffff;
--secondary: #F1EBDD;
--secondary-foreground: #111111;
--muted: #8D887C;
--muted-foreground: #F1EBDD;
--accent: #D58A2A;
--accent-foreground: #ffffff;
--destructive: #B85D3D;
--border: #38352E;
--input: #38352E;
--ring: #D58A2A;
--chart-1: #0B0B0A;
--chart-2: #F1EBDD;
--chart-3: #D58A2A;
--chart-4: #9A8F53;
--chart-5: #D58A2A;
--sidebar: #11110F;
--sidebar-foreground: #F1EBDD;
--sidebar-primary: #0B0B0A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #5D7483;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #38352E;
--sidebar-ring: #D58A2A;
--radius: 0;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #0B0B0A;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #D58A2A;
--accent-foreground: #ffffff;
--destructive: #B85D3D;
--border: #303642;
--input: #303642;
--ring: #D58A2A;
--chart-1: #0B0B0A;
--chart-2: #F1EBDD;
--chart-3: #D58A2A;
--chart-4: #9A8F53;
--chart-5: #D58A2A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #0B0B0A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #D58A2A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #D58A2A;
--radius: 0;
}
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 NoirSatelliteUplinkDeskShadcnKit() {
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">Noir Satellite Uplink Desk</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": "noir-satellite-uplink-desk",
"type": "registry:theme",
"title": "Noir Satellite Uplink Desk shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#050505",
"foreground": "#F1EBDD",
"card": "#11110F",
"card-foreground": "#F1EBDD",
"popover": "#11110F",
"popover-foreground": "#F1EBDD",
"primary": "#0B0B0A",
"primary-foreground": "#ffffff",
"secondary": "#F1EBDD",
"secondary-foreground": "#111111",
"muted": "#8D887C",
"muted-foreground": "#F1EBDD",
"accent": "#D58A2A",
"accent-foreground": "#ffffff",
"destructive": "#B85D3D",
"border": "#38352E",
"input": "#38352E",
"ring": "#D58A2A",
"chart-1": "#0B0B0A",
"chart-2": "#F1EBDD",
"chart-3": "#D58A2A",
"chart-4": "#9A8F53",
"chart-5": "#D58A2A",
"sidebar": "#11110F",
"sidebar-foreground": "#F1EBDD",
"sidebar-primary": "#0B0B0A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5D7483",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#38352E",
"sidebar-ring": "#D58A2A",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0B0B0A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D58A2A",
"accent-foreground": "#ffffff",
"destructive": "#B85D3D",
"border": "#303642",
"input": "#303642",
"ring": "#D58A2A",
"chart-1": "#0B0B0A",
"chart-2": "#F1EBDD",
"chart-3": "#D58A2A",
"chart-4": "#9A8F53",
"chart-5": "#D58A2A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0B0B0A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D58A2A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D58A2A",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "noir-satellite-uplink-desk",
"slug": "noir-satellite-uplink-desk",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"typography": [
"base_size",
"body_font",
"display_letter_spacing",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
component recipescompatibility fallback
# Noir Satellite Uplink Desk shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `noir-satellite-uplink-desk`
Slug: `noir-satellite-uplink-desk`
## Intent
A clean existential control-room language for a fictional orbital intelligence desk: charcoal monitors, off-white manga ink, amber uplink status, and cigarette-smoke haze arranged as if an investigator is waiting for a satellite pass at 03:17. The system borrows the tactile suspicion of 90s anime terminal props without becoming neon cyberpunk: most of the screen is black field, clipped linework, and hard evidence grids; warmth appears only where a relay, lock, or warning deserves attention.
## 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:
{
"accent": "#D58A2A",
"background": "#050505",
"border": "#38352E",
"error": "#B85D3D",
"info": "#5D7483",
"muted": "#8D887C",
"primary": "#0B0B0A",
"secondary": "#F1EBDD",
"success": "#9A8F53",
"surface": "#11110F",
"text": "#F1EBDD",
"warning": "#D58A2A"
}
Typography:
{
"base_size": "16px",
"body_font": "IBM Plex Sans Condensed",
"display_letter_spacing": "-0.04em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Big+Shoulders+Inline+Text:wght@700;900&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Red+Hat+Mono:wght@400;500;600&display=swap",
"heading_font": "Big Shoulders Inline Text",
"letter_spacing": "-0.02em",
"line_height": 1.55,
"mono_font": "Red Hat Mono",
"scale_ratio": 1.25
}
## Visual character to preserve
- Use a charcoal-black full-viewport background with off-white 1px manga contour lines, square panel corners, and clipped bracket ticks instead of rounded cards.
- Place a dominant left monitor bay with CSS radial orbital arcs in desaturated steel blue, crossed by thin amber lock markers and coordinate labels.
- Layer translucent smoke through pseudo-elements using blurred olive-gray gradients and a soft vignette, never bright neon or colorful bloom.
- Build hierarchy with condensed noir display type, mono terminal rows, amber status lamps, and tobacco-orange warning underlines on otherwise bone-white text.
- Break the grid with one oversized satellite pass diagram that bleeds behind smaller investigative evidence panels and keyboard strips.
## ShadSync visual profile
{
"family": "brutalist",
"material": "ink",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": false,
"stickerBadges": false,
"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/noir-satellite-uplink-desk/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: Keep the palette nearly monochrome and let amber marks carry state, urgency, and selection.; Use square panels, cropped ticks, scanlines, and mono coordinate rows to make every component feel like hardware.; Let one orbital/radar diagram dominate the scene so the product purpose is legible immediately.; Use smoke and vignette as atmosphere behind content, not as colorful decoration.; Set display headlines tightly with -0.04em tracking and body copy at -0.02em.; Break the grid with a bleeding diagram or offset evidence column rather than equal card rows.; Name panels with specific surveillance language: pass window, uplink lock, azimuth trace, dead channel.; Check contrast for bone text on charcoal and keep muted labels large enough to read.
- Do not: Do not introduce cyan, magenta, purple, or rainbow HUD accents.; Do not use rounded SaaS cards, pill-heavy navigation, or glossy app-store surfaces.; Do not fill space with generic charts, KPIs, or analytics widgets unrelated to satellite uplink work.; Do not use three equal cards in a row or uniform section weights.; Do not make smoke obscure text or reduce essential contrast.; Do not use anime character art; evoke anime through prop design, title cards, and line economy.; Do not let amber become a large background color; it should remain a phosphor signal.; Do not center everything; noir control rooms need off-axis suspicion.
## 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 NoirSatelliteUplinkDeskShadcnKit() {
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">Noir Satellite Uplink Desk</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
{
"breakpoints": "mobile <= 640px, tablet 641-980px, desktop >= 981px; reduce ornamental arcs and stack evidence strips on narrow screens while preserving the amber lock hierarchy.",
"density": "High-density investigative terminal with deliberate pockets of empty black; the contrast between cramped coordinate strips and the large orbital void creates the noir rhythm.",
"grid": "Desktop uses a 12-column max 1360px grid with 16px gutters; the main bay spans 7 columns, side evidence spans 3, and a thin keyboard/status rail spans the lower edge. Tablet collapses to two stacked columns; mobile becomes a single scrollable console with the orbital field first.",
"whitespace": "Use 4-8px gaps inside terminal rows, 24-32px between related panels, and 96-128px atmospheric margins around the top and bottom of the scene."
}
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": "noir-satellite-uplink-desk",
"name": "Noir Satellite Uplink Desk",
"slug": "noir-satellite-uplink-desk"
},
"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": [
"Use a charcoal-black full-viewport background with off-white 1px manga contour lines, square panel corners, and clipped bracket ticks instead of rounded cards.",
"Place a dominant left monitor bay with CSS radial orbital arcs in desaturated steel blue, crossed by thin amber lock markers and coordinate labels.",
"Layer translucent smoke through pseudo-elements using blurred olive-gray gradients and a soft vignette, never bright neon or colorful bloom.",
"Build hierarchy with condensed noir display type, mono terminal rows, amber status lamps, and tobacco-orange warning underlines on otherwise bone-white text.",
"Break the grid with one oversized satellite pass diagram that bleeds behind smaller investigative evidence panels and keyboard strips."
],
"visualProfile": {
"family": "brutalist",
"material": "ink",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": false,
"stickerBadges": false,
"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": "Noir Satellite Uplink Desk 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": [
"Keep the palette nearly monochrome and let amber marks carry state, urgency, and selection.",
"Use square panels, cropped ticks, scanlines, and mono coordinate rows to make every component feel like hardware.",
"Let one orbital/radar diagram dominate the scene so the product purpose is legible immediately.",
"Use smoke and vignette as atmosphere behind content, not as colorful decoration.",
"Set display headlines tightly with -0.04em tracking and body copy at -0.02em.",
"Break the grid with a bleeding diagram or offset evidence column rather than equal card rows.",
"Name panels with specific surveillance language: pass window, uplink lock, azimuth trace, dead channel.",
"Check contrast for bone text on charcoal and keep muted labels large enough to read."
],
"dont": [
"Do not introduce cyan, magenta, purple, or rainbow HUD accents.",
"Do not use rounded SaaS cards, pill-heavy navigation, or glossy app-store surfaces.",
"Do not fill space with generic charts, KPIs, or analytics widgets unrelated to satellite uplink work.",
"Do not use three equal cards in a row or uniform section weights.",
"Do not make smoke obscure text or reduce essential contrast.",
"Do not use anime character art; evoke anime through prop design, title cards, and line economy.",
"Do not let amber become a large background color; it should remain a phosphor signal.",
"Do not center everything; noir control rooms need off-axis suspicion."
]
}
}