Phosphor Deck
Phosphor Deck is a mission-console design language for the moment the numbers move.
Its pictures are drawn in Cathode.
Download DESIGN.md
Tokens, rules and the paired art style Cathode.
Preview
Typography
Each face set in this language's own words.
Phosphor Deck
Phosphor Deck
Phosphor Deck is a mission-console design language for the moment the numbers move.
Phosphor Deck is a mission-console design language for the moment the numbers move.
Specification
Philosophy
summary
Phosphor Deck is a mission-console design language for the moment the numbers move. Dense telemetry sits on near-black green glass: one resting green carries live data, cyan is the secondary channel, amber claims emphasis, and red is held for the one alarm that matters. Colour carries state and nothing else, and everything that matters is mounted in an instrument housing: a chamfered phosphor face opened by a status rail, with a scanline display zone and a vector-grid underlay wherever a trace needs depth.
It values
- Colour carries state and nothing else: green rests, amber claims, red is held.
- Every signal has a job, a hex value and a contrast ratio against the ground, and none does another's work.
- The value reads before the label: numerics are the largest, brightest thing in a bay.
- Mount what matters in a housing and leave the rest on the glass.
- Tight inside a bay, generous between bays, the same deck from a 390px handset to a wall of 2560px glass.
It refuses
- Rounded consumer pills: controls are cut, not rounded.
- Glass and blur: a borderless, blurred card hides where one reading ends and the next begins.
- Slow or bouncy motion: the bloom brightens and nothing drifts.
- Small tracked uppercase labels, status chips that claim all systems green, and invented testimonials.
- A line on any edge of a housing: no seam, outline or highlight rule around or across a card.
visual character
- A near-black green ground #07110E with phosphor-face housings #0C1B17, parted by tint and space and never by a line.
- Chamfered geometry: a 14px cut on the top-left and bottom-right corners of every housing, radius 0 on everything else.
- Status rails: the title on the left in green and the signal code on the right in amber, with nothing drawn between them.
- Scanline display zones with a vector-grid or horizon underlay, used for charts and instruments only.
- Numerics in Share Tech Mono at 32 to 51px with a soft green or cyan bloom, the brightest thing in any bay.
- A hero captured off a CRT in the Cathode style: a green wireframe globe with a cyan ascent arc, and a calm field on the left for the headline.
lineage
Revised in place from arni's approved range-9 specimen (phosphor-deck-i, 2026-10-07). It keeps the deck-black ground, phosphor green, cyan and amber, Orbitron, Chakra Petch and Share Tech Mono, the page order (hero, grammar, deck, close) and the chamfered housing with its status rail. It replaces icon cards and invented quotes with facts, regenerates the hero with a calm left field and no veil, moves success to a mint and error to a coral, sets labels at 17px in sentence case, and removes the housing seam and the rule on the rail.
Tokens
colors14
typography13
- heading font
- Orbitron
- body font
- Chakra Petch
- mono font
- Share Tech Mono
- heading weight
- 800
- body weight
- 400
- button weight
- 700
- mono weight
- 400
- heading transform
- none
- letter spacing
- 0.02em on Orbitron titles, 0 on Chakra Petch and Share Tech Mono
- base size
- 17px
- line height
- 1.55
- scale
- 14.5px, 17px, 20px, 26px, 38px, 46px, 59px
- google fonts url
- https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;800&family=Chakra+Petch:wght@400;500;600;700&family=Share+Tech+Mono&display=swap
radii4
- none
- 0px
- md
- 0px
- lg
- 0px
- full
- 0px
geometry1
- chamfer
- 14px on housings, 10px on buttons, 8px on fields, 5px on small marks, always the top-left and bottom-right corners cut by clip-path
shadows4
- bloom green
- drop-shadow(0 0 16px rgba(124,255,114,0.45)) on a wrapper, because a clip-path cuts a shadow on its own element
- bloom text
- text-shadow 0 0 26px rgba(124,255,114,0.4) on numerics, cyan at 0.35 on a secondary reading
- lift
- drop-shadow(0 14px 28px rgba(0,0,0,0.6)) plus a green bloom at 0.16, only on an open menu, dialog or toast
- none
- housings and fields carry no outline, seam or shadow at rest
spacing2
- base
- 8px
- scale
- 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 112px
surfaces4
- treatment
- near-black green glass with mounted instrument housings
- card style
- a chamfered #0C1B17 face on the #07110E ground, opened by a status rail; no outline, no seam, no bar on any side
- display zone
- #102521 under a 3px horizontal scanline field at 26% black, with a vector-grid or horizon underlay for charts
- bg pattern
- none on the ground; scanlines live only inside display zones
borders3
- default width
- 0
- style
- none
- character
- No borders, seams or edge rules. A housing is parted from the ground by its tint and by space. The border colour #35584F is used only for vector-grid strokes inside a display zone.
motion3
- duration
- 180ms
- easing
- cubic-bezier(0.2, 0.8, 0.2, 1)
- philosophy
- Snappy. Hover and focus brighten the bloom or the face; nothing bounces, drifts or reshapes. Reduced motion removes every transition and the settled page is complete without script.
controls3
- height
- 54px buttons, 54px fields, 28px switch track
- radius
- 0px, chamfered by clip-path
- focus
- an inner 3px ring on a button, a stacked phosphor ring plus bloom on a field
Rules
composition
- Order a page hero, grammar, deck, close: a full-bleed Cathode hero with the headline on its calm left field, the three signals with their hex values and contrast ratios, one deck section holding the numerics, a trace and the bay status, then one closing action.
- Mount anything that matters in one housing. Never nest a housing in a housing, and leave plain copy on the glass.
- Set the headline on the picture pixels of the calm left field. Never add a veil, scrim or panel over the hero.
- Give a view one primary action. A second action is a text link.
hierarchy
- Numerics first: Share Tech Mono at 32 to 51px with a bloom is the brightest and largest thing in a bay.
- Orbitron 800 for titles at 0.02em, Chakra Petch 400 for prose at 17px, Share Tech Mono for readings, codes and times.
- Labels are 17px in sentence case. A signal code in a status rail may be mono caps.
- Amber arrives as a block or a code, never as a coloured word inside a paragraph.
density
Moderately high inside a bay, generous between bays: 48 to 64px between housings, 20 to 30px inside one, and 64 to 112px between sections. Density reads as engineered, not crowded.
signature patterns
- Instrument housing: a chamfered #0C1B17 face with a 14px cut on two opposite corners, opened by a status rail, framed by tint and space and never by a line.
- Status rail: the title on the left in green and a signal code on the right in amber, with nothing between them.
- Scanline display zone with a vector-grid underlay: where a trace, a plot or a gauge lives.
- Phosphor bloom: numerics and traces glow, and hover and focus brighten the glow or the face. Nothing moves.
- Signal roles: three lights, each with a job, a hex value and a contrast ratio against the ground.
Layout
grid
- type
- hero, grammar, deck, close
- max width
- 1180px content, centred above 1440px; only the hero spans the viewport
- gutter
- 64px desktop, 5vw tablet, 20px phone
- column behavior
- Three-up lists and a 5fr/7fr deck split use minmax(0,1fr) columns with min-width:0 on every child; everything stacks to one column below 1000px.
whitespace
- section gap
- 112px desktop, 64px phone
- card gap
- 48 to 72px between housings, 24 to 56px between columns
- content padding
- 20 to 30px inside a housing under its rail
- approach
- Tight inside a bay, generous between bays. Tint and space do the separating.
density
- default
- engineered
- comfortable
- button height 54pxinput height 54pxrow height 44 to 56px table rows
responsive
From 390px to 2560px. Below 1000px the hero stacks: the headline first, then the Cathode picture at 300 to 500px tall. Tablets (600 to 1000px) keep the single column with larger measure and two-up numerics; non-essential table columns drop on phones. Above 1440px the content caps at 1180px and centres.
breakpoints
- mobile
- 390px
- phone max
- 600px
- tablet
- 834px
- stack
- 1000px
- desktop
- 1280px
- ultrawide
- 2560px
Guidance
Do
- Let green be the resting data state, amber the emphasis and red the one alarm held in reserve.
- State each signal's job, hex value and contrast ratio where it is introduced.
- Mount every important region as a chamfered housing opened by a status rail.
- Set numerics in Share Tech Mono, large and glowing, with the label under them in muted 17px.
- Brighten the bloom or the face on hover and focus, and ring a focused button on the inside.
- Pair every status colour with a word and an SVG icon.
Avoid
- Don't draw a seam, outline or highlight rule on any side of a housing, and don't draw a rule inside its rail.
- Don't add rounded pills, blurred glass cards or gradient washes over the hero.
- Don't use tiny tracked uppercase labels, status chips or invented testimonials.
- Don't let amber or red read as a coloured word in a paragraph.
- Don't use slow, bouncy or drifting motion.
- Don't wash the ground toward white or pastel.
Imagery
pairs with
cathode
art style id
en-019efa09-e80f-7032-af0d-074c0f36d645
summary
Imagery captured off a glowing cathode-ray tube in the Cathode style: baked-in scanlines, phosphor bloom, a little chromatic fringing and a gentle barrel curve, luminous green with cyan and amber on near-black. The landing hero is one wireframe globe with a cyan ascent arc, composed to the right with a calm, dark left 42% for the headline, edge to edge with no bezel and no veil.
subjects
- a green vector wireframe globe with a cyan ascent arc
- orbital trajectory and telemetry displays
- oscilloscope waveforms and readout panels
- instrument clusters and gauges
usage
The landing hero is painted with background-image: var(--hero-image) on a real element, never an img tag, with the picture's subject on the right and the headline set on its calm left field. On phones the picture drops below the headline at 300 to 500px tall.
avoid
A monitor bezel or TV set; a gradient veil or panel over the hero; text baked into the picture; a centred tiny subject on blank space; pastel or muddy tones.
Katagami spec file
# Phosphor Deck
## Philosophy
Phosphor Deck is a mission-console design language for the moment the numbers move. Dense telemetry sits on near-black green glass: one resting green carries live data, cyan is the secondary channel, amber claims emphasis, and red is held for the one alarm that matters. Colour carries state and nothing else, and everything that matters is mounted in an instrument housing: a chamfered phosphor face opened by a status rail, with a scanline display zone and a vector-grid underlay wherever a trace needs depth.
### Values
- Colour carries state and nothing else: green rests, amber claims, red is held.
- Every signal has a job, a hex value and a contrast ratio against the ground, and none does another's work.
- The value reads before the label: numerics are the largest, brightest thing in a bay.
- Mount what matters in a housing and leave the rest on the glass.
- Tight inside a bay, generous between bays, the same deck from a 390px handset to a wall of 2560px glass.
### Anti-Values
- Rounded consumer pills: controls are cut, not rounded.
- Glass and blur: a borderless, blurred card hides where one reading ends and the next begins.
- Slow or bouncy motion: the bloom brightens and nothing drifts.
- Small tracked uppercase labels, status chips that claim all systems green, and invented testimonials.
- A line on any edge of a housing: no seam, outline or highlight rule around or across a card.
### Visual Character
- A near-black green ground #07110E with phosphor-face housings #0C1B17, parted by tint and space and never by a line.
- Chamfered geometry: a 14px cut on the top-left and bottom-right corners of every housing, radius 0 on everything else.
- Status rails: the title on the left in green and the signal code on the right in amber, with nothing drawn between them.
- Scanline display zones with a vector-grid or horizon underlay, used for charts and instruments only.
- Numerics in Share Tech Mono at 32 to 51px with a soft green or cyan bloom, the brightest thing in any bay.
- A hero captured off a CRT in the Cathode style: a green wireframe globe with a cyan ascent arc, and a calm field on the left for the headline.
### Lineage
> Revised in place from arni's approved range-9 specimen (phosphor-deck-i, 2026-10-07). It keeps the deck-black ground, phosphor green, cyan and amber, Orbitron, Chakra Petch and Share Tech Mono, the page order (hero, grammar, deck, close) and the chamfered housing with its status rail. It replaces icon cards and invented quotes with facts, regenerates the hero with a calm left field and no veil, moves success to a mint and error to a coral, sets labels at 17px in sentence case, and removes the housing seam and the rule on the rail.
## Tokens
### Colors
| Name | Value |
|------|-------|
| bg | `#07110E` |
| surface | `#0C1B17` |
| surface_2 | `#102521` |
| text | `#D8FFD7` |
| muted | `#82A89B` |
| border | `#35584F` |
| accent | `#7CFF72` |
| accent_2 | `#6BE7FF` |
| accent_3 | `#FFB347` |
| on_accent | `#07110E` |
| success | `#5FE3A1` |
| warning | `#FFB347` |
| error | `#FF7A6E` |
| info | `#6BE7FF` |
### Typography
- **Heading Font**: Orbitron
- **Body Font**: Chakra Petch
- **Mono Font**: Share Tech Mono
- **Heading Weight**: 800
- **Body Weight**: 400
- **Button Weight**: 700
- **Mono Weight**: 400
- **Heading Transform**: none
- **Letter Spacing**: 0.02em on Orbitron titles, 0 on Chakra Petch and Share Tech Mono
- **Base Size**: 17px
- **Line Height**: 1.55
- **Scale**: ["14.5px","17px","20px","26px","38px","46px","59px"]
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;800&family=Chakra+Petch:wght@400;500;600;700&family=Share+Tech+Mono&display=swap
### Radii
- **None**: 0px
- **Md**: 0px
- **Lg**: 0px
- **Full**: 0px
### Geometry
- **Chamfer**: 14px on housings, 10px on buttons, 8px on fields, 5px on small marks, always the top-left and bottom-right corners cut by clip-path
### Shadows
- **Bloom Green**: drop-shadow(0 0 16px rgba(124,255,114,0.45)) on a wrapper, because a clip-path cuts a shadow on its own element
- **Bloom Text**: text-shadow 0 0 26px rgba(124,255,114,0.4) on numerics, cyan at 0.35 on a secondary reading
- **Lift**: drop-shadow(0 14px 28px rgba(0,0,0,0.6)) plus a green bloom at 0.16, only on an open menu, dialog or toast
- **None**: housings and fields carry no outline, seam or shadow at rest
### Spacing
- **Base**: 8px
- **Scale**: ["4px","8px","12px","16px","24px","32px","48px","64px","96px","112px"]
### Surfaces
- **Treatment**: near-black green glass with mounted instrument housings
- **Card Style**: a chamfered #0C1B17 face on the #07110E ground, opened by a status rail; no outline, no seam, no bar on any side
- **Display Zone**: #102521 under a 3px horizontal scanline field at 26% black, with a vector-grid or horizon underlay for charts
- **Bg Pattern**: none on the ground; scanlines live only inside display zones
### Borders
- **Default Width**: 0
- **Style**: none
- **Character**: No borders, seams or edge rules. A housing is parted from the ground by its tint and by space. The border colour #35584F is used only for vector-grid strokes inside a display zone.
### Motion
- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: Snappy. Hover and focus brighten the bloom or the face; nothing bounces, drifts or reshapes. Reduced motion removes every transition and the settled page is complete without script.
### Controls
- **Height**: 54px buttons, 54px fields, 28px switch track
- **Radius**: 0px, chamfered by clip-path
- **Focus**: an inner 3px ring on a button, a stacked phosphor ring plus bloom on a field
## Rules
### Composition
- Order a page hero, grammar, deck, close: a full-bleed Cathode hero with the headline on its calm left field, the three signals with their hex values and contrast ratios, one deck section holding the numerics, a trace and the bay status, then one closing action.
- Mount anything that matters in one housing. Never nest a housing in a housing, and leave plain copy on the glass.
- Set the headline on the picture pixels of the calm left field. Never add a veil, scrim or panel over the hero.
- Give a view one primary action. A second action is a text link.
### Hierarchy
- Numerics first: Share Tech Mono at 32 to 51px with a bloom is the brightest and largest thing in a bay.
- Orbitron 800 for titles at 0.02em, Chakra Petch 400 for prose at 17px, Share Tech Mono for readings, codes and times.
- Labels are 17px in sentence case. A signal code in a status rail may be mono caps.
- Amber arrives as a block or a code, never as a coloured word inside a paragraph.
### Density
Moderately high inside a bay, generous between bays: 48 to 64px between housings, 20 to 30px inside one, and 64 to 112px between sections. Density reads as engineered, not crowded.
### Signature Patterns
- Instrument housing: a chamfered #0C1B17 face with a 14px cut on two opposite corners, opened by a status rail, framed by tint and space and never by a line.
- Status rail: the title on the left in green and a signal code on the right in amber, with nothing between them.
- Scanline display zone with a vector-grid underlay: where a trace, a plot or a gauge lives.
- Phosphor bloom: numerics and traces glow, and hover and focus brighten the glow or the face. Nothing moves.
- Signal roles: three lights, each with a job, a hex value and a contrast ratio against the ground.
## Layout
### Grid
- **Type**: hero, grammar, deck, close
- **Max Width**: 1180px content, centred above 1440px; only the hero spans the viewport
- **Gutter**: 64px desktop, 5vw tablet, 20px phone
- **Column Behavior**: Three-up lists and a 5fr/7fr deck split use minmax(0,1fr) columns with min-width:0 on every child; everything stacks to one column below 1000px.
### Whitespace
- **Section Gap**: 112px desktop, 64px phone
- **Card Gap**: 48 to 72px between housings, 24 to 56px between columns
- **Content Padding**: 20 to 30px inside a housing under its rail
- **Approach**: Tight inside a bay, generous between bays. Tint and space do the separating.
### Density
- **Default**: engineered
- **Comfortable**: {"button_height":"54px","input_height":"54px","row_height":"44 to 56px table rows"}
### Responsive
From 390px to 2560px. Below 1000px the hero stacks: the headline first, then the Cathode picture at 300 to 500px tall. Tablets (600 to 1000px) keep the single column with larger measure and two-up numerics; non-essential table columns drop on phones. Above 1440px the content caps at 1180px and centres.
### Breakpoints
- **Mobile**: 390px
- **Phone Max**: 600px
- **Tablet**: 834px
- **Stack**: 1000px
- **Desktop**: 1280px
- **Ultrawide**: 2560px
## Guidance
### Do
- Let green be the resting data state, amber the emphasis and red the one alarm held in reserve.
- State each signal's job, hex value and contrast ratio where it is introduced.
- Mount every important region as a chamfered housing opened by a status rail.
- Set numerics in Share Tech Mono, large and glowing, with the label under them in muted 17px.
- Brighten the bloom or the face on hover and focus, and ring a focused button on the inside.
- Pair every status colour with a word and an SVG icon.
### Don't
- Don't draw a seam, outline or highlight rule on any side of a housing, and don't draw a rule inside its rail.
- Don't add rounded pills, blurred glass cards or gradient washes over the hero.
- Don't use tiny tracked uppercase labels, status chips or invented testimonials.
- Don't let amber or red read as a coloured word in a paragraph.
- Don't use slow, bouncy or drifting motion.
- Don't wash the ground toward white or pastel.
### Accessibility
Luminous text on near-black throughout: body #D8FFD7 is 17.5:1 on #07110E, muted #82A89B 7.3:1, green #7CFF72 15.0:1, cyan #6BE7FF 13.2:1, amber #FFB347 10.8:1, mint #5FE3A1 11.9:1 and coral #FF7A6E 7.5:1; the dark label on a green button is 15.0:1. Body is 17px or larger and table rows 14.5px or larger. Status is never colour alone: each state pairs its colour with a word and an SVG icon. Every control is explicitly styled with a visible hover and focus state (a brighter face, an inner 3px ring on buttons, a phosphor ring on fields). Motion respects prefers-reduced-motion and the settled page renders with no script.
### Usage Context
Mission and operations consoles, telemetry dashboards, developer and infrastructure tools, hardware control panels, launch and flight software, and any product where dense live numbers must read at a glance.
## Imagery Direction
### Pairs With
cathode
### Art Style Id
en-019efa09-e80f-7032-af0d-074c0f36d645
### Summary
Imagery captured off a glowing cathode-ray tube in the Cathode style: baked-in scanlines, phosphor bloom, a little chromatic fringing and a gentle barrel curve, luminous green with cyan and amber on near-black. The landing hero is one wireframe globe with a cyan ascent arc, composed to the right with a calm, dark left 42% for the headline, edge to edge with no bezel and no veil.
### Subjects
- a green vector wireframe globe with a cyan ascent arc
- orbital trajectory and telemetry displays
- oscilloscope waveforms and readout panels
- instrument clusters and gauges
### Usage
The landing hero is painted with background-image: var(--hero-image) on a real element, never an img tag, with the picture's subject on the right and the headline set on its calm left field. On phones the picture drops below the headline at 300 to 500px tall.
### Avoid
A monitor bezel or TV set; a gradient veil or panel over the hero; text baked into the picture; a centred tiny subject on blank space; pastel or muddy tones.
DESIGN.md file
---
version: "alpha"
name: "Phosphor Deck"
description: "Phosphor Deck is a mission-console design language for the moment the numbers move. Dense telemetry sits on near-black green glass: one resting green carries live data, cyan is the secondary channel, amber claims emphasis, and red is hel..."
colors:
bg: "#07110E"
surface: "#0C1B17"
surface_2: "#102521"
text: "#D8FFD7"
muted: "#82A89B"
border: "#35584F"
accent: "#7CFF72"
accent_2: "#6BE7FF"
accent_3: "#FFB347"
on_accent: "#07110E"
success: "#5FE3A1"
warning: "#FFB347"
error: "#FF7A6E"
info: "#6BE7FF"
typography:
headline-lg:
fontFamily: "Orbitron"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Orbitron"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Chakra Petch"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Share Tech Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "0px"
lg: "0px"
full: "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: "112px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
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_3:
backgroundColor: "{colors.accent_3}"
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: "{colors.on_accent}"
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"
---
# Phosphor Deck
## Overview
Phosphor Deck is a mission-console design language for the moment the numbers move. Dense telemetry sits on near-black green glass: one resting green carries live data, cyan is the secondary channel, amber claims emphasis, and red is held for the one alarm that matters. Colour carries state and nothing else, and everything that matters is mounted in an instrument housing: a chamfered phosphor face opened by a status rail, with a scanline display zone and a vector-grid underlay wherever a trace needs depth.
### Values
- Colour carries state and nothing else: green rests, amber claims, red is held.
- Every signal has a job, a hex value and a contrast ratio against the ground, and none does another's work.
- The value reads before the label: numerics are the largest, brightest thing in a bay.
- Mount what matters in a housing and leave the rest on the glass.
- Tight inside a bay, generous between bays, the same deck from a 390px handset to a wall of 2560px glass.
### Anti-Values
- Rounded consumer pills: controls are cut, not rounded.
- Glass and blur: a borderless, blurred card hides where one reading ends and the next begins.
- Slow or bouncy motion: the bloom brightens and nothing drifts.
- Small tracked uppercase labels, status chips that claim all systems green, and invented testimonials.
- A line on any edge of a housing: no seam, outline or highlight rule around or across a card.
### Visual Character
- A near-black green ground #07110E with phosphor-face housings #0C1B17, parted by tint and space and never by a line.
- Chamfered geometry: a 14px cut on the top-left and bottom-right corners of every housing, radius 0 on everything else.
- Status rails: the title on the left in green and the signal code on the right in amber, with nothing drawn between them.
- Scanline display zones with a vector-grid or horizon underlay, used for charts and instruments only.
- Numerics in Share Tech Mono at 32 to 51px with a soft green or cyan bloom, the brightest thing in any bay.
- A hero captured off a CRT in the Cathode style: a green wireframe globe with a cyan ascent arc, and a calm field on the left for the headline.
### Lineage
> Revised in place from arni's approved range-9 specimen (phosphor-deck-i, 2026-10-07). It keeps the deck-black ground, phosphor green, cyan and amber, Orbitron, Chakra Petch and Share Tech Mono, the page order (hero, grammar, deck, close) and the chamfered housing with its status rail. It replaces icon cards and invented quotes with facts, regenerates the hero with a calm left field and no veil, moves success to a mint and error to a coral, sets labels at 17px in sentence case, and removes the housing seam and the rule on the rail.
## 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 | `#07110E` |
| surface | `#0C1B17` |
| surface_2 | `#102521` |
| text | `#D8FFD7` |
| muted | `#82A89B` |
| border | `#35584F` |
| accent | `#7CFF72` |
| accent_2 | `#6BE7FF` |
| accent_3 | `#FFB347` |
| on_accent | `#07110E` |
| success | `#5FE3A1` |
| warning | `#FFB347` |
| error | `#FF7A6E` |
| info | `#6BE7FF` |
## Typography
Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Orbitron:wght@500;700;800&family=Chakra+Petch:wght@400;500;600;700&family=Share+Tech+Mono&display=swap
- **Headline-Lg**: Orbitron, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Orbitron, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Chakra Petch, 17px, weight 400, line-height 1.5.
- **Label-Md**: Share Tech 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**: `112px`
### Grid
- **Type**: hero, grammar, deck, close
- **Max Width**: 1180px content, centred above 1440px; only the hero spans the viewport
- **Gutter**: 64px desktop, 5vw tablet, 20px phone
- **Column Behavior**: Three-up lists and a 5fr/7fr deck split use minmax(0,1fr) columns with min-width:0 on every child; everything stacks to one column below 1000px.
### Whitespace
- **Section Gap**: 112px desktop, 64px phone
- **Card Gap**: 48 to 72px between housings, 24 to 56px between columns
- **Content Padding**: 20 to 30px inside a housing under its rail
- **Approach**: Tight inside a bay, generous between bays. Tint and space do the separating.
### Density
- **Default**: engineered
- **Comfortable**: {"button_height":"54px","input_height":"54px","row_height":"44 to 56px table rows"}
### Responsive
From 390px to 2560px. Below 1000px the hero stacks: the headline first, then the Cathode picture at 300 to 500px tall. Tablets (600 to 1000px) keep the single column with larger measure and two-up numerics; non-essential table columns drop on phones. Above 1440px the content caps at 1180px and centres.
### Breakpoints
- **Mobile**: 390px
- **Phone Max**: 600px
- **Tablet**: 834px
- **Stack**: 1000px
- **Desktop**: 1280px
- **Ultrawide**: 2560px
## Elevation & Depth
### Shadows
- **Bloom Green**: drop-shadow(0 0 16px rgba(124,255,114,0.45)) on a wrapper, because a clip-path cuts a shadow on its own element
- **Bloom Text**: text-shadow 0 0 26px rgba(124,255,114,0.4) on numerics, cyan at 0.35 on a secondary reading
- **Lift**: drop-shadow(0 14px 28px rgba(0,0,0,0.6)) plus a green bloom at 0.16, only on an open menu, dialog or toast
- **None**: housings and fields carry no outline, seam or shadow at rest
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `0px`
### Surfaces
- **Treatment**: near-black green glass with mounted instrument housings
- **Card Style**: a chamfered #0C1B17 face on the #07110E ground, opened by a status rail; no outline, no seam, no bar on any side
- **Display Zone**: #102521 under a 3px horizontal scanline field at 26% black, with a vector-grid or horizon underlay for charts
- **Bg Pattern**: none on the ground; scanlines live only inside display zones
### Borders
- **Default Width**: 0
- **Style**: none
- **Character**: No borders, seams or edge rules. A housing is parted from the ground by its tint and by space. The border colour #35584F is used only for vector-grid strokes inside a display zone.
## Components
### Composition
- Order a page hero, grammar, deck, close: a full-bleed Cathode hero with the headline on its calm left field, the three signals with their hex values and contrast ratios, one deck section holding the numerics, a trace and the bay status, then one closing action.
- Mount anything that matters in one housing. Never nest a housing in a housing, and leave plain copy on the glass.
- Set the headline on the picture pixels of the calm left field. Never add a veil, scrim or panel over the hero.
- Give a view one primary action. A second action is a text link.
### Hierarchy
- Numerics first: Share Tech Mono at 32 to 51px with a bloom is the brightest and largest thing in a bay.
- Orbitron 800 for titles at 0.02em, Chakra Petch 400 for prose at 17px, Share Tech Mono for readings, codes and times.
- Labels are 17px in sentence case. A signal code in a status rail may be mono caps.
- Amber arrives as a block or a code, never as a coloured word inside a paragraph.
### Density
Moderately high inside a bay, generous between bays: 48 to 64px between housings, 20 to 30px inside one, and 64 to 112px between sections. Density reads as engineered, not crowded.
### Signature Patterns
- Instrument housing: a chamfered #0C1B17 face with a 14px cut on two opposite corners, opened by a status rail, framed by tint and space and never by a line.
- Status rail: the title on the left in green and a signal code on the right in amber, with nothing between them.
- Scanline display zone with a vector-grid underlay: where a trace, a plot or a gauge lives.
- Phosphor bloom: numerics and traces glow, and hover and focus brighten the glow or the face. Nothing moves.
- Signal roles: three lights, each with a job, a hex value and a contrast ratio against the ground.
## 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-01a1379b-40d4-7d61-a231-a49ed8eedf8f/DESIGN.with-shadcn.md`.
Machine-readable companions for automation: `/language/en-01a1379b-40d4-7d61-a231-a49ed8eedf8f/shadcn.json` (registry theme), `/language/en-01a1379b-40d4-7d61-a231-a49ed8eedf8f/shadcn-components.md` (component recipes) and `/language/en-01a1379b-40d4-7d61-a231-a49ed8eedf8f/shadcn-shots.json` (preview shots). The human-facing handoff is still 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 Let green be the resting data state, amber the emphasis and red the one alarm held in reserve.
- Do State each signal's job, hex value and contrast ratio where it is introduced.
- Do Mount every important region as a chamfered housing opened by a status rail.
- Do Set numerics in Share Tech Mono, large and glowing, with the label under them in muted 17px.
- Do Brighten the bloom or the face on hover and focus, and ring a focused button on the inside.
- Do Pair every status colour with a word and an SVG icon.
- Don't Don't draw a seam, outline or highlight rule on any side of a housing, and don't draw a rule inside its rail.
- Don't Don't add rounded pills, blurred glass cards or gradient washes over the hero.
- Don't Don't use tiny tracked uppercase labels, status chips or invented testimonials.
- Don't Don't let amber or red read as a coloured word in a paragraph.
- Don't Don't use slow, bouncy or drifting motion.
- Don't Don't wash the ground toward white or pastel.
### Accessibility
Luminous text on near-black throughout: body #D8FFD7 is 17.5:1 on #07110E, muted #82A89B 7.3:1, green #7CFF72 15.0:1, cyan #6BE7FF 13.2:1, amber #FFB347 10.8:1, mint #5FE3A1 11.9:1 and coral #FF7A6E 7.5:1; the dark label on a green button is 15.0:1. Body is 17px or larger and table rows 14.5px or larger. Status is never colour alone: each state pairs its colour with a word and an SVG icon. Every control is explicitly styled with a visible hover and focus state (a brighter face, an inner 3px ring on buttons, a phosphor ring on fields). Motion respects prefers-reduced-motion and the settled page renders with no script.
### Usage Context
Mission and operations consoles, telemetry dashboards, developer and infrastructure tools, hardware control panels, launch and flight software, and any product where dense live numbers must read at a glance.
## Imagery Direction
### Pairs With
cathode
### Art Style Id
en-019efa09-e80f-7032-af0d-074c0f36d645
### Summary
Imagery captured off a glowing cathode-ray tube in the Cathode style: baked-in scanlines, phosphor bloom, a little chromatic fringing and a gentle barrel curve, luminous green with cyan and amber on near-black. The landing hero is one wireframe globe with a cyan ascent arc, composed to the right with a calm, dark left 42% for the headline, edge to edge with no bezel and no veil.
### Subjects
- a green vector wireframe globe with a cyan ascent arc
- orbital trajectory and telemetry displays
- oscilloscope waveforms and readout panels
- instrument clusters and gauges
### Usage
The landing hero is painted with background-image: var(--hero-image) on a real element, never an img tag, with the picture's subject on the right and the headline set on its calm left field. On phones the picture drops below the headline at 300 to 500px tall.
### Avoid
A monitor bezel or TV set; a gradient veil or panel over the hero; text baked into the picture; a centred tiny subject on blank space; pastel or muddy tones.
shadcn/ui theme file
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "phosphor-deck",
"type": "registry:theme",
"title": "Phosphor Deck shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#07110E",
"foreground": "#D8FFD7",
"card": "#0C1B17",
"card-foreground": "#D8FFD7",
"popover": "#0C1B17",
"popover-foreground": "#D8FFD7",
"primary": "#D8FFD7",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#82A89B",
"muted-foreground": "#D8FFD7",
"accent": "#7CFF72",
"accent-foreground": "#111111",
"destructive": "#FF7A6E",
"border": "#35584F",
"input": "#35584F",
"ring": "#7CFF72",
"chart-1": "#D8FFD7",
"chart-2": "#f4f4f5",
"chart-3": "#7CFF72",
"chart-4": "#5FE3A1",
"chart-5": "#FFB347",
"sidebar": "#0C1B17",
"sidebar-foreground": "#D8FFD7",
"sidebar-primary": "#D8FFD7",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#6BE7FF",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#35584F",
"sidebar-ring": "#7CFF72",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#D8FFD7",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#7CFF72",
"accent-foreground": "#111111",
"destructive": "#FF7A6E",
"border": "#303642",
"input": "#303642",
"ring": "#7CFF72",
"chart-1": "#D8FFD7",
"chart-2": "#f4f4f5",
"chart-3": "#7CFF72",
"chart-4": "#5FE3A1",
"chart-5": "#FFB347",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#D8FFD7",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#7CFF72",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#7CFF72",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-01a1379b-40d4-7d61-a231-a49ed8eedf8f",
"slug": "phosphor-deck",
"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_3",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"body_weight",
"button_weight",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"mono_weight",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"geometry": [
"chamfer"
],
"shadows": [
"bloom_green",
"bloom_text",
"lift",
"none"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"display_zone",
"treatment"
],
"borders": [
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"controls": [
"focus",
"height",
"radius"
]
}
}
}
```