back to gallery
design language·crt-dream-glow

CRT Dream Glow

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
CRT Dream Glow treats pixel art as a luminous operating environment: black scanline fields, magenta command light, cyan bloom, and deliberately softened RGB misregistration make dense product screens feel like a recovered arcade terminal for creative control work.
values
low-resolution structure with high-taste restraintglowing hierarchy that remains readablescene-first product interfaces with real operational contentpixel-grid material logic rather than nostalgic decoration
anti-values
×generic neon cyberpunk wallpaper without component discipline×default SaaS cards with a superficial pixel border×illegible novelty type or uncontrolled chromatic blur
tokens
borders4 items
accent width
2px
character
cyan structural edge, magenta misregistered shadow, no rounded softness
default width
1px
style
solid with offset pseudo-element ghost borders
colors18 items
accent
#B6FF3B
background
#050509
border
#153B4A
destructive
#FF4D6D
error
#FF4D6D
foreground
#F1F7FF
info
#66A3FF
input
#153B4A
muted
#718096
muted_foreground
#718096
neutral
#0B0D16
primary
#00E7FF
ring
#00E7FF
secondary
#FF2BD6
success
#3BFFB0
surface
#0B0D16
text
#F1F7FF
warning
#FFD166
motion3 items
duration
160ms
easing
steps(4, end)
philosophy
motion clicks between pixel states; hover changes are stepped brightness, not smooth floating
radii5 items
full
9999px
lg
0
md
0
none
0
sm
0
shadows3 items
lg
0 0 0 2px rgba(0,231,255,.25), 0 0 70px rgba(255,43,214,.24)
md
0 0 0 1px rgba(255,43,214,.20), 0 0 34px rgba(0,231,255,.18)
sm
0 0 0 1px rgba(0,231,255,.18), 0 0 18px rgba(0,231,255,.12)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
bg pattern
8px bitmap grid plus 3px repeating horizontal scanlines on near-black
card style
square panels with cyan hairline, magenta offset ghost, and pixel-notch corners
treatment
black CRT glass with layered scanline, phosphor noise, and restrained cyan bloom
typography8 items
base size
16px
body font
IBM Plex Sans
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Share+Tech+Mono&display=swap
heading font
Share Tech Mono
letter spacing
-0.01em
line height
1.48
mono font
IBM Plex Mono
scale ratio
1.25
rules
composition
Compose screens as asymmetric terminal workbenches: one dominant live canvas, a narrow command rail, dense telemetry strips, and secondary panels aligned to the 8px bitmap grid.
density

High density is allowed when grouped into tile clusters, but every cluster needs a dark gutter and a readable label line before data begins.

hierarchy
Hierarchy comes from glow intensity, border weight, monospaced scale, and active phosphor color; reserve magenta for command focus and cyan for system structure.
signature patterns
RGB misregistration is created with pseudo-elements offset 2px in magenta and -2px in cyan behind headings, cards, and important controls.Scanline masks use repeating-linear-gradient overlays at low opacity across the whole viewport and stronger within media panels.Pixel widgets are built from CSS grid cells sized 6px or 8px for meters, minimaps, sprite badges, and loading states.Stepped corner notches use clip-path polygons on major panels while inner fields remain strict rectangles.Focus states combine a two-pixel cyan outline with a magenta lower-right shadow instead of browser default rings.
layout
breakpoints

1440 desktop workbench, 768 tablet two-column stack with rail becoming top bar, 375 mobile single-column terminal feed.

grid

Desktop uses a 12-column 8px-derived grid with a 72px command rail, wide central viewport, and two stacked right-side telemetry cards.

whitespace

Whitespace is black negative space in multiples of 8px; use gutters to separate luminous clusters and prevent neon fog.

guidance
do
  • Use real operational labels, coordinates, frame counts, and status values to make the CRT world specific.
  • Keep most surfaces black and let only the active system edges bloom in cyan or magenta.
  • Use square bitmap cells for charts, maps, toggles, and decorative marks so the pixel logic is structural.
  • Test small text against scanlines and add solid backing strips when readability drops.
avoid
  • Do not add rainbow gradients, rounded glassmorphism, or generic cyberpunk city imagery.
  • Do not blur entire panels or body text; misregistration belongs on edges and display type only.
  • Do not fill every component with neon; inactive controls should be dim graphite with one precise edge.
  • Do not present a component inventory wall as the embodiment; always stage a plausible product screen.
katagami spec
# CRT Dream Glow

## Philosophy

CRT Dream Glow treats pixel art as a luminous operating environment: black scanline fields, magenta command light, cyan bloom, and deliberately softened RGB misregistration make dense product screens feel like a recovered arcade terminal for creative control work.

### Values

- low-resolution structure with high-taste restraint
- glowing hierarchy that remains readable
- scene-first product interfaces with real operational content
- pixel-grid material logic rather than nostalgic decoration

### Anti-Values

- generic neon cyberpunk wallpaper without component discipline
- default SaaS cards with a superficial pixel border
- illegible novelty type or uncontrolled chromatic blur

### Visual Character

- Use a fixed 8px bitmap grid background with horizontal scanline overlays and sparse brighter tile intersections in CSS gradients.
- Render primary panels as black glass rectangles with 2px cyan borders, square corners, and offset magenta ghost borders to simulate RGB misregistration.
- Apply cyan and magenta bloom only to active labels, status chips, and chart traces while keeping body copy in warm off-white for legibility.
- Build iconography and progress indicators from tiny square cells using CSS grid, not rounded SVG illustrations or smooth pictograms.
- Use stepped clipping and pixel-notch corner masks on hero modules, dialogs, and table headers to make the low-resolution structure visible.

## Tokens

### Borders

- **Accent Width**: 2px
- **Character**: cyan structural edge, magenta misregistered shadow, no rounded softness
- **Default Width**: 1px
- **Style**: solid with offset pseudo-element ghost borders

### Colors

| Name | Value |
|------|-------|
| accent | `#B6FF3B` |
| background | `#050509` |
| border | `#153B4A` |
| destructive | `#FF4D6D` |
| error | `#FF4D6D` |
| foreground | `#F1F7FF` |
| info | `#66A3FF` |
| input | `#153B4A` |
| muted | `#718096` |
| muted_foreground | `#718096` |
| neutral | `#0B0D16` |
| primary | `#00E7FF` |
| ring | `#00E7FF` |
| secondary | `#FF2BD6` |
| success | `#3BFFB0` |
| surface | `#0B0D16` |
| text | `#F1F7FF` |
| warning | `#FFD166` |

### Motion

- **Duration**: 160ms
- **Easing**: steps(4, end)
- **Philosophy**: motion clicks between pixel states; hover changes are stepped brightness, not smooth floating

### Radii

- **Full**: 9999px
- **Lg**: 0
- **Md**: 0
- **None**: 0
- **Sm**: 0

### Shadows

- **Lg**: 0 0 0 2px rgba(0,231,255,.25), 0 0 70px rgba(255,43,214,.24)
- **Md**: 0 0 0 1px rgba(255,43,214,.20), 0 0 34px rgba(0,231,255,.18)
- **Sm**: 0 0 0 1px rgba(0,231,255,.18), 0 0 18px rgba(0,231,255,.12)

### Spacing

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

### Surfaces

- **Bg Pattern**: 8px bitmap grid plus 3px repeating horizontal scanlines on near-black
- **Card Style**: square panels with cyan hairline, magenta offset ghost, and pixel-notch corners
- **Treatment**: black CRT glass with layered scanline, phosphor noise, and restrained cyan bloom

### Typography

- **Base Size**: 16px
- **Body Font**: IBM Plex Sans
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&family=Share+Tech+Mono&display=swap
- **Heading Font**: Share Tech Mono
- **Letter Spacing**: -0.01em
- **Line Height**: 1.48
- **Mono Font**: IBM Plex Mono
- **Scale Ratio**: 1.25

## Rules

### Composition

Compose screens as asymmetric terminal workbenches: one dominant live canvas, a narrow command rail, dense telemetry strips, and secondary panels aligned to the 8px bitmap grid.

### Density

High density is allowed when grouped into tile clusters, but every cluster needs a dark gutter and a readable label line before data begins.

### Hierarchy

Hierarchy comes from glow intensity, border weight, monospaced scale, and active phosphor color; reserve magenta for command focus and cyan for system structure.

### Signature Patterns

- RGB misregistration is created with pseudo-elements offset 2px in magenta and -2px in cyan behind headings, cards, and important controls.
- Scanline masks use repeating-linear-gradient overlays at low opacity across the whole viewport and stronger within media panels.
- Pixel widgets are built from CSS grid cells sized 6px or 8px for meters, minimaps, sprite badges, and loading states.
- Stepped corner notches use clip-path polygons on major panels while inner fields remain strict rectangles.
- Focus states combine a two-pixel cyan outline with a magenta lower-right shadow instead of browser default rings.

## Layout

### Breakpoints

1440 desktop workbench, 768 tablet two-column stack with rail becoming top bar, 375 mobile single-column terminal feed.

### Grid

Desktop uses a 12-column 8px-derived grid with a 72px command rail, wide central viewport, and two stacked right-side telemetry cards.

### Whitespace

Whitespace is black negative space in multiples of 8px; use gutters to separate luminous clusters and prevent neon fog.

## Guidance

### Do

- Use real operational labels, coordinates, frame counts, and status values to make the CRT world specific.
- Keep most surfaces black and let only the active system edges bloom in cyan or magenta.
- Use square bitmap cells for charts, maps, toggles, and decorative marks so the pixel logic is structural.
- Test small text against scanlines and add solid backing strips when readability drops.

### Don't

- Do not add rainbow gradients, rounded glassmorphism, or generic cyberpunk city imagery.
- Do not blur entire panels or body text; misregistration belongs on edges and display type only.
- Do not fill every component with neon; inactive controls should be dim graphite with one precise edge.
- Do not present a component inventory wall as the embodiment; always stage a plausible product screen.
DESIGN.md
---
version: "alpha"
name: "CRT Dream Glow"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#B6FF3B"
  background: "#050509"
  border: "#153B4A"
  destructive: "#FF4D6D"
  error: "#FF4D6D"
  foreground: "#F1F7FF"
  info: "#66A3FF"
  input: "#153B4A"
  muted: "#718096"
  muted_foreground: "#718096"
  neutral: "#0B0D16"
  primary: "#00E7FF"
  ring: "#00E7FF"
  secondary: "#FF2BD6"
  success: "#3BFFB0"
  surface: "#0B0D16"
  text: "#F1F7FF"
  warning: "#FFD166"
typography:
  headline-lg:
    fontFamily: "Share Tech Mono"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "Share Tech Mono"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.48
    letterSpacing: "-0.01em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "0px"
  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"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-destructive:
    backgroundColor: "{colors.destructive}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-foreground:
    backgroundColor: "{colors.foreground}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-input:
    backgroundColor: "{colors.input}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-muted_foreground:
    backgroundColor: "{colors.muted_foreground}"
  color-reference-neutral:
    backgroundColor: "{colors.neutral}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-ring:
    backgroundColor: "{colors.ring}"
  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: "#000000"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# CRT Dream Glow

## Overview

CRT Dream Glow treats pixel art as a luminous operating environment: black scanline fields, magenta command light, cyan bloom, and deliberately softened RGB misregistration make dense product screens feel like a recovered arcade terminal for creative control work.

### Values

- low-resolution structure with high-taste restraint
- glowing hierarchy that remains readable
- scene-first product interfaces with real operational content
- pixel-grid material logic rather than nostalgic decoration

### Anti-Values

- generic neon cyberpunk wallpaper without component discipline
- default SaaS cards with a superficial pixel border
- illegible novelty type or uncontrolled chromatic blur

### Visual Character

- Use a fixed 8px bitmap grid background with horizontal scanline overlays and sparse brighter tile intersections in CSS gradients.
- Render primary panels as black glass rectangles with 2px cyan borders, square corners, and offset magenta ghost borders to simulate RGB misregistration.
- Apply cyan and magenta bloom only to active labels, status chips, and chart traces while keeping body copy in warm off-white for legibility.
- Build iconography and progress indicators from tiny square cells using CSS grid, not rounded SVG illustrations or smooth pictograms.
- Use stepped clipping and pixel-notch corner masks on hero modules, dialogs, and table headers to make the low-resolution structure visible.

## 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 | `#B6FF3B` |
| background | `#050509` |
| border | `#153B4A` |
| destructive | `#FF4D6D` |
| error | `#FF4D6D` |
| foreground | `#F1F7FF` |
| info | `#66A3FF` |
| input | `#153B4A` |
| muted | `#718096` |
| muted_foreground | `#718096` |
| neutral | `#0B0D16` |
| primary | `#00E7FF` |
| ring | `#00E7FF` |
| secondary | `#FF2BD6` |
| success | `#3BFFB0` |
| surface | `#0B0D16` |
| text | `#F1F7FF` |
| warning | `#FFD166` |

## Typography

- **Headline-Lg**: Share Tech Mono, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Share Tech Mono, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.48.
- **Label-Md**: IBM Plex 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`

### Breakpoints

1440 desktop workbench, 768 tablet two-column stack with rail becoming top bar, 375 mobile single-column terminal feed.

### Grid

Desktop uses a 12-column 8px-derived grid with a 72px command rail, wide central viewport, and two stacked right-side telemetry cards.

### Whitespace

Whitespace is black negative space in multiples of 8px; use gutters to separate luminous clusters and prevent neon fog.

## Elevation & Depth

### Shadows

- **Lg**: 0 0 0 2px rgba(0,231,255,.25), 0 0 70px rgba(255,43,214,.24)
- **Md**: 0 0 0 1px rgba(255,43,214,.20), 0 0 34px rgba(0,231,255,.18)
- **Sm**: 0 0 0 1px rgba(0,231,255,.18), 0 0 18px rgba(0,231,255,.12)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `0px`
- **Md**: `0px`
- **None**: `0px`
- **Sm**: `0px`

### Surfaces

- **Bg Pattern**: 8px bitmap grid plus 3px repeating horizontal scanlines on near-black
- **Card Style**: square panels with cyan hairline, magenta offset ghost, and pixel-notch corners
- **Treatment**: black CRT glass with layered scanline, phosphor noise, and restrained cyan bloom

### Borders

- **Accent Width**: 2px
- **Character**: cyan structural edge, magenta misregistered shadow, no rounded softness
- **Default Width**: 1px
- **Style**: solid with offset pseudo-element ghost borders

## Components

### Composition

Compose screens as asymmetric terminal workbenches: one dominant live canvas, a narrow command rail, dense telemetry strips, and secondary panels aligned to the 8px bitmap grid.

### Density

High density is allowed when grouped into tile clusters, but every cluster needs a dark gutter and a readable label line before data begins.

### Hierarchy

Hierarchy comes from glow intensity, border weight, monospaced scale, and active phosphor color; reserve magenta for command focus and cyan for system structure.

### Signature Patterns

- RGB misregistration is created with pseudo-elements offset 2px in magenta and -2px in cyan behind headings, cards, and important controls.
- Scanline masks use repeating-linear-gradient overlays at low opacity across the whole viewport and stronger within media panels.
- Pixel widgets are built from CSS grid cells sized 6px or 8px for meters, minimaps, sprite badges, and loading states.
- Stepped corner notches use clip-path polygons on major panels while inner fields remain strict rectangles.
- Focus states combine a two-pixel cyan outline with a magenta lower-right shadow instead of browser default rings.

## 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-019e6c90-e12a-7833-b2a6-5e499a735391/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 real operational labels, coordinates, frame counts, and status values to make the CRT world specific.
- Do Keep most surfaces black and let only the active system edges bloom in cyan or magenta.
- Do Use square bitmap cells for charts, maps, toggles, and decorative marks so the pixel logic is structural.
- Do Test small text against scanlines and add solid backing strips when readability drops.
- Don't Do not add rainbow gradients, rounded glassmorphism, or generic cyberpunk city imagery.
- Don't Do not blur entire panels or body text; misregistration belongs on edges and display type only.
- Don't Do not fill every component with neon; inactive controls should be dim graphite with one precise edge.
- Don't Do not present a component inventory wall as the embodiment; always stage a plausible product screen.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "crt-dream-glow",
  "type": "registry:theme",
  "title": "CRT Dream Glow shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#050509",
      "foreground": "#F1F7FF",
      "card": "#0B0D16",
      "card-foreground": "#F1F7FF",
      "popover": "#0B0D16",
      "popover-foreground": "#F1F7FF",
      "primary": "#00E7FF",
      "primary-foreground": "#111111",
      "secondary": "#FF2BD6",
      "secondary-foreground": "#ffffff",
      "muted": "#718096",
      "muted-foreground": "#718096",
      "accent": "#B6FF3B",
      "accent-foreground": "#111111",
      "destructive": "#FF4D6D",
      "border": "#153B4A",
      "input": "#153B4A",
      "ring": "#00E7FF",
      "chart-1": "#00E7FF",
      "chart-2": "#FF2BD6",
      "chart-3": "#B6FF3B",
      "chart-4": "#3BFFB0",
      "chart-5": "#FFD166",
      "sidebar": "#0B0D16",
      "sidebar-foreground": "#F1F7FF",
      "sidebar-primary": "#00E7FF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#66A3FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#153B4A",
      "sidebar-ring": "#B6FF3B",
      "radius": "0"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#00E7FF",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B6FF3B",
      "accent-foreground": "#111111",
      "destructive": "#FF4D6D",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B6FF3B",
      "chart-1": "#00E7FF",
      "chart-2": "#FF2BD6",
      "chart-3": "#B6FF3B",
      "chart-4": "#3BFFB0",
      "chart-5": "#FFD166",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#00E7FF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#B6FF3B",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B6FF3B",
      "radius": "0"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019e6c90-e12a-7833-b2a6-5e499a735391",
    "slug": "crt-dream-glow",
    "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",
        "destructive",
        "error",
        "foreground",
        "info",
        "input",
        "muted",
        "muted_foreground",
        "neutral",
        "primary",
        "ring",
        "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",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    }
  }
}
```
in the wild

embodiments

the full element showcase
embodiment · crt-dream-glow
DESIGN.md

at a glance

Palette

Typography

headline-lgShare Tech Mono · 31px · 700

The quick brown fox jumps

headline-mdShare Tech Mono · 25px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

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

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px

Shape

full9999px
lg0px
md0px
none0px
sm0px
shadcn/ui

implementation kit

agent-authored kitstored + verified
shadcn implementation kit
These scenes and recipes came from the Katagami review agent and can be copied as the shadcn implementation layer.
shadsync shotsstored + verifiedpaper-collage

CRT Dream Glow

Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.

square panels with cyan hairline, magenta offset ghost, and pixel-notch corners
SPRITE BROADCAST CONSOLEapplication-shell

Night Arcade Signal Loom

Operators tune scanline masks, sprite occlusion, and RGB ghost offsets before committing a live pixel broadcast.

buttoncardtabsbadgeseparatorswitchtabletooltip
CRT Dream Glow
shadcn layer
Overview
Components
Reviews
Exports
primaryaccentsurfacemutedwarningerror
scan drift
0.28px
cyan bloom
74%
sprite cells
1,936
Component coverage
Filters, state, and row density rendered with the generated theme.
SurfaceStateStatus
Primary flowsyncedsynced
Token coveragewarmingwarming
Responsive proofoffsetoffset
Must show
Avoid
generic SaaS dashboard cards
rounded glass panels
CALIBRATION SHEETdetail-editor

Edit Phosphor Pass 08

Fine tune the live CRT material without sacrificing legibility in the packet table.

dialogsheetinputtextareaselectslidercheckboxbutton
Recipe details
Labels, validation, written guidance, and controls stay visible.
Density68
FocusInvalidConfirmed
Context sheet
Generated with the language job
sheet
RGB ghost offset
2px
Dither kernel
ordered 4x4
Operator note
Keep magenta on command edges only.
Must show
Avoid
soft modal radius
unlabeled decorative controls
TILE CACHE OPERATIONSdata-operations

Packet Queue Audit

A dense bitmap-grid operations view for cache invalidation and sprite atlas health.

tabledropdown-menuselectinputbadgeseparatorswitchbutton
Packet Queue Audit
A dense bitmap-grid operations view for cache invalidation and sprite atlas health.
stablereviewlive
CheckFindingStatus
Button hierarchyapprovedstable
Table rhythmneeds passreview
Empty statedesignedlive
Responsive table, menu, tooltip, and badge proof.
Must show
Avoid
inventory wall layout
unstyled default table density
recommendedagent kit includedverified

DESIGN.md with shadcn

Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #050509;
  --foreground: #F1F7FF;
  --card: #0B0D16;
  --card-foreground: #F1F7FF;
  --popover: #0B0D16;
  --popover-foreground: #F1F7FF;
  --primary: #00E7FF;
  --primary-foreground: #111111;
  --secondary: #FF2BD6;
  --secondary-foreground: #ffffff;
  --muted: #718096;
  --muted-foreground: #718096;
  --accent: #B6FF3B;
  --accent-foreground: #111111;
  --destructive: #FF4D6D;
  --border: #153B4A;
  --input: #153B4A;
  --ring: #00E7FF;
  --chart-1: #00E7FF;
  --chart-2: #FF2BD6;
  --chart-3: #B6FF3B;
  --chart-4: #3BFFB0;
  --chart-5: #FFD166;
  --sidebar: #0B0D16;
  --sidebar-foreground: #F1F7FF;
  --sidebar-primary: #00E7FF;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #66A3FF;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #153B4A;
  --sidebar-ring: #B6FF3B;
  --radius: 0;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #00E7FF;
  --primary-foreground: #111111;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #B6FF3B;
  --accent-foreground: #111111;
  --destructive: #FF4D6D;
  --border: #303642;
  --input: #303642;
  --ring: #B6FF3B;
  --chart-1: #00E7FF;
  --chart-2: #FF2BD6;
  --chart-3: #B6FF3B;
  --chart-4: #3BFFB0;
  --chart-5: #FFD166;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #00E7FF;
  --sidebar-primary-foreground: #111111;
  --sidebar-accent: #B6FF3B;
  --sidebar-accent-foreground: #111111;
  --sidebar-border: #303642;
  --sidebar-ring: #B6FF3B;
  --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 CrtDreamGlowShadcnKit() {
  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">CRT Dream Glow</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 JSONstored + verified
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "cssVars": {
    "dark": {
      "accent": "#B6FF3B",
      "accent-foreground": "#111111",
      "background": "#0f1115",
      "border": "#303642",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "chart-1": "#00E7FF",
      "chart-2": "#FF2BD6",
      "chart-3": "#B6FF3B",
      "chart-4": "#3BFFB0",
      "chart-5": "#FFD166",
      "destructive": "#FF4D6D",
      "foreground": "#f8fafc",
      "input": "#303642",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#00E7FF",
      "primary-foreground": "#111111",
      "radius": "0",
      "ring": "#B6FF3B",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "sidebar": "#181b22",
      "sidebar-accent": "#B6FF3B",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#00E7FF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-ring": "#B6FF3B"
    },
    "light": {
      "accent": "#B6FF3B",
      "accent-foreground": "#111111",
      "background": "#050509",
      "border": "#153B4A",
      "card": "#0B0D16",
      "card-foreground": "#F1F7FF",
      "chart-1": "#00E7FF",
      "chart-2": "#FF2BD6",
      "chart-3": "#B6FF3B",
      "chart-4": "#3BFFB0",
      "chart-5": "#FFD166",
      "destructive": "#FF4D6D",
      "foreground": "#F1F7FF",
      "input": "#153B4A",
      "muted": "#718096",
      "muted-foreground": "#718096",
      "popover": "#0B0D16",
      "popover-foreground": "#F1F7FF",
      "primary": "#00E7FF",
      "primary-foreground": "#111111",
      "radius": "0",
      "ring": "#00E7FF",
      "secondary": "#FF2BD6",
      "secondary-foreground": "#ffffff",
      "sidebar": "#0B0D16",
      "sidebar-accent": "#66A3FF",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#153B4A",
      "sidebar-foreground": "#F1F7FF",
      "sidebar-primary": "#00E7FF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-ring": "#B6FF3B"
    },
    "theme": {}
  },
  "meta": {
    "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",
    "languageId": "en-019e6c90-e12a-7833-b2a6-5e499a735391",
    "nativeTokenNames": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "destructive",
        "error",
        "foreground",
        "info",
        "input",
        "muted",
        "muted_foreground",
        "neutral",
        "primary",
        "ring",
        "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",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ]
    },
    "slug": "crt-dream-glow",
    "source": "katagami"
  },
  "name": "crt-dream-glow",
  "title": "CRT Dream Glow shadcn Theme",
  "type": "registry:theme"
}
component recipesstored + verified
# CRT Dream Glow shadcn/ui Components
Author: `katagami-agent`

## Intent
Translate CRT Dream Glow into shadcn/ui as a disciplined terminal product surface: black scanline cards, square geometry, cyan structural edges, magenta ghost offsets, and pixel-cell data widgets.

## Required primitives
button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch, slider, tooltip, dropdown-menu, and table from `@/components/ui/*`.

## Token cues
Use `background` as near-black CRT glass, `primary` for cyan structure, `secondary` for magenta command focus, `accent` for lime live states, `border` for dim grid lines, square radii, and stepped transitions. Body text remains off-white and never blurred.

## Visual character to preserve
- Add scanline underlays to app shells and cards with low-opacity repeating gradients.
- Give important cards a cyan border plus a lower-right magenta pseudo-shadow.
- Use square controls, 2px focus outlines, and pixel-cell meters for status.
- Reserve bloom for active badges, selected tabs, primary buttons, and chart traces.

## ShadSync visual profile
family: `crt-pixel-terminal`; material: black phosphor glass; contour: square clipped notch; border: cyan hairline with magenta offset; underlay: scanlines and 8px bitmap grid; grain: phosphor noise; stickerBadges: false; motion: `steps(4,end)` brightness shifts; density: high but grouped; accents: cyan, neon magenta, lime.

## Signature component recipes
- `button`: square, uppercase mono, 2px cyan border, magenta `box-shadow: 3px 3px 0`, hot variant swaps to magenta fill and cyan shadow.
- `card`: black surface, `clip-path` notched corners, dim cyan border, optional scanline `before` overlay, magenta ghost `after` offset.
- `input`, `textarea`, `select`: graphite fill, cyan left rule, mono value text, focus ring as 2px cyan plus magenta lower-right shadow.
- `dialog`, `sheet`: full CRT glass panels with notched corners, strong scanline underlay, headers in Share Tech Mono with RGB text-shadow.
- `tabs`: selected tab glows cyan; inactive tabs are dim bordered rectangles aligned to 8px gutters.
- `badge`: compact mono capsule or square chip with a 6px pixel diode; lime for live, magenta for command, cyan for system.
- `separator`: 1px dim cyan rule overlaid with sparse 8px bright ticks.
- `checkbox`, `switch`, `slider`: square handles, no soft knobs; active parts are cyan cells with magenta offset shadows.
- `tooltip`, `dropdown-menu`: black terminal popovers, cyan border, no radius, pixel-notch corner on the top edge.
- `table`: dense mono rows, dim grid lines, cyan header strip, colored status text only in state cells.

## Preview shots
1. `application-shell`: sprite broadcast console with command rail, live viewport card, status meters, and packet table.
2. `detail-editor`: CRT calibration dialog/sheet for editing bloom, scanline, and RGB offset fields.
3. `data-operations`: dense tile-cache table with filters, dropdown actions, sliders, switches, badges, and tooltips.

## Implementation contract
Import local shadcn primitives from `@/components/ui/*`; do not invent a second component system. Add language-specific className recipes around primitives and keep focus states accessible. Preserve square radii, 8px spacing, scanline underlays, and cyan/magenta misregistration.

## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
import { Input } from "@/components/ui/input"

export function CrtDreamPanel() {
  return (
    <Card className="relative overflow-hidden rounded-none border border-cyan-400/50 bg-[#0B0D16] shadow-[3px_3px_0_rgba(255,43,214,.45),0_0_28px_rgba(0,231,255,.12)] before:absolute before:inset-0 before:pointer-events-none before:bg-[repeating-linear-gradient(0deg,rgba(255,255,255,.06)_0_1px,transparent_1px_4px)]">
      <CardHeader className="relative z-10 border-b border-cyan-950/80">
        <Badge className="w-fit rounded-none border border-lime-300/60 bg-lime-300/10 font-mono text-lime-200">LIVE PHOSPHOR</Badge>
        <CardTitle className="font-['Share_Tech_Mono'] text-3xl text-cyan-100 [text-shadow:2px_0_#FF2BD6,-2px_0_#00E7FF]">Signal Loom</CardTitle>
      </CardHeader>
      <CardContent className="relative z-10 grid gap-3 p-4">
        <Input className="rounded-none border-cyan-400/50 bg-black/40 font-mono focus-visible:ring-2 focus-visible:ring-cyan-300" defaultValue="RGB Δ 02PX" />
        <Button className="rounded-none border-2 border-cyan-300 bg-cyan-950/50 font-mono uppercase text-cyan-100 shadow-[3px_3px_0_rgba(255,43,214,.55)] hover:bg-cyan-800/50">Commit Glow</Button>
      </CardContent>
    </Card>
  )
}
```
preview shotsstored + verified
{
  "artifact": "katagami:shadcn-preview-shots",
  "author": "katagami-agent",
  "componentRecipes": [
    {
      "component": "button",
      "recipe": "Square shadcn button using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "card",
      "recipe": "Square shadcn card using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "input",
      "recipe": "Square shadcn input using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "textarea",
      "recipe": "Square shadcn textarea using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "select",
      "recipe": "Square shadcn select using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "dialog",
      "recipe": "Square shadcn dialog using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "sheet",
      "recipe": "Square shadcn sheet using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "tabs",
      "recipe": "Square shadcn tabs using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "badge",
      "recipe": "Square shadcn badge using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "separator",
      "recipe": "Square shadcn separator using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "checkbox",
      "recipe": "Square shadcn checkbox using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "switch",
      "recipe": "Square shadcn switch using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "slider",
      "recipe": "Square shadcn slider using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "tooltip",
      "recipe": "Square shadcn tooltip using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "dropdown-menu",
      "recipe": "Square shadcn dropdown-menu using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    },
    {
      "component": "table",
      "recipe": "Square shadcn table using CRT Dream Glow tokens, cyan structural border, restrained magenta ghost offset, mono labels, and no rounded default styling."
    }
  ],
  "generatedBy": "katagami-agent",
  "renderable": true,
  "requiresVisualProfile": true,
  "schema": "katagami:shadcn-preview-shots/renderable-v1",
  "shots": [
    {
      "avoid": [
        "generic SaaS dashboard cards",
        "rounded glass panels",
        "rainbow neon overload"
      ],
      "composition": "Asymmetric terminal workbench with command rail, large live sprite viewport, right telemetry cards, and packet table.",
      "id": "application-shell",
      "mustShowStates": [
        "active cyan selected tab",
        "magenta hot command button",
        "lime live badge",
        "table rows with warning and error states"
      ],
      "primitives": [
        "button",
        "card",
        "tabs",
        "badge",
        "separator",
        "switch",
        "table",
        "tooltip"
      ],
      "scene": {
        "actions": [
          "Calibrate",
          "Commit Glow"
        ],
        "description": "Operators tune scanline masks, sprite occlusion, and RGB ghost offsets before committing a live pixel broadcast.",
        "eyebrow": "SPRITE BROADCAST CONSOLE",
        "headline": "Night Arcade Signal Loom",
        "rows": [
          {
            "latency": "12ms",
            "packet": "tile-cache / north",
            "state": "synced"
          },
          {
            "latency": "44ms",
            "packet": "boss-sprite atlas",
            "state": "warming"
          },
          {
            "latency": "02px",
            "packet": "rgb ghost layer",
            "state": "offset"
          }
        ],
        "stats": [
          {
            "label": "scan drift",
            "value": "0.28px"
          },
          {
            "label": "cyan bloom",
            "value": "74%"
          },
          {
            "label": "sprite cells",
            "value": "1,936"
          }
        ]
      }
    },
    {
      "avoid": [
        "soft modal radius",
        "unlabeled decorative controls"
      ],
      "composition": "Notched calibration sheet over a dark map, with stacked fields and pixel sliders for bloom, dithering, and offset.",
      "id": "detail-editor",
      "mustShowStates": [
        "focused input with cyan ring and magenta shadow",
        "checked square checkbox",
        "slider made of cell-like track segments"
      ],
      "primitives": [
        "dialog",
        "sheet",
        "input",
        "textarea",
        "select",
        "slider",
        "checkbox",
        "button",
        "badge"
      ],
      "scene": {
        "actions": [
          "Preview Pass",
          "Save Offset"
        ],
        "description": "Fine tune the live CRT material without sacrificing legibility in the packet table.",
        "eyebrow": "CALIBRATION SHEET",
        "fields": [
          {
            "label": "RGB ghost offset",
            "value": "2px"
          },
          {
            "label": "Dither kernel",
            "value": "ordered 4x4"
          },
          {
            "label": "Operator note",
            "value": "Keep magenta on command edges only."
          }
        ],
        "headline": "Edit Phosphor Pass 08"
      }
    },
    {
      "avoid": [
        "inventory wall layout",
        "unstyled default table density"
      ],
      "composition": "Dense operations table with filters, compact status badges, and command dropdowns inside a scanlined black card.",
      "id": "data-operations",
      "mustShowStates": [
        "open dropdown menu",
        "cyan table header",
        "lime success badge",
        "magenta destructive action"
      ],
      "primitives": [
        "table",
        "dropdown-menu",
        "select",
        "input",
        "badge",
        "separator",
        "switch",
        "button",
        "tooltip",
        "card"
      ],
      "scene": {
        "actions": [
          "Export Frame Log",
          "Invalidate Selected"
        ],
        "description": "A dense bitmap-grid operations view for cache invalidation and sprite atlas health.",
        "eyebrow": "TILE CACHE OPERATIONS",
        "headline": "Packet Queue Audit",
        "rows": [
          {
            "owner": "render bus",
            "packet": "atlas-07",
            "state": "stable"
          },
          {
            "owner": "color pass",
            "packet": "palette-lut",
            "state": "review"
          },
          {
            "owner": "crt pass",
            "packet": "scanline-mask",
            "state": "live"
          }
        ],
        "stats": [
          {
            "label": "queued packets",
            "value": "128"
          },
          {
            "label": "dropped frames",
            "value": "03"
          }
        ]
      }
    }
  ],
  "version": "preview-shots-v1",
  "visualProfile": {
    "accents": [
      "cyan bloom",
      "neon magenta commands",
      "lime live state"
    ],
    "border": "cyan hairline with magenta offset ghost",
    "contour": "square clipped notch",
    "density": "high grouped terminal density",
    "family": "crt-pixel-terminal",
    "grain": true,
    "material": "black phosphor glass",
    "motion": "steps(4,end) brightness shifts",
    "stickerBadges": false,
    "underlay": true
  }
}
related

More like this