back to gallery

Prism Works

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 — tokens plus the paired art style. Agents must generate real images.

the spec

specification

philosophy
summary
Prism Works reads the liquid-glass brief through hard optics, not soft frost. Every surface is a finished optical element on a luminous light optical-lab ground: glass plates refract the field behind them, fringe their active edge into a red-green-blue spectrum (the 'spectral cut'), and cast focused caustic light-webs onto the bench. The product is a fictional optical-glass studio running anneal cycles, index profiles, and dispersion QC. Depth here is measured, not decorated — hierarchy comes from pane size, glass opacity, and a z-depth readout, never from coloured fills.
values
Measured depth — hierarchy is read off pane size, glass opacity, and a z-depth tag, like an optical benchMaterial honesty — plates refract the lightbox ground; translucency adds spatial information, never just blurThe spectral cut — exactly the active element splits its edge into an R/G/B dispersion fringe; the rest stays quietFocused light — caustics weave bright, slow webs; light focuses, it does not scatter into soft orbsA measurement voice — index, temperature, and depth are spoken in tabular mono as a first-class type
anti-values
×Soft frosted blur floating over drifting orbs on a dark ground×Literary italic serif headlines (the generic AI-startup default)×One-sided coloured accent borders on panes (the cut is a fringe, not a border)×Rounded 24px panes and boxed pill navigation×Glass over flat white or pure black; opaque container fills that break the metaphor
tokens
colors18 items
bg
#E9F0F3
bg_deep
#D2DCE1
surface
#F7FAFB
surface_2
#EDF3F5
glass
rgba(255,255,255,0.46)
glass_strong
rgba(255,255,255,0.70)
glass_edge
rgba(255,255,255,0.92)
text
#16242B
muted
#5A6B73
accent
#2BC4D6
accent_2
#7C5CE0
accent_3
#F25C8A
on_accent
#052028
border
rgba(22,36,43,0.14)
success
#1FA98A
warning
#C98A20
error
#D75A6A
info
#3A8FD0
typography9 items
base size
17px
body font
Inter
heading font
Space Grotesk
mono font
JetBrains Mono
heading weight
700
heading transform
none
letter spacing
-0.04em
line height
1.6
google fonts url
https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap
radii5 items
none
0px
sm
0px
md
0px
lg
0px
full
9999px
shadows4 items
sm
0 1px 6px rgba(40,70,90,0.10)
md
0 10px 30px rgba(40,70,90,0.12)
lg
0 24px 64px rgba(40,70,90,0.16)
glint
inset 0 1px 0 rgba(255,255,255,0.95)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces5 items
treatment
Hard-edged translucent glass plates over a luminous light optical-lab ground (ice #E9F0F3 to graphite #D2DCE1), backdrop-filter blur(14px) saturate(150%).
card style
Square (radius 0) glass plates with a 1px luminous edge, inset top glint, and a clipped diagonal specular streak; the active plate adds a spectral-cut R/G/B fringe on one edge. No opaque fills, no nested cards.
bg pattern
An inline-SVG caustic field of focused light-webs plus soft glints, fixed behind the content at low opacity, drifting on ~20s cycles; bright and calm, never soft orbs.
glass background
rgba(255,255,255,0.70)
glass border
rgba(255,255,255,0.92)
borders4 items
default width
1px
accent width
4px
style
solid
character
A 1px luminous white edge plus an inset top glint. The accent move is never a one-sided border; it is the spectral cut — a 4px R/G/B dispersion fringe rendered as a separate pseudo-element on one edge of the active plate.
motion3 items
duration
280ms
easing
cubic-bezier(0.2, 0, 0, 1)
philosophy
Calm material morphing: controls lift, brighten, and shift their fringe on state change; the caustic field drifts on ~20s cycles. The settled state is the default and renders with no JavaScript; an inline script gates a hidden start-state behind html.anim and reveals on scroll. Respects prefers-reduced-motion.
rules
composition
A fixed gauge rail (open across its column, never boxed) carries the masthead and a live bench readout; the body reads as lenticular strata and horizontal refractive bands at stepped optical depths rather than equal cards. The landing opens on a full-viewport hero of a fabricated prism-and-lens cluster with the headline set into the airy upper-left and a measurement readout pinned to the corner.
hierarchy
Hierarchy comes from pane size, glass opacity, and a z-depth tag — not coloured fills. Space Grotesk display at -0.04em; Inter body at 17px/1.6; JetBrains Mono carries every index, temperature, and depth readout as a first-class voice. Exactly the active/foreground element wears the spectral cut.
density

Mixed density: spacious hero and refractometry panes (48-96px breathing) contrast with compact gauge rails, QC tables, and queues (8-14px gaps).

signature
The spectral cut (an R/G/B dispersion fringe on one edge of the active element); lenticular strata at descending glass opacity with z-depth tags; a focused caustic light-web field; a clipped specular streak on every plate; material morphing on state change.
layout
grid
CSS Grid; a 230px gauge rail plus a fluid main column on the dashboard, a 1280-1320px contained content column elsewhere. Strata and refractive bands instead of equal cards. Tracks use minmax(0,1fr) with min-width:0 children so panes never overflow. Plates keep a generous margin from the viewport edge.
whitespace
Generous and load-bearing — the luminous lightbox ground visible between plates is the depth. Panel padding 24-48px; inter-plate gap 14px; section gap 64-96px; always pad above titles.
density

Spacious hero and reading panes contrast with compact gauge rails and data tables.

responsive
Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the gauge rail collapsing to a top bar and non-essential table columns hidden; contained content capped and centred on ultra-wide while only the hero spans 100vw.
breakpoints
mobile
390px
tablet
760px
laptop
980px
desktop
1280px
guidance
do
  • Set glass over the bright lightbox ground so refraction has a real field to bend.
  • Mark exactly the active or foreground element with the spectral cut; keep the rest quiet.
  • Hold body text at full opacity and weight 500+ on glass so contrast passes AA.
  • Read hierarchy off pane size, glass opacity, and z-depth, not coloured fills.
  • Keep the caustic field slow and bright; it is light for the glass, not decoration.
avoid
  • Put glass over flat white or pure black.
  • Give a plate a single one-sided coloured border (the cut is a dispersion fringe, not a border accent).
  • Box the gauge rail or nav into a floating pill, or nest cards inside cards.
  • Let blur or dispersion reduce legibility.
  • Use a literary italic serif headline; this language speaks in a geometric grotesque and a measurement mono.
imagery
pairs with

aerogel

summary
Subjects fabricated from stacked semi-transparent frosted glass, refracting the layers behind them, with crisp specular glints, spectral edge fringing, and caustic shimmer, on a luminous cool light ground.
subjects
faceted optical prismsstacked lens blanksglass paperweightsrefractometer opticslaminated glass stratacaustic light-pools
usage
One full-bleed landing hero of a prism-and-lens cluster, composed with airy negative space in the upper-left for the headline overlay; supporting imagery treats single optical elements full-frame.
katagami spec
# Prism Works

## Philosophy

Prism Works reads the liquid-glass brief through hard optics, not soft frost. Every surface is a finished optical element on a luminous light optical-lab ground: glass plates refract the field behind them, fringe their active edge into a red-green-blue spectrum (the 'spectral cut'), and cast focused caustic light-webs onto the bench. The product is a fictional optical-glass studio running anneal cycles, index profiles, and dispersion QC. Depth here is measured, not decorated — hierarchy comes from pane size, glass opacity, and a z-depth readout, never from coloured fills.

### Values

- Measured depth — hierarchy is read off pane size, glass opacity, and a z-depth tag, like an optical bench
- Material honesty — plates refract the lightbox ground; translucency adds spatial information, never just blur
- The spectral cut — exactly the active element splits its edge into an R/G/B dispersion fringe; the rest stays quiet
- Focused light — caustics weave bright, slow webs; light focuses, it does not scatter into soft orbs
- A measurement voice — index, temperature, and depth are spoken in tabular mono as a first-class type

### Anti-Values

- Soft frosted blur floating over drifting orbs on a dark ground
- Literary italic serif headlines (the generic AI-startup default)
- One-sided coloured accent borders on panes (the cut is a fringe, not a border)
- Rounded 24px panes and boxed pill navigation
- Glass over flat white or pure black; opaque container fills that break the metaphor

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#E9F0F3` |
| bg_deep | `#D2DCE1` |
| surface | `#F7FAFB` |
| surface_2 | `#EDF3F5` |
| glass | `rgba(255,255,255,0.46)` |
| glass_strong | `rgba(255,255,255,0.70)` |
| glass_edge | `rgba(255,255,255,0.92)` |
| text | `#16242B` |
| muted | `#5A6B73` |
| accent | `#2BC4D6` |
| accent_2 | `#7C5CE0` |
| accent_3 | `#F25C8A` |
| on_accent | `#052028` |
| border | `rgba(22,36,43,0.14)` |
| success | `#1FA98A` |
| warning | `#C98A20` |
| error | `#D75A6A` |
| info | `#3A8FD0` |

### Typography

- **Base Size**: 17px
- **Body Font**: Inter
- **Heading Font**: Space Grotesk
- **Mono Font**: JetBrains Mono
- **Heading Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.04em
- **Line Height**: 1.6
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap

### Radii

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

### Shadows

- **Sm**: 0 1px 6px rgba(40,70,90,0.10)
- **Md**: 0 10px 30px rgba(40,70,90,0.12)
- **Lg**: 0 24px 64px rgba(40,70,90,0.16)
- **Glint**: inset 0 1px 0 rgba(255,255,255,0.95)

### Spacing

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

### Surfaces

- **Treatment**: Hard-edged translucent glass plates over a luminous light optical-lab ground (ice #E9F0F3 to graphite #D2DCE1), backdrop-filter blur(14px) saturate(150%).
- **Card Style**: Square (radius 0) glass plates with a 1px luminous edge, inset top glint, and a clipped diagonal specular streak; the active plate adds a spectral-cut R/G/B fringe on one edge. No opaque fills, no nested cards.
- **Bg Pattern**: An inline-SVG caustic field of focused light-webs plus soft glints, fixed behind the content at low opacity, drifting on ~20s cycles; bright and calm, never soft orbs.
- **Glass Background**: rgba(255,255,255,0.70)
- **Glass Border**: rgba(255,255,255,0.92)

### Borders

- **Default Width**: 1px
- **Accent Width**: 4px
- **Style**: solid
- **Character**: A 1px luminous white edge plus an inset top glint. The accent move is never a one-sided border; it is the spectral cut — a 4px R/G/B dispersion fringe rendered as a separate pseudo-element on one edge of the active plate.

### Motion

- **Duration**: 280ms
- **Easing**: cubic-bezier(0.2, 0, 0, 1)
- **Philosophy**: Calm material morphing: controls lift, brighten, and shift their fringe on state change; the caustic field drifts on ~20s cycles. The settled state is the default and renders with no JavaScript; an inline script gates a hidden start-state behind html.anim and reveals on scroll. Respects prefers-reduced-motion.

## Rules

### Composition

A fixed gauge rail (open across its column, never boxed) carries the masthead and a live bench readout; the body reads as lenticular strata and horizontal refractive bands at stepped optical depths rather than equal cards. The landing opens on a full-viewport hero of a fabricated prism-and-lens cluster with the headline set into the airy upper-left and a measurement readout pinned to the corner.

### Hierarchy

Hierarchy comes from pane size, glass opacity, and a z-depth tag — not coloured fills. Space Grotesk display at -0.04em; Inter body at 17px/1.6; JetBrains Mono carries every index, temperature, and depth readout as a first-class voice. Exactly the active/foreground element wears the spectral cut.

### Density

Mixed density: spacious hero and refractometry panes (48-96px breathing) contrast with compact gauge rails, QC tables, and queues (8-14px gaps).

### Signature

The spectral cut (an R/G/B dispersion fringe on one edge of the active element); lenticular strata at descending glass opacity with z-depth tags; a focused caustic light-web field; a clipped specular streak on every plate; material morphing on state change.

## Layout

### Grid

CSS Grid; a 230px gauge rail plus a fluid main column on the dashboard, a 1280-1320px contained content column elsewhere. Strata and refractive bands instead of equal cards. Tracks use minmax(0,1fr) with min-width:0 children so panes never overflow. Plates keep a generous margin from the viewport edge.

### Whitespace

Generous and load-bearing — the luminous lightbox ground visible between plates is the depth. Panel padding 24-48px; inter-plate gap 14px; section gap 64-96px; always pad above titles.

### Density

Spacious hero and reading panes contrast with compact gauge rails and data tables.

### Responsive

Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the gauge rail collapsing to a top bar and non-essential table columns hidden; contained content capped and centred on ultra-wide while only the hero spans 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 760px
- **Laptop**: 980px
- **Desktop**: 1280px

## Guidance

### Do

- Set glass over the bright lightbox ground so refraction has a real field to bend.
- Mark exactly the active or foreground element with the spectral cut; keep the rest quiet.
- Hold body text at full opacity and weight 500+ on glass so contrast passes AA.
- Read hierarchy off pane size, glass opacity, and z-depth, not coloured fills.
- Keep the caustic field slow and bright; it is light for the glass, not decoration.

### Don't

- Put glass over flat white or pure black.
- Give a plate a single one-sided coloured border (the cut is a dispersion fringe, not a border accent).
- Box the gauge rail or nav into a floating pill, or nest cards inside cards.
- Let blur or dispersion reduce legibility.
- Use a literary italic serif headline; this language speaks in a geometric grotesque and a measurement mono.

### Accessibility

Body text 17px+, table rows 14px+; foreground text at full opacity and weight 500+ over glass meets WCAG AA on the light ground. Form controls are explicitly styled with a visible cyan focus ring. Motion respects prefers-reduced-motion; the settled state renders with no JavaScript.

## Imagery Direction

### Pairs With

aerogel

### Summary

Subjects fabricated from stacked semi-transparent frosted glass, refracting the layers behind them, with crisp specular glints, spectral edge fringing, and caustic shimmer, on a luminous cool light ground.

### Subjects

- faceted optical prisms
- stacked lens blanks
- glass paperweights
- refractometer optics
- laminated glass strata
- caustic light-pools

### Usage

One full-bleed landing hero of a prism-and-lens cluster, composed with airy negative space in the upper-left for the headline overlay; supporting imagery treats single optical elements full-frame.
DESIGN.md
---
version: "alpha"
name: "Prism Works"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#E9F0F3"
  bg_deep: "#D2DCE1"
  surface: "#F7FAFB"
  surface_2: "#EDF3F5"
  text: "#16242B"
  muted: "#5A6B73"
  accent: "#2BC4D6"
  accent_2: "#7C5CE0"
  accent_3: "#F25C8A"
  on_accent: "#052028"
  success: "#1FA98A"
  warning: "#C98A20"
  error: "#D75A6A"
  info: "#3A8FD0"
typography:
  headline-lg:
    fontFamily: "Space Grotesk"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.04em"
  headline-md:
    fontFamily: "Space Grotesk"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.04em"
  body-md:
    fontFamily: "Inter"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.6
    letterSpacing: "-0.04em"
  label-md:
    fontFamily: "JetBrains Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "0px"
  md: "0px"
  lg: "0px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-bg_deep:
    backgroundColor: "{colors.bg_deep}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_2:
    backgroundColor: "{colors.surface_2}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent_2:
    backgroundColor: "{colors.accent_2}"
  color-reference-accent_3:
    backgroundColor: "{colors.accent_3}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "#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"
---

# Prism Works

## Overview

Prism Works reads the liquid-glass brief through hard optics, not soft frost. Every surface is a finished optical element on a luminous light optical-lab ground: glass plates refract the field behind them, fringe their active edge into a red-green-blue spectrum (the 'spectral cut'), and cast focused caustic light-webs onto the bench. The product is a fictional optical-glass studio running anneal cycles, index profiles, and dispersion QC. Depth here is measured, not decorated — hierarchy comes from pane size, glass opacity, and a z-depth readout, never from coloured fills.

### Values

- Measured depth — hierarchy is read off pane size, glass opacity, and a z-depth tag, like an optical bench
- Material honesty — plates refract the lightbox ground; translucency adds spatial information, never just blur
- The spectral cut — exactly the active element splits its edge into an R/G/B dispersion fringe; the rest stays quiet
- Focused light — caustics weave bright, slow webs; light focuses, it does not scatter into soft orbs
- A measurement voice — index, temperature, and depth are spoken in tabular mono as a first-class type

### Anti-Values

- Soft frosted blur floating over drifting orbs on a dark ground
- Literary italic serif headlines (the generic AI-startup default)
- One-sided coloured accent borders on panes (the cut is a fringe, not a border)
- Rounded 24px panes and boxed pill navigation
- Glass over flat white or pure black; opaque container fills that break the metaphor

## 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 | `#E9F0F3` |
| bg_deep | `#D2DCE1` |
| surface | `#F7FAFB` |
| surface_2 | `#EDF3F5` |
| text | `#16242B` |
| muted | `#5A6B73` |
| accent | `#2BC4D6` |
| accent_2 | `#7C5CE0` |
| accent_3 | `#F25C8A` |
| on_accent | `#052028` |
| success | `#1FA98A` |
| warning | `#C98A20` |
| error | `#D75A6A` |
| info | `#3A8FD0` |

## Typography

- **Headline-Lg**: Space Grotesk, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Space Grotesk, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 17px, weight 400, line-height 1.6.
- **Label-Md**: JetBrains Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`

### Grid

CSS Grid; a 230px gauge rail plus a fluid main column on the dashboard, a 1280-1320px contained content column elsewhere. Strata and refractive bands instead of equal cards. Tracks use minmax(0,1fr) with min-width:0 children so panes never overflow. Plates keep a generous margin from the viewport edge.

### Whitespace

Generous and load-bearing — the luminous lightbox ground visible between plates is the depth. Panel padding 24-48px; inter-plate gap 14px; section gap 64-96px; always pad above titles.

### Density

Spacious hero and reading panes contrast with compact gauge rails and data tables.

### Responsive

Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the gauge rail collapsing to a top bar and non-essential table columns hidden; contained content capped and centred on ultra-wide while only the hero spans 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 760px
- **Laptop**: 980px
- **Desktop**: 1280px

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 6px rgba(40,70,90,0.10)
- **Md**: 0 10px 30px rgba(40,70,90,0.12)
- **Lg**: 0 24px 64px rgba(40,70,90,0.16)
- **Glint**: inset 0 1px 0 rgba(255,255,255,0.95)

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: Hard-edged translucent glass plates over a luminous light optical-lab ground (ice #E9F0F3 to graphite #D2DCE1), backdrop-filter blur(14px) saturate(150%).
- **Card Style**: Square (radius 0) glass plates with a 1px luminous edge, inset top glint, and a clipped diagonal specular streak; the active plate adds a spectral-cut R/G/B fringe on one edge. No opaque fills, no nested cards.
- **Bg Pattern**: An inline-SVG caustic field of focused light-webs plus soft glints, fixed behind the content at low opacity, drifting on ~20s cycles; bright and calm, never soft orbs.
- **Glass Background**: rgba(255,255,255,0.70)
- **Glass Border**: rgba(255,255,255,0.92)

### Borders

- **Default Width**: 1px
- **Accent Width**: 4px
- **Style**: solid
- **Character**: A 1px luminous white edge plus an inset top glint. The accent move is never a one-sided border; it is the spectral cut — a 4px R/G/B dispersion fringe rendered as a separate pseudo-element on one edge of the active plate.

## Components

### Composition

A fixed gauge rail (open across its column, never boxed) carries the masthead and a live bench readout; the body reads as lenticular strata and horizontal refractive bands at stepped optical depths rather than equal cards. The landing opens on a full-viewport hero of a fabricated prism-and-lens cluster with the headline set into the airy upper-left and a measurement readout pinned to the corner.

### Hierarchy

Hierarchy comes from pane size, glass opacity, and a z-depth tag — not coloured fills. Space Grotesk display at -0.04em; Inter body at 17px/1.6; JetBrains Mono carries every index, temperature, and depth readout as a first-class voice. Exactly the active/foreground element wears the spectral cut.

### Density

Mixed density: spacious hero and refractometry panes (48-96px breathing) contrast with compact gauge rails, QC tables, and queues (8-14px gaps).

### Signature

The spectral cut (an R/G/B dispersion fringe on one edge of the active element); lenticular strata at descending glass opacity with z-depth tags; a focused caustic light-web field; a clipped specular streak on every plate; material morphing on state change.

## 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-019ef923-46bf-7273-8076-dce068ec408b/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 Set glass over the bright lightbox ground so refraction has a real field to bend.
- Do Mark exactly the active or foreground element with the spectral cut; keep the rest quiet.
- Do Hold body text at full opacity and weight 500+ on glass so contrast passes AA.
- Do Read hierarchy off pane size, glass opacity, and z-depth, not coloured fills.
- Do Keep the caustic field slow and bright; it is light for the glass, not decoration.
- Don't Put glass over flat white or pure black.
- Don't Give a plate a single one-sided coloured border (the cut is a dispersion fringe, not a border accent).
- Don't Box the gauge rail or nav into a floating pill, or nest cards inside cards.
- Don't Let blur or dispersion reduce legibility.
- Don't Use a literary italic serif headline; this language speaks in a geometric grotesque and a measurement mono.

### Accessibility

Body text 17px+, table rows 14px+; foreground text at full opacity and weight 500+ over glass meets WCAG AA on the light ground. Form controls are explicitly styled with a visible cyan focus ring. Motion respects prefers-reduced-motion; the settled state renders with no JavaScript.

## Imagery Direction

### Pairs With

aerogel

### Summary

Subjects fabricated from stacked semi-transparent frosted glass, refracting the layers behind them, with crisp specular glints, spectral edge fringing, and caustic shimmer, on a luminous cool light ground.

### Subjects

- faceted optical prisms
- stacked lens blanks
- glass paperweights
- refractometer optics
- laminated glass strata
- caustic light-pools

### Usage

One full-bleed landing hero of a prism-and-lens cluster, composed with airy negative space in the upper-left for the headline overlay; supporting imagery treats single optical elements full-frame.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "prism-works",
  "type": "registry:theme",
  "title": "Prism Works shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#E9F0F3",
      "foreground": "#16242B",
      "card": "#F7FAFB",
      "card-foreground": "#16242B",
      "popover": "#F7FAFB",
      "popover-foreground": "#16242B",
      "primary": "#16242B",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#5A6B73",
      "muted-foreground": "#16242B",
      "accent": "#2BC4D6",
      "accent-foreground": "#ffffff",
      "destructive": "#D75A6A",
      "border": "rgba(22,36,43,0.14)",
      "input": "rgba(22,36,43,0.14)",
      "ring": "#2BC4D6",
      "chart-1": "#16242B",
      "chart-2": "#f4f4f5",
      "chart-3": "#2BC4D6",
      "chart-4": "#1FA98A",
      "chart-5": "#C98A20",
      "sidebar": "#F7FAFB",
      "sidebar-foreground": "#16242B",
      "sidebar-primary": "#16242B",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#3A8FD0",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "rgba(22,36,43,0.14)",
      "sidebar-ring": "#2BC4D6",
      "radius": "0px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#16242B",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#2BC4D6",
      "accent-foreground": "#ffffff",
      "destructive": "#D75A6A",
      "border": "#303642",
      "input": "#303642",
      "ring": "#2BC4D6",
      "chart-1": "#16242B",
      "chart-2": "#f4f4f5",
      "chart-3": "#2BC4D6",
      "chart-4": "#1FA98A",
      "chart-5": "#C98A20",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#16242B",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2BC4D6",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#2BC4D6",
      "radius": "0px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ef923-46bf-7273-8076-dce068ec408b",
    "slug": "prism-works",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent_2",
        "accent_3",
        "bg",
        "bg_deep",
        "border",
        "error",
        "glass",
        "glass_edge",
        "glass_strong",
        "info",
        "muted",
        "on_accent",
        "success",
        "surface",
        "surface_2",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "glint",
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "glass_background",
        "glass_border",
        "treatment"
      ],
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

DESIGN.md

at a glance

Typography

headline-lgSpace Grotesk · 33px · 700

The quick brown fox jumps

headline-mdSpace Grotesk · 27px · 600

The quick brown fox jumps

body-mdInter · 17px · 400

The quick brown fox jumps

label-mdJetBrains Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
remix lane

try a remix

Keep Prism Works and swap a palette and an art style onto it. The landing & dashboard recolor live.

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

Family

Evolved from
related

More like this