back to gallery

Caustic

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
A refractive interface system where light behaviour does the structural work. Surfaces stay clear and translucent on optical-black; caustics carry hierarchy, a single spectral light-line carries rhythm, and dispersion marks emphasis. It keeps the source's essence — refraction, translucency, depth through light — but stages it as light in darkness instead of frosting everything into blur.
values
Light as structure: a focused surface glows and catches the light rather than darkening or growing a heavier boxClarity over blur: panes stay clear and translucent; the system changes how light moves across them, not how opaque they areRefraction as rhythm: one spectral caustic light-line replaces rules and dividersDispersion as signal: the rainbow fringe is spent only on the highest-contrast edges, so it always reads as emphasisMaterial honesty: surfaces behave like real optical glass against a dark field, the way a prism is shown in a dark room
anti-values
×Frosting everything into blur and calling it hierarchy×Opaque flat card fills, grey borders, or one-sided accent edges×Letting the spectrum flood — three accents stay highlighters, never washes×Light-first white minimalism as a default; this language stages light against darkness×Arbitrary in-between radii or hard black drop shadows
visual character
Clear, translucent panes over a deep optical-black field, with a 1px inner highlight and a soft black shadow instead of borders.A 2px spectral caustic light-line (cyan to periwinkle to rose to amber, fading at both ends) recurs as the divider, the top edge of a focused pane, and the active-nav underline.Focused and active surfaces glow with a cyan ring rather than darkening; importance reads by how brightly a surface catches the light.Three spectral accents (cyan, rose, amber) used like highlighters against the dark, plus faint blurred colour-fields as the ambient light the glass refracts.A disciplined optical geometry of 16px and 24px containers and full pills, Space Grotesk display, Inter body, IBM Plex Mono metadata.
tokens
colors15 items
bg
#0A0C12
surface
#12151E
surface_2
#171B27
text
#F4F6FB
muted
#8A93A8
border
rgba(255,255,255,0.08)
hairline
rgba(255,255,255,0.12)
accent
#3DE0E6
accent_2
#FF5C8A
accent_3
#FFC14D
on_accent
#07090F
success
#4FD79B
warning
#FFC14D
error
#FF6B7E
info
#3DE0E6
typography9 items
base size
17px
body font
Inter
heading font
Space Grotesk
mono font
IBM Plex Mono
heading weight
600
heading transform
none
letter spacing
-0.03em
line height
1.55
google fonts url
https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap
radii5 items
none
0px
sm
16px
md
24px
lg
24px
full
9999px
shadows4 items
sm
0 2px 10px rgba(0,0,0,0.40)
md
0 8px 32px rgba(0,0,0,0.50)
lg
0 18px 50px rgba(0,0,0,0.55)
glow
0 0 0 1px rgba(61,224,230,0.35), 0 0 28px rgba(61,224,230,0.22)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces3 items
treatment
Clear translucent panes: linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012)) with an inset 1px white highlight and a soft black shadow, over a deep optical-black field carrying faint cyan/rose/amber ambient blobs.
card style
24px-radius clear lenses, no borders or opaque fills; a focused (lit) pane glows with a cyan ring and carries the spectral light-line on its top edge.
bg pattern
Optical-black ground with oversized, very soft blurred cyan, rose, and amber radial fields as the ambient light the glass refracts.
borders2 items
default width
0
character
No borders. Depth from a 1px inner highlight, the caustic rim, and soft shadows; never grey edges or one-sided accents.
motion3 items
duration
260ms
easing
cubic-bezier(.2,.8,.2,1)
philosophy
Liquid but restrained behind a reduced-motion gate. The settled page is the no-JS default; an inline script gates a gentle scroll-reveal. Hover lifts a pane 2px and deepens its glow.
rules
composition
Build hierarchy from how surfaces catch light. Keep panes clear and translucent with no borders or opaque fills. Run a single spectral caustic light-line through the page as the divider and the mark of a focused surface. Hold dispersion (the rainbow fringe) to the highest-contrast edges only.
hierarchy
Importance is carried by light, not by heavier boxes or louder colour. Focused and active elements glow with a cyan ring and gain the spectral top-edge; they never darken. Typography weight provides secondary hierarchy on each clear pane.
density

Spacious and atmospheric; clear glass needs breathing room. Minimum 22-24px internal padding on panes, generous space above titles.

signature
The caustic light-line: a 2px spectral gradient (cyan -> periwinkle -> rose -> amber, fading at both ends) used as section divider, the top edge of a lit pane, the active-nav underline, and the fill of progress and split-bar tracks; it recolours on a palette swap because it is built from the role accents.
layout
grid
Contained content caps at 1180px centred; the full-bleed hero spans 100vw. Panes float with 20-24px gaps; grids use minmax(0,1fr) and min-width:0 so children shrink rather than overflow.
whitespace

Whitespace is the optical-black field carrying faint ambient colour, not blank white. Generous internal padding and space above titles.

density

Low to medium; the refractive material needs room to read.

responsive
From ~390px mobile to 2560px+ ultra-wide. Stack to one column on mobile, drop secondary nav links, darken the hero veil for legibility; the hero headline uses clamp(33px,8.2vw,86px) and wraps, never clipping at 390px.
breakpoints
mobile
390px
tablet
768px
desktop
1180px
guidance
do
  • Build hierarchy from how surfaces catch light; let a focused pane glow rather than darken.
  • Keep every pane clear and translucent — no opaque flat fills, no borders.
  • Run the single spectral caustic light-line through the page as the divider and the mark of a lit surface.
  • Hold dispersion (the rainbow fringe) to the sharpest, highest-contrast edges only.
  • Stay on optical-black so the three spectral accents glow like real refracted light.
  • Commit to 16px and 24px containers and full pills; style every form control with custom states.
  • Use soft, colored or black shadows and a cyan glow for focus — never hard outlines.
avoid
  • Don't frost or blur everything into a hierarchy; clarity is the point.
  • Don't use opaque flat card fills, grey borders, or one-sided accent edges.
  • Don't let the spectrum flood; three accents used like highlighters, never washes.
  • Don't mix arbitrary radii; commit to 16 / 24 / full.
  • Don't let semantic colours lead — they stay a quiet, legible part of the palette.
  • Don't box navigation into a floating pill bar or nest cards.
imagery
pairs with

caustic-refraction

summary
Refractive optical-light studies: subjects seen and lit through clear and frosted glass, washed by caustic light with thin chromatic-dispersion fringes on the highest-contrast edges, glowing against deep darkness.
subjects
a faceted optical prisma single product or object through glassa portrait through a lensa city skyline refracted through glassabstract caustic light-nets
usage
One full-bleed hero per landing showing the caustic beam dispersing across the dark with calm negative space for the overlay; feature and section imagery in the same refractive technique.
katagami spec
# Caustic

## Philosophy

A refractive interface system where light behaviour does the structural work. Surfaces stay clear and translucent on optical-black; caustics carry hierarchy, a single spectral light-line carries rhythm, and dispersion marks emphasis. It keeps the source's essence — refraction, translucency, depth through light — but stages it as light in darkness instead of frosting everything into blur.

### Values

- Light as structure: a focused surface glows and catches the light rather than darkening or growing a heavier box
- Clarity over blur: panes stay clear and translucent; the system changes how light moves across them, not how opaque they are
- Refraction as rhythm: one spectral caustic light-line replaces rules and dividers
- Dispersion as signal: the rainbow fringe is spent only on the highest-contrast edges, so it always reads as emphasis
- Material honesty: surfaces behave like real optical glass against a dark field, the way a prism is shown in a dark room

### Anti-Values

- Frosting everything into blur and calling it hierarchy
- Opaque flat card fills, grey borders, or one-sided accent edges
- Letting the spectrum flood — three accents stay highlighters, never washes
- Light-first white minimalism as a default; this language stages light against darkness
- Arbitrary in-between radii or hard black drop shadows

### Visual Character

- Clear, translucent panes over a deep optical-black field, with a 1px inner highlight and a soft black shadow instead of borders.
- A 2px spectral caustic light-line (cyan to periwinkle to rose to amber, fading at both ends) recurs as the divider, the top edge of a focused pane, and the active-nav underline.
- Focused and active surfaces glow with a cyan ring rather than darkening; importance reads by how brightly a surface catches the light.
- Three spectral accents (cyan, rose, amber) used like highlighters against the dark, plus faint blurred colour-fields as the ambient light the glass refracts.
- A disciplined optical geometry of 16px and 24px containers and full pills, Space Grotesk display, Inter body, IBM Plex Mono metadata.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#0A0C12` |
| surface | `#12151E` |
| surface_2 | `#171B27` |
| text | `#F4F6FB` |
| muted | `#8A93A8` |
| border | `rgba(255,255,255,0.08)` |
| hairline | `rgba(255,255,255,0.12)` |
| accent | `#3DE0E6` |
| accent_2 | `#FF5C8A` |
| accent_3 | `#FFC14D` |
| on_accent | `#07090F` |
| success | `#4FD79B` |
| warning | `#FFC14D` |
| error | `#FF6B7E` |
| info | `#3DE0E6` |

### Typography

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

### Radii

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

### Shadows

- **Sm**: 0 2px 10px rgba(0,0,0,0.40)
- **Md**: 0 8px 32px rgba(0,0,0,0.50)
- **Lg**: 0 18px 50px rgba(0,0,0,0.55)
- **Glow**: 0 0 0 1px rgba(61,224,230,0.35), 0 0 28px rgba(61,224,230,0.22)

### Spacing

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

### Surfaces

- **Treatment**: Clear translucent panes: linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012)) with an inset 1px white highlight and a soft black shadow, over a deep optical-black field carrying faint cyan/rose/amber ambient blobs.
- **Card Style**: 24px-radius clear lenses, no borders or opaque fills; a focused (lit) pane glows with a cyan ring and carries the spectral light-line on its top edge.
- **Bg Pattern**: Optical-black ground with oversized, very soft blurred cyan, rose, and amber radial fields as the ambient light the glass refracts.

### Borders

- **Default Width**: 0
- **Character**: No borders. Depth from a 1px inner highlight, the caustic rim, and soft shadows; never grey edges or one-sided accents.

### Motion

- **Duration**: 260ms
- **Easing**: cubic-bezier(.2,.8,.2,1)
- **Philosophy**: Liquid but restrained behind a reduced-motion gate. The settled page is the no-JS default; an inline script gates a gentle scroll-reveal. Hover lifts a pane 2px and deepens its glow.

## Rules

### Composition

Build hierarchy from how surfaces catch light. Keep panes clear and translucent with no borders or opaque fills. Run a single spectral caustic light-line through the page as the divider and the mark of a focused surface. Hold dispersion (the rainbow fringe) to the highest-contrast edges only.

### Hierarchy

Importance is carried by light, not by heavier boxes or louder colour. Focused and active elements glow with a cyan ring and gain the spectral top-edge; they never darken. Typography weight provides secondary hierarchy on each clear pane.

### Density

Spacious and atmospheric; clear glass needs breathing room. Minimum 22-24px internal padding on panes, generous space above titles.

### Signature

The caustic light-line: a 2px spectral gradient (cyan -> periwinkle -> rose -> amber, fading at both ends) used as section divider, the top edge of a lit pane, the active-nav underline, and the fill of progress and split-bar tracks; it recolours on a palette swap because it is built from the role accents.

## Layout

### Grid

Contained content caps at 1180px centred; the full-bleed hero spans 100vw. Panes float with 20-24px gaps; grids use minmax(0,1fr) and min-width:0 so children shrink rather than overflow.

### Whitespace

Whitespace is the optical-black field carrying faint ambient colour, not blank white. Generous internal padding and space above titles.

### Density

Low to medium; the refractive material needs room to read.

### Responsive

From ~390px mobile to 2560px+ ultra-wide. Stack to one column on mobile, drop secondary nav links, darken the hero veil for legibility; the hero headline uses clamp(33px,8.2vw,86px) and wraps, never clipping at 390px.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1180px

## Guidance

### Do

- Build hierarchy from how surfaces catch light; let a focused pane glow rather than darken.
- Keep every pane clear and translucent — no opaque flat fills, no borders.
- Run the single spectral caustic light-line through the page as the divider and the mark of a lit surface.
- Hold dispersion (the rainbow fringe) to the sharpest, highest-contrast edges only.
- Stay on optical-black so the three spectral accents glow like real refracted light.
- Commit to 16px and 24px containers and full pills; style every form control with custom states.
- Use soft, colored or black shadows and a cyan glow for focus — never hard outlines.

### Don't

- Don't frost or blur everything into a hierarchy; clarity is the point.
- Don't use opaque flat card fills, grey borders, or one-sided accent edges.
- Don't let the spectrum flood; three accents used like highlighters, never washes.
- Don't mix arbitrary radii; commit to 16 / 24 / full.
- Don't let semantic colours lead — they stay a quiet, legible part of the palette.
- Don't box navigation into a floating pill bar or nest cards.

### Accessibility

Text holds WCAG AA contrast against the clear pane surface, not just the field behind it. Focus is a visible cyan glow ring. Custom checkboxes, radios, switches, sliders, selects, and progress replace all browser defaults. Reduced-motion users get the settled state instantly with no blur transitions.

## Imagery Direction

### Pairs With

caustic-refraction

### Summary

Refractive optical-light studies: subjects seen and lit through clear and frosted glass, washed by caustic light with thin chromatic-dispersion fringes on the highest-contrast edges, glowing against deep darkness.

### Subjects

- a faceted optical prism
- a single product or object through glass
- a portrait through a lens
- a city skyline refracted through glass
- abstract caustic light-nets

### Usage

One full-bleed hero per landing showing the caustic beam dispersing across the dark with calm negative space for the overlay; feature and section imagery in the same refractive technique.
DESIGN.md
---
version: "alpha"
name: "Caustic"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#0A0C12"
  surface: "#12151E"
  surface_2: "#171B27"
  text: "#F4F6FB"
  muted: "#8A93A8"
  accent: "#3DE0E6"
  accent_2: "#FF5C8A"
  accent_3: "#FFC14D"
  on_accent: "#07090F"
  success: "#4FD79B"
  warning: "#FFC14D"
  error: "#FF6B7E"
  info: "#3DE0E6"
typography:
  headline-lg:
    fontFamily: "Space Grotesk"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.03em"
  headline-md:
    fontFamily: "Space Grotesk"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.03em"
  body-md:
    fontFamily: "Inter"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.03em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "16px"
  md: "24px"
  lg: "24px"
  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-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"
---

# Caustic

## Overview

A refractive interface system where light behaviour does the structural work. Surfaces stay clear and translucent on optical-black; caustics carry hierarchy, a single spectral light-line carries rhythm, and dispersion marks emphasis. It keeps the source's essence — refraction, translucency, depth through light — but stages it as light in darkness instead of frosting everything into blur.

### Values

- Light as structure: a focused surface glows and catches the light rather than darkening or growing a heavier box
- Clarity over blur: panes stay clear and translucent; the system changes how light moves across them, not how opaque they are
- Refraction as rhythm: one spectral caustic light-line replaces rules and dividers
- Dispersion as signal: the rainbow fringe is spent only on the highest-contrast edges, so it always reads as emphasis
- Material honesty: surfaces behave like real optical glass against a dark field, the way a prism is shown in a dark room

### Anti-Values

- Frosting everything into blur and calling it hierarchy
- Opaque flat card fills, grey borders, or one-sided accent edges
- Letting the spectrum flood — three accents stay highlighters, never washes
- Light-first white minimalism as a default; this language stages light against darkness
- Arbitrary in-between radii or hard black drop shadows

### Visual Character

- Clear, translucent panes over a deep optical-black field, with a 1px inner highlight and a soft black shadow instead of borders.
- A 2px spectral caustic light-line (cyan to periwinkle to rose to amber, fading at both ends) recurs as the divider, the top edge of a focused pane, and the active-nav underline.
- Focused and active surfaces glow with a cyan ring rather than darkening; importance reads by how brightly a surface catches the light.
- Three spectral accents (cyan, rose, amber) used like highlighters against the dark, plus faint blurred colour-fields as the ambient light the glass refracts.
- A disciplined optical geometry of 16px and 24px containers and full pills, Space Grotesk display, Inter body, IBM Plex Mono metadata.

## 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 | `#0A0C12` |
| surface | `#12151E` |
| surface_2 | `#171B27` |
| text | `#F4F6FB` |
| muted | `#8A93A8` |
| accent | `#3DE0E6` |
| accent_2 | `#FF5C8A` |
| accent_3 | `#FFC14D` |
| on_accent | `#07090F` |
| success | `#4FD79B` |
| warning | `#FFC14D` |
| error | `#FF6B7E` |
| info | `#3DE0E6` |

## 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.5.
- **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`
- **Step-8**: `96px`

### Grid

Contained content caps at 1180px centred; the full-bleed hero spans 100vw. Panes float with 20-24px gaps; grids use minmax(0,1fr) and min-width:0 so children shrink rather than overflow.

### Whitespace

Whitespace is the optical-black field carrying faint ambient colour, not blank white. Generous internal padding and space above titles.

### Density

Low to medium; the refractive material needs room to read.

### Responsive

From ~390px mobile to 2560px+ ultra-wide. Stack to one column on mobile, drop secondary nav links, darken the hero veil for legibility; the hero headline uses clamp(33px,8.2vw,86px) and wraps, never clipping at 390px.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1180px

## Elevation & Depth

### Shadows

- **Sm**: 0 2px 10px rgba(0,0,0,0.40)
- **Md**: 0 8px 32px rgba(0,0,0,0.50)
- **Lg**: 0 18px 50px rgba(0,0,0,0.55)
- **Glow**: 0 0 0 1px rgba(61,224,230,0.35), 0 0 28px rgba(61,224,230,0.22)

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: Clear translucent panes: linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012)) with an inset 1px white highlight and a soft black shadow, over a deep optical-black field carrying faint cyan/rose/amber ambient blobs.
- **Card Style**: 24px-radius clear lenses, no borders or opaque fills; a focused (lit) pane glows with a cyan ring and carries the spectral light-line on its top edge.
- **Bg Pattern**: Optical-black ground with oversized, very soft blurred cyan, rose, and amber radial fields as the ambient light the glass refracts.

### Borders

- **Default Width**: 0
- **Character**: No borders. Depth from a 1px inner highlight, the caustic rim, and soft shadows; never grey edges or one-sided accents.

## Components

### Composition

Build hierarchy from how surfaces catch light. Keep panes clear and translucent with no borders or opaque fills. Run a single spectral caustic light-line through the page as the divider and the mark of a focused surface. Hold dispersion (the rainbow fringe) to the highest-contrast edges only.

### Hierarchy

Importance is carried by light, not by heavier boxes or louder colour. Focused and active elements glow with a cyan ring and gain the spectral top-edge; they never darken. Typography weight provides secondary hierarchy on each clear pane.

### Density

Spacious and atmospheric; clear glass needs breathing room. Minimum 22-24px internal padding on panes, generous space above titles.

### Signature

The caustic light-line: a 2px spectral gradient (cyan -> periwinkle -> rose -> amber, fading at both ends) used as section divider, the top edge of a lit pane, the active-nav underline, and the fill of progress and split-bar tracks; it recolours on a palette swap because it is built from the role accents.

## 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-019efd9f-65f4-7b13-a093-13b150e72873/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 Build hierarchy from how surfaces catch light; let a focused pane glow rather than darken.
- Do Keep every pane clear and translucent — no opaque flat fills, no borders.
- Do Run the single spectral caustic light-line through the page as the divider and the mark of a lit surface.
- Do Hold dispersion (the rainbow fringe) to the sharpest, highest-contrast edges only.
- Do Stay on optical-black so the three spectral accents glow like real refracted light.
- Do Commit to 16px and 24px containers and full pills; style every form control with custom states.
- Do Use soft, colored or black shadows and a cyan glow for focus — never hard outlines.
- Don't Don't frost or blur everything into a hierarchy; clarity is the point.
- Don't Don't use opaque flat card fills, grey borders, or one-sided accent edges.
- Don't Don't let the spectrum flood; three accents used like highlighters, never washes.
- Don't Don't mix arbitrary radii; commit to 16 / 24 / full.
- Don't Don't let semantic colours lead — they stay a quiet, legible part of the palette.
- Don't Don't box navigation into a floating pill bar or nest cards.

### Accessibility

Text holds WCAG AA contrast against the clear pane surface, not just the field behind it. Focus is a visible cyan glow ring. Custom checkboxes, radios, switches, sliders, selects, and progress replace all browser defaults. Reduced-motion users get the settled state instantly with no blur transitions.

## Imagery Direction

### Pairs With

caustic-refraction

### Summary

Refractive optical-light studies: subjects seen and lit through clear and frosted glass, washed by caustic light with thin chromatic-dispersion fringes on the highest-contrast edges, glowing against deep darkness.

### Subjects

- a faceted optical prism
- a single product or object through glass
- a portrait through a lens
- a city skyline refracted through glass
- abstract caustic light-nets

### Usage

One full-bleed hero per landing showing the caustic beam dispersing across the dark with calm negative space for the overlay; feature and section imagery in the same refractive technique.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "caustic",
  "type": "registry:theme",
  "title": "Caustic shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0A0C12",
      "foreground": "#F4F6FB",
      "card": "#12151E",
      "card-foreground": "#F4F6FB",
      "popover": "#12151E",
      "popover-foreground": "#F4F6FB",
      "primary": "#F4F6FB",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#8A93A8",
      "muted-foreground": "#F4F6FB",
      "accent": "#3DE0E6",
      "accent-foreground": "#111111",
      "destructive": "#FF6B7E",
      "border": "rgba(255,255,255,0.08)",
      "input": "rgba(255,255,255,0.08)",
      "ring": "#3DE0E6",
      "chart-1": "#F4F6FB",
      "chart-2": "#f4f4f5",
      "chart-3": "#3DE0E6",
      "chart-4": "#4FD79B",
      "chart-5": "#FFC14D",
      "sidebar": "#12151E",
      "sidebar-foreground": "#F4F6FB",
      "sidebar-primary": "#F4F6FB",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#3DE0E6",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "rgba(255,255,255,0.08)",
      "sidebar-ring": "#3DE0E6",
      "radius": "24px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F4F6FB",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#3DE0E6",
      "accent-foreground": "#111111",
      "destructive": "#FF6B7E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#3DE0E6",
      "chart-1": "#F4F6FB",
      "chart-2": "#f4f4f5",
      "chart-3": "#3DE0E6",
      "chart-4": "#4FD79B",
      "chart-5": "#FFC14D",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F4F6FB",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#3DE0E6",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#3DE0E6",
      "radius": "24px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efd9f-65f4-7b13-a093-13b150e72873",
    "slug": "caustic",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent_2",
        "accent_3",
        "bg",
        "border",
        "error",
        "hairline",
        "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": [
        "glow",
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "character",
        "default_width"
      ],
      "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-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with

produced by opus-4.8 · sourced by opus-4.8 · images by gpt-image-2

remix lane

try a remix

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

UI language · fixed
Caustic
Palette
Art style
Landing Page
live preview · recolored + filled
related

More like this