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.
specification
philosophy
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
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
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.
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 comes from glow intensity, border weight, monospaced scale, and active phosphor color; reserve magenta for command focus and cyan for system structure.
layout
1440 desktop workbench, 768 tablet two-column stack with rail becoming top bar, 375 mobile single-column terminal feed.
Desktop uses a 12-column 8px-derived grid with a 72px command rail, wide central viewport, and two stacked right-side telemetry cards.
Whitespace is black negative space in multiples of 8px; use gutters to separate luminous clusters and prevent neon fog.
guidance
- 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.
- 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"
]
}
}
}
```embodiments
at a glance
Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Components
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
implementation kit
CRT Dream Glow
Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.
Night Arcade Signal Loom
Operators tune scanline masks, sprite occlusion, and RGB ghost offsets before committing a live pixel broadcast.
Edit Phosphor Pass 08
Fine tune the live CRT material without sacrificing legibility in the packet table.
Packet Queue Audit
A dense bitmap-grid operations view for cache invalidation and sprite atlas health.
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
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table: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;
}
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>
);
}
{
"$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"
}
# 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>
)
}
```
{
"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
}
}