back to gallery
design language·dither

Dither

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
Dither renders any interface through a low-resolution CGA phosphor grid. Every module is a framed utility window snapped to an 8-pixel rhythm; surfaces carry an ordered checker-dither and fixed scanlines so flat colour reads like it is drawn through a CRT; feedback appears as inverse-video labels, segmented meters, and blinking machine states. It keeps the retro home-computer shell identity while correcting the craft to current standards.
values
Respect a limited palette and let colour coding carry system meaning - green runs the system, cyan carries signal, magenta marks memory.Build hierarchy through framed windows, inverse-video title bars, and dense monospace labels.Preserve pixel alignment so borders, bevels, and dither read crisply at every size.Use machine-like feedback: segmented meters, status lamps, and stepped state changes.Pair nostalgia with utility - the interface stays genuinely usable, not costume.
anti-values
×Soft neumorphic depth, blur, and frosted glass.×Rounded organic cards, pills, or amorphous panels.×Palette sprawl beyond the intentional phosphor set.×Airy luxury spacing that erases the compact workstation feel.×Illustrative decoration that overwhelms the functional screen structure.
tokens
colors14 items
bg
#0A0A0A
surface
#161616
surface_solid
#1E1E1E
text
#F2F2F2
muted
#9AA39A
border
#3A3F3A
accent
#55FF55
accent_2
#55FFFF
accent_soft
#FF55FF
on_accent
#0A0A0A
success
#55FF55
warning
#FFF255
error
#FF5A5A
info
#55FFFF
typography10 items
base size
17px
body font
'VT323', monospace
heading font
'Press Start 2P', monospace
mono font
'IBM Plex Mono', monospace
heading weight
400
heading transform
uppercase
letter spacing
0.04em
line height
1.5
scale ratio
1.25
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Press+Start+2P&family=VT323&display=swap
radii4 items
none
0px
md
16px
lg
24px
full
9999px
shadows3 items
sm
2px 2px 0 #000000
md
4px 4px 0 #000000
lg
6px 6px 0 #000000
spacing2 items
base
8px
scale
1.5
surfaces3 items
treatment
CRT phosphor: repeating horizontal scanlines plus an ordered checker-dither field over dark panels, dual-edge pixel bevel framing (bright top-left, dark bottom-right).
card style
Framed utility windows with an inverse-video title bar, hard 90-degree corners, and a stepped hard-black drop shadow.
bg pattern
scanlines + checker-dither
borders4 items
default width
2px
accent width
2px
style
solid
character
Full four-sided pixel bevel: a bright top-left highlight edge and a dark bottom-right shadow edge on every window and key, recreating DOS/8-bit GUI shell frames.
motion3 items
duration
120ms
easing
steps(3, end)
philosophy
Snappy, quantized machine motion: state changes step rather than glide; a cursor blink and a scanline sweep are the only ambient motion.
rules
composition
Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the centre, and supporting instrument panels flanking it. Modules align to the 8px grid and behave like rearrangeable software panes rather than marketing cards.
hierarchy
Title bars, inverse labels, colour-state chips, and boxed readouts define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status-colour changes.
density
Compact and information-rich - controls sit close, lists are multi-row, and readouts expose many simultaneous states, with density balanced across the canvas (never a crowded cluster beside a starved void).
signature patterns
Repeating-linear-gradient scanlines plus a checker-dither field on major surfaces, page-wide, so panels visibly emulate CRT phosphor texture and limited-colour shading.Dual-edge pixel framing on every window and key: a bright top-left border and a dark bottom-right border for the stepped bevel of DOS and 8-bit GUI shells.Inverse-video title bars and status chips with uppercase mono typography, where labels sit inside framed rectangles instead of floating above content.Meters and charts built from discrete rectangular cells rather than smooth bars, making progress, memory, and signal read as quantized and machine-like.Recurring corner checker-pixels and hard 90-degree geometry so the interface never reads as a generic modern dashboard with a retro palette pasted on top.
links motion
Links carry the language's own gesture - an inverse-video ink-up that fills the accent on hover, never a bare default underline. Motion is snappy and quantized (steps()); the settled, fully-rendered state is the no-JS default and reveal motion is added on top behind a class the inline script sets. prefers-reduced-motion is respected.
layout
grid

A rigid 12-column desktop grid on an 8px base unit; panels snap to whole-column spans and all internal spacing resolves in multiples of 4px or 8px.

breakpoints
The tablet band (~768-1024) is its own considered two-column layout with full-width title bars preserved - never a mobile column stretched wide. At mobile (~390px) it collapses to a single column: nav wraps or collapses, oversized headlines shrink and wrap, and data tables scroll horizontally only where necessary.
whitespace

Whitespace is economical and structural - gaps separate windows and control groups, but empty space never overpowers the dense workstation character.

guidance
do
  • Use the phosphor palette intentionally - green system, cyan signal, magenta memory.
  • Snap icons, borders, and layout edges to pixel-friendly values so the interface stays crisp.
  • Prefer framed windows, title bars, meter blocks, and ledger lists over floating cards.
  • Use the display / body / mono pairing to clearly distinguish headings from data text.
  • Run scanline and dither texture across large surfaces to keep the scene materially retro.
avoid
  • Introduce blur, translucent glass, or soft radial lighting.
  • Use rounded corners, pills, or amorphous panels.
  • Rely on smooth modern charts or gradients when segmented cells express the same state.
  • Let whitespace become sparse luxury minimalism, or let control labels wrap.
  • Mix glossy 3D or photographic imagery into the workstation scene - imagery stays in the paired pixel-art / CRT-dither technique.
imagery
pairs with

dither-phosphor

technique
Low-resolution CGA-era pixel art: flat quantized colour shaded by ordered checker-dither, hard pixel/voxel forms, a fixed horizontal scanline overlay, and a phosphor bloom on the brightest cells against a near-black ground.
usage
One full-bleed dithered hero scene at the top of the landing (a CGA voxel terrain); feature imagery kept on its own ground beside copy, never under text. All imagery in the same pixel-dither technique - never glossy 3D or photographic.
hero file id

fl-019f3dba-9513-7581-b0d2-1444f302793f

katagami spec
# Dither

## Philosophy

Dither renders any interface through a low-resolution CGA phosphor grid. Every module is a framed utility window snapped to an 8-pixel rhythm; surfaces carry an ordered checker-dither and fixed scanlines so flat colour reads like it is drawn through a CRT; feedback appears as inverse-video labels, segmented meters, and blinking machine states. It keeps the retro home-computer shell identity while correcting the craft to current standards.

### Values

- Respect a limited palette and let colour coding carry system meaning - green runs the system, cyan carries signal, magenta marks memory.
- Build hierarchy through framed windows, inverse-video title bars, and dense monospace labels.
- Preserve pixel alignment so borders, bevels, and dither read crisply at every size.
- Use machine-like feedback: segmented meters, status lamps, and stepped state changes.
- Pair nostalgia with utility - the interface stays genuinely usable, not costume.

### Anti-Values

- Soft neumorphic depth, blur, and frosted glass.
- Rounded organic cards, pills, or amorphous panels.
- Palette sprawl beyond the intentional phosphor set.
- Airy luxury spacing that erases the compact workstation feel.
- Illustrative decoration that overwhelms the functional screen structure.

### Visual Character

- Every window and key wears a full four-sided pixel bevel: a bright top-left highlight edge and a dark bottom-right shadow edge, recreating the embossed frames of DOS and 8-bit GUI shells.
- Backgrounds carry repeating scanlines and a checker-dither field so flat colour feels rendered through a low-resolution CRT.
- Typography pairs a bitmap display face (Press Start 2P) with dense monospace data text (VT323, IBM Plex Mono), using uppercase labels, inverse-video chips, and wide tracking.
- Interactive controls are rectangular, radius-0 keys with a stepped hard-black shadow and discrete on/off status lamps - never soft pills or floating modern buttons.
- Information is arranged as tiled utility windows, instrument bays, and ledger lists on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#0A0A0A` |
| surface | `#161616` |
| surface_solid | `#1E1E1E` |
| text | `#F2F2F2` |
| muted | `#9AA39A` |
| border | `#3A3F3A` |
| accent | `#55FF55` |
| accent_2 | `#55FFFF` |
| accent_soft | `#FF55FF` |
| on_accent | `#0A0A0A` |
| success | `#55FF55` |
| warning | `#FFF255` |
| error | `#FF5A5A` |
| info | `#55FFFF` |

### Typography

- **Base Size**: 17px
- **Body Font**: 'VT323', monospace
- **Heading Font**: 'Press Start 2P', monospace
- **Mono Font**: 'IBM Plex Mono', monospace
- **Heading Weight**: 400
- **Heading Transform**: uppercase
- **Letter Spacing**: 0.04em
- **Line Height**: 1.5
- **Scale Ratio**: 1.25
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Press+Start+2P&family=VT323&display=swap

### Radii

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

### Shadows

- **Sm**: 2px 2px 0 #000000
- **Md**: 4px 4px 0 #000000
- **Lg**: 6px 6px 0 #000000

### Spacing

- **Base**: 8px
- **Scale**: 1.5

### Surfaces

- **Treatment**: CRT phosphor: repeating horizontal scanlines plus an ordered checker-dither field over dark panels, dual-edge pixel bevel framing (bright top-left, dark bottom-right).
- **Card Style**: Framed utility windows with an inverse-video title bar, hard 90-degree corners, and a stepped hard-black drop shadow.
- **Bg Pattern**: scanlines + checker-dither

### Borders

- **Default Width**: 2px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Full four-sided pixel bevel: a bright top-left highlight edge and a dark bottom-right shadow edge on every window and key, recreating DOS/8-bit GUI shell frames.

### Motion

- **Duration**: 120ms
- **Easing**: steps(3, end)
- **Philosophy**: Snappy, quantized machine motion: state changes step rather than glide; a cursor blink and a scanline sweep are the only ambient motion.

## Rules

### Composition

Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the centre, and supporting instrument panels flanking it. Modules align to the 8px grid and behave like rearrangeable software panes rather than marketing cards.

### Hierarchy

Title bars, inverse labels, colour-state chips, and boxed readouts define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status-colour changes.

### Density

Compact and information-rich - controls sit close, lists are multi-row, and readouts expose many simultaneous states, with density balanced across the canvas (never a crowded cluster beside a starved void).

### Signature Patterns

- Repeating-linear-gradient scanlines plus a checker-dither field on major surfaces, page-wide, so panels visibly emulate CRT phosphor texture and limited-colour shading.
- Dual-edge pixel framing on every window and key: a bright top-left border and a dark bottom-right border for the stepped bevel of DOS and 8-bit GUI shells.
- Inverse-video title bars and status chips with uppercase mono typography, where labels sit inside framed rectangles instead of floating above content.
- Meters and charts built from discrete rectangular cells rather than smooth bars, making progress, memory, and signal read as quantized and machine-like.
- Recurring corner checker-pixels and hard 90-degree geometry so the interface never reads as a generic modern dashboard with a retro palette pasted on top.

### Links Motion

Links carry the language's own gesture - an inverse-video ink-up that fills the accent on hover, never a bare default underline. Motion is snappy and quantized (steps()); the settled, fully-rendered state is the no-JS default and reveal motion is added on top behind a class the inline script sets. prefers-reduced-motion is respected.

## Layout

### Grid

A rigid 12-column desktop grid on an 8px base unit; panels snap to whole-column spans and all internal spacing resolves in multiples of 4px or 8px.

### Breakpoints

The tablet band (~768-1024) is its own considered two-column layout with full-width title bars preserved - never a mobile column stretched wide. At mobile (~390px) it collapses to a single column: nav wraps or collapses, oversized headlines shrink and wrap, and data tables scroll horizontally only where necessary.

### Whitespace

Whitespace is economical and structural - gaps separate windows and control groups, but empty space never overpowers the dense workstation character.

## Guidance

### Do

- Use the phosphor palette intentionally - green system, cyan signal, magenta memory.
- Snap icons, borders, and layout edges to pixel-friendly values so the interface stays crisp.
- Prefer framed windows, title bars, meter blocks, and ledger lists over floating cards.
- Use the display / body / mono pairing to clearly distinguish headings from data text.
- Run scanline and dither texture across large surfaces to keep the scene materially retro.

### Don't

- Introduce blur, translucent glass, or soft radial lighting.
- Use rounded corners, pills, or amorphous panels.
- Rely on smooth modern charts or gradients when segmented cells express the same state.
- Let whitespace become sparse luxury minimalism, or let control labels wrap.
- Mix glossy 3D or photographic imagery into the workstation scene - imagery stays in the paired pixel-art / CRT-dither technique.

## Imagery Direction

### Pairs With

dither-phosphor

### Technique

Low-resolution CGA-era pixel art: flat quantized colour shaded by ordered checker-dither, hard pixel/voxel forms, a fixed horizontal scanline overlay, and a phosphor bloom on the brightest cells against a near-black ground.

### Usage

One full-bleed dithered hero scene at the top of the landing (a CGA voxel terrain); feature imagery kept on its own ground beside copy, never under text. All imagery in the same pixel-dither technique - never glossy 3D or photographic.

### Hero File Id

fl-019f3dba-9513-7581-b0d2-1444f302793f
DESIGN.md
---
version: "alpha"
name: "Dither"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#0A0A0A"
  surface: "#161616"
  surface_solid: "#1E1E1E"
  text: "#F2F2F2"
  muted: "#9AA39A"
  border: "#3A3F3A"
  accent: "#55FF55"
  accent_2: "#55FFFF"
  accent_soft: "#FF55FF"
  on_accent: "#0A0A0A"
  success: "#55FF55"
  warning: "#FFF255"
  error: "#FF5A5A"
  info: "#55FFFF"
typography:
  headline-lg:
    fontFamily: "'Press Start 2P', monospace"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "0.04em"
  headline-md:
    fontFamily: "'Press Start 2P', monospace"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "0.04em"
  body-md:
    fontFamily: "'VT323', monospace"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "0.04em"
  label-md:
    fontFamily: "'IBM Plex Mono', monospace"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  md: "16px"
  lg: "24px"
  full: "9999px"
spacing:
  base: "8px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_solid:
    backgroundColor: "{colors.surface_solid}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent_2:
    backgroundColor: "{colors.accent_2}"
  color-reference-accent_soft:
    backgroundColor: "{colors.accent_soft}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "#000000"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.base}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.base}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Dither

## Overview

Dither renders any interface through a low-resolution CGA phosphor grid. Every module is a framed utility window snapped to an 8-pixel rhythm; surfaces carry an ordered checker-dither and fixed scanlines so flat colour reads like it is drawn through a CRT; feedback appears as inverse-video labels, segmented meters, and blinking machine states. It keeps the retro home-computer shell identity while correcting the craft to current standards.

### Values

- Respect a limited palette and let colour coding carry system meaning - green runs the system, cyan carries signal, magenta marks memory.
- Build hierarchy through framed windows, inverse-video title bars, and dense monospace labels.
- Preserve pixel alignment so borders, bevels, and dither read crisply at every size.
- Use machine-like feedback: segmented meters, status lamps, and stepped state changes.
- Pair nostalgia with utility - the interface stays genuinely usable, not costume.

### Anti-Values

- Soft neumorphic depth, blur, and frosted glass.
- Rounded organic cards, pills, or amorphous panels.
- Palette sprawl beyond the intentional phosphor set.
- Airy luxury spacing that erases the compact workstation feel.
- Illustrative decoration that overwhelms the functional screen structure.

### Visual Character

- Every window and key wears a full four-sided pixel bevel: a bright top-left highlight edge and a dark bottom-right shadow edge, recreating the embossed frames of DOS and 8-bit GUI shells.
- Backgrounds carry repeating scanlines and a checker-dither field so flat colour feels rendered through a low-resolution CRT.
- Typography pairs a bitmap display face (Press Start 2P) with dense monospace data text (VT323, IBM Plex Mono), using uppercase labels, inverse-video chips, and wide tracking.
- Interactive controls are rectangular, radius-0 keys with a stepped hard-black shadow and discrete on/off status lamps - never soft pills or floating modern buttons.
- Information is arranged as tiled utility windows, instrument bays, and ledger lists on an 8px grid, producing the compact rectangular rhythm of file managers and BBS dashboards.

## 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 | `#0A0A0A` |
| surface | `#161616` |
| surface_solid | `#1E1E1E` |
| text | `#F2F2F2` |
| muted | `#9AA39A` |
| border | `#3A3F3A` |
| accent | `#55FF55` |
| accent_2 | `#55FFFF` |
| accent_soft | `#FF55FF` |
| on_accent | `#0A0A0A` |
| success | `#55FF55` |
| warning | `#FFF255` |
| error | `#FF5A5A` |
| info | `#55FFFF` |

## Typography

- **Headline-Lg**: 'Press Start 2P', monospace, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: 'Press Start 2P', monospace, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: 'VT323', monospace, 17px, weight 400, line-height 1.5.
- **Label-Md**: 'IBM Plex Mono', monospace, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`

### Grid

A rigid 12-column desktop grid on an 8px base unit; panels snap to whole-column spans and all internal spacing resolves in multiples of 4px or 8px.

### Breakpoints

The tablet band (~768-1024) is its own considered two-column layout with full-width title bars preserved - never a mobile column stretched wide. At mobile (~390px) it collapses to a single column: nav wraps or collapses, oversized headlines shrink and wrap, and data tables scroll horizontally only where necessary.

### Whitespace

Whitespace is economical and structural - gaps separate windows and control groups, but empty space never overpowers the dense workstation character.

## Elevation & Depth

### Shadows

- **Sm**: 2px 2px 0 #000000
- **Md**: 4px 4px 0 #000000
- **Lg**: 6px 6px 0 #000000

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: CRT phosphor: repeating horizontal scanlines plus an ordered checker-dither field over dark panels, dual-edge pixel bevel framing (bright top-left, dark bottom-right).
- **Card Style**: Framed utility windows with an inverse-video title bar, hard 90-degree corners, and a stepped hard-black drop shadow.
- **Bg Pattern**: scanlines + checker-dither

### Borders

- **Default Width**: 2px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Full four-sided pixel bevel: a bright top-left highlight edge and a dark bottom-right shadow edge on every window and key, recreating DOS/8-bit GUI shell frames.

## Components

### Composition

Compose screens as nested utility windows: a command/status bar at the top, a primary work surface in the centre, and supporting instrument panels flanking it. Modules align to the 8px grid and behave like rearrangeable software panes rather than marketing cards.

### Hierarchy

Title bars, inverse labels, colour-state chips, and boxed readouts define hierarchy. Large type is reserved for screen titles and critical counters; most hierarchy comes from framing, fill contrast, and status-colour changes.

### Density

Compact and information-rich - controls sit close, lists are multi-row, and readouts expose many simultaneous states, with density balanced across the canvas (never a crowded cluster beside a starved void).

### Signature Patterns

- Repeating-linear-gradient scanlines plus a checker-dither field on major surfaces, page-wide, so panels visibly emulate CRT phosphor texture and limited-colour shading.
- Dual-edge pixel framing on every window and key: a bright top-left border and a dark bottom-right border for the stepped bevel of DOS and 8-bit GUI shells.
- Inverse-video title bars and status chips with uppercase mono typography, where labels sit inside framed rectangles instead of floating above content.
- Meters and charts built from discrete rectangular cells rather than smooth bars, making progress, memory, and signal read as quantized and machine-like.
- Recurring corner checker-pixels and hard 90-degree geometry so the interface never reads as a generic modern dashboard with a retro palette pasted on top.

### Links Motion

Links carry the language's own gesture - an inverse-video ink-up that fills the accent on hover, never a bare default underline. Motion is snappy and quantized (steps()); the settled, fully-rendered state is the no-JS default and reveal motion is added on top behind a class the inline script sets. prefers-reduced-motion is respected.

## 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-019f3dc1-daa0-7132-b782-52468ebdfb94/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 Use the phosphor palette intentionally - green system, cyan signal, magenta memory.
- Do Snap icons, borders, and layout edges to pixel-friendly values so the interface stays crisp.
- Do Prefer framed windows, title bars, meter blocks, and ledger lists over floating cards.
- Do Use the display / body / mono pairing to clearly distinguish headings from data text.
- Do Run scanline and dither texture across large surfaces to keep the scene materially retro.
- Don't Introduce blur, translucent glass, or soft radial lighting.
- Don't Use rounded corners, pills, or amorphous panels.
- Don't Rely on smooth modern charts or gradients when segmented cells express the same state.
- Don't Let whitespace become sparse luxury minimalism, or let control labels wrap.
- Don't Mix glossy 3D or photographic imagery into the workstation scene - imagery stays in the paired pixel-art / CRT-dither technique.

## Imagery Direction

### Pairs With

dither-phosphor

### Technique

Low-resolution CGA-era pixel art: flat quantized colour shaded by ordered checker-dither, hard pixel/voxel forms, a fixed horizontal scanline overlay, and a phosphor bloom on the brightest cells against a near-black ground.

### Usage

One full-bleed dithered hero scene at the top of the landing (a CGA voxel terrain); feature imagery kept on its own ground beside copy, never under text. All imagery in the same pixel-dither technique - never glossy 3D or photographic.

### Hero File Id

fl-019f3dba-9513-7581-b0d2-1444f302793f
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "dither",
  "type": "registry:theme",
  "title": "Dither shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0A0A",
      "foreground": "#F2F2F2",
      "card": "#161616",
      "card-foreground": "#F2F2F2",
      "popover": "#161616",
      "popover-foreground": "#F2F2F2",
      "primary": "#F2F2F2",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#9AA39A",
      "muted-foreground": "#F2F2F2",
      "accent": "#55FF55",
      "accent-foreground": "#111111",
      "destructive": "#FF5A5A",
      "border": "#3A3F3A",
      "input": "#3A3F3A",
      "ring": "#55FF55",
      "chart-1": "#F2F2F2",
      "chart-2": "#f4f4f5",
      "chart-3": "#55FF55",
      "chart-4": "#55FF55",
      "chart-5": "#FFF255",
      "sidebar": "#161616",
      "sidebar-foreground": "#F2F2F2",
      "sidebar-primary": "#F2F2F2",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#55FFFF",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#3A3F3A",
      "sidebar-ring": "#55FF55",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F2F2F2",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#55FF55",
      "accent-foreground": "#111111",
      "destructive": "#FF5A5A",
      "border": "#303642",
      "input": "#303642",
      "ring": "#55FF55",
      "chart-1": "#F2F2F2",
      "chart-2": "#f4f4f5",
      "chart-3": "#55FF55",
      "chart-4": "#55FF55",
      "chart-5": "#FFF255",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F2F2F2",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#55FF55",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#55FF55",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019f3dc1-daa0-7132-b782-52468ebdfb94",
    "slug": "dither",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent_2",
        "accent_soft",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "success",
        "surface",
        "surface_solid",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

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

at a glance

Typography

headline-lgPress Start 2P · 33px · 700

The quick brown fox jumps

headline-mdPress Start 2P · 27px · 600

The quick brown fox jumps

body-mdVT323 · 17px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
Palette

Agent-generated

remix lane

try a remix

Keep Ditherand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.

UI language · fixed
Dither
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

related

More like this