Luxury Dither Gradient
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
- Pearl hairlines define structure; champagne 2px ticks mark active corners and important state transitions.
- default width
- 1px
- style
- solid hairline plus stepped pixel accents
colors12 items
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(0.2, 0.8, 0.2, 1)
- philosophy
- Motion is minimal and expensive-feeling: controls brighten one dither band, cards translate by exactly 2px, and focus snaps to a crisp pixel outline.
radii5 items
- full
- 9999px
- lg
- 2px
- md
- 2px
- none
- 0
- sm
- 2px
shadows3 items
- lg
- 0 1px 0 rgba(242,228,199,0.22), 0 42px 120px rgba(0,0,0,0.58)
- md
- 0 1px 0 rgba(242,228,199,0.20), 0 24px 70px rgba(0,0,0,0.42)
- sm
- 0 1px 0 rgba(242,228,199,0.18), 0 10px 30px rgba(0,0,0,0.28)
spacing2 items
- base
- 8px
- scale
- 4, 8, 12, 16, 24, 32, 48, 64
surfaces3 items
- bg pattern
- Large cinematic champagne radial glow over black, interrupted by sparse ordered dither matrices and stepped tile separators.
- card style
- Flat squared jewelry-box cards with hairline pearl borders, inner glow, and gridded bitmap registration marks.
- treatment
- Obsidian-to-smoke panels with sparse 1px ordered dither overlays and champagne edge lighting.
typography8 items
- base size
- 16px
- body font
- Inter
- google fonts url
- https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- heading font
- Cormorant Garamond
- letter spacing
- -0.02em
- line height
- 1.5
- mono font
- IBM Plex Mono
- scale ratio
- 1.25
rules
Use an editorial product screen with a large gradient artifact on one side and dense instrument panels on the other; all modules align to an 8px grid and use stepped separators instead of floating decoration.
Medium-high density is acceptable when aligned and quiet; every table, stat, and control must feel deliberately placed on the bitmap grid.
Create hierarchy through luminous contrast, serif display titles, mono micro-labels, and measured champagne highlights; avoid stacking many equally bright panels.
layout
mobile 375px, tablet 768px, desktop 1440px
Desktop uses a 12-column grid with a 7-column hero artifact and 5-column control stack; tablet becomes two stacked bands, mobile becomes one column with preserved 8px rhythm.
Use generous outer margins of 48px to 72px on desktop, 28px on tablet, and 16px on mobile; within dense panels use 8px and 12px grid increments.
guidance
- Use dithering as an ordered material surface inside gradients, state fills, and data maps.
- Keep the palette narrow: champagne, obsidian, pearl, smoke, and only semantic muted state colors.
- Make every component prove interface transfer through controls, tables, forms, navigation, and responsive layouts.
- Commit to squared 2px geometry with precise hairlines and no random softness.
- Do not use arcade sprites, neon palettes, pixel fonts for body text, or game-console nostalgia.
- Do not apply all-over checkerboard backgrounds that obscure hierarchy.
- Do not mix pillowy radii with squared bitmap logic except for true status pills.
- Do not leave dithering as decorative wallpaper disconnected from buttons, cards, charts, and fields.
katagami spec
# Luxury Dither Gradient ## Philosophy A restrained luxury interface language where champagne light dissolves into obsidian through ordered bitmap dithering. Pixel logic is treated as couture material: sparse, precise, and tactile rather than nostalgic or arcade-like. ### Values - quiet opulence - ordered low-resolution craft - editorial restraint - product-grade clarity - material contrast ### Anti-Values - arcade nostalgia, neon cyberpunk, or game-console cosplay - busy checkerboard wallpaper and generic pixel confetti - soft arbitrary radius systems without committed geometry - decorative dithering that does not shape interface structure ### Visual Character - Layered radial and linear gradients use 1px ordered-dither masks over champagne, pearl, smoky grey, and obsidian fields. - Cards use squared 2px radii, hairline pearl borders, and inset champagne edge-light to create a jewelry-box surface. - Data panels and hero modules sit on a strict 8px bitmap grid with stepped pixel separators and corner registration marks. - Interactive controls carry small dither-fill state bands, mono micro-labels, and high-contrast obsidian focus outlines. ## Tokens ### Borders - **Accent Width**: 2px - **Character**: Pearl hairlines define structure; champagne 2px ticks mark active corners and important state transitions. - **Default Width**: 1px - **Style**: solid hairline plus stepped pixel accents ### Colors | Name | Value | |------|-------| | accent | `#F2E4C7` | | background | `#0B0A09` | | border | `#4B4338` | | error | `#C96E5F` | | info | `#A9B4BC` | | muted | `#9A9187` | | primary | `#D8B46A` | | secondary | `#1A1715` | | success | `#A5B77A` | | surface | `#151312` | | text | `#F7F0E6` | | warning | `#D8B46A` | ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1) - **Philosophy**: Motion is minimal and expensive-feeling: controls brighten one dither band, cards translate by exactly 2px, and focus snaps to a crisp pixel outline. ### Radii - **Full**: 9999px - **Lg**: 2px - **Md**: 2px - **None**: 0 - **Sm**: 2px ### Shadows - **Lg**: 0 1px 0 rgba(242,228,199,0.22), 0 42px 120px rgba(0,0,0,0.58) - **Md**: 0 1px 0 rgba(242,228,199,0.20), 0 24px 70px rgba(0,0,0,0.42) - **Sm**: 0 1px 0 rgba(242,228,199,0.18), 0 10px 30px rgba(0,0,0,0.28) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64] ### Surfaces - **Bg Pattern**: Large cinematic champagne radial glow over black, interrupted by sparse ordered dither matrices and stepped tile separators. - **Card Style**: Flat squared jewelry-box cards with hairline pearl borders, inner glow, and gridded bitmap registration marks. - **Treatment**: Obsidian-to-smoke panels with sparse 1px ordered dither overlays and champagne edge lighting. ### Typography - **Base Size**: 16px - **Body Font**: Inter - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap - **Heading Font**: Cormorant Garamond - **Letter Spacing**: -0.02em - **Line Height**: 1.5 - **Mono Font**: IBM Plex Mono - **Scale Ratio**: 1.25 ## Rules ### Composition Use an editorial product screen with a large gradient artifact on one side and dense instrument panels on the other; all modules align to an 8px grid and use stepped separators instead of floating decoration. ### Density Medium-high density is acceptable when aligned and quiet; every table, stat, and control must feel deliberately placed on the bitmap grid. ### Hierarchy Create hierarchy through luminous contrast, serif display titles, mono micro-labels, and measured champagne highlights; avoid stacking many equally bright panels. ### Signature Patterns - Ordered-dither gradient fields built from repeating 1px radial-gradient dots clipped inside panels, buttons, charts, and status fills. - Stepped pixel-divider borders using linear-gradient segments at 8px intervals rather than rounded cards or ordinary rules. - Champagne registration corners: four 2px square ticks placed at card corners to make modules feel like luxury bitmap plates. - Pearl-on-obsidian data engraving: mono labels, tiny square bullets, and inset hairlines transform tables and forms into a precision instrument. ## Layout ### Breakpoints mobile 375px, tablet 768px, desktop 1440px ### Grid Desktop uses a 12-column grid with a 7-column hero artifact and 5-column control stack; tablet becomes two stacked bands, mobile becomes one column with preserved 8px rhythm. ### Whitespace Use generous outer margins of 48px to 72px on desktop, 28px on tablet, and 16px on mobile; within dense panels use 8px and 12px grid increments. ## Guidance ### Do - Use dithering as an ordered material surface inside gradients, state fills, and data maps. - Keep the palette narrow: champagne, obsidian, pearl, smoke, and only semantic muted state colors. - Make every component prove interface transfer through controls, tables, forms, navigation, and responsive layouts. - Commit to squared 2px geometry with precise hairlines and no random softness. ### Don't - Do not use arcade sprites, neon palettes, pixel fonts for body text, or game-console nostalgia. - Do not apply all-over checkerboard backgrounds that obscure hierarchy. - Do not mix pillowy radii with squared bitmap logic except for true status pills. - Do not leave dithering as decorative wallpaper disconnected from buttons, cards, charts, and fields.
DESIGN.md
---
version: "alpha"
name: "Luxury Dither Gradient"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#F2E4C7"
background: "#0B0A09"
border: "#4B4338"
error: "#C96E5F"
info: "#A9B4BC"
muted: "#9A9187"
primary: "#D8B46A"
secondary: "#1A1715"
success: "#A5B77A"
surface: "#151312"
text: "#F7F0E6"
warning: "#D8B46A"
typography:
headline-lg:
fontFamily: "Cormorant Garamond"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Cormorant Garamond"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Inter"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "2px"
md: "2px"
none: "0px"
sm: "2px"
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-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
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"
---
# Luxury Dither Gradient
## Overview
A restrained luxury interface language where champagne light dissolves into obsidian through ordered bitmap dithering. Pixel logic is treated as couture material: sparse, precise, and tactile rather than nostalgic or arcade-like.
### Values
- quiet opulence
- ordered low-resolution craft
- editorial restraint
- product-grade clarity
- material contrast
### Anti-Values
- arcade nostalgia, neon cyberpunk, or game-console cosplay
- busy checkerboard wallpaper and generic pixel confetti
- soft arbitrary radius systems without committed geometry
- decorative dithering that does not shape interface structure
### Visual Character
- Layered radial and linear gradients use 1px ordered-dither masks over champagne, pearl, smoky grey, and obsidian fields.
- Cards use squared 2px radii, hairline pearl borders, and inset champagne edge-light to create a jewelry-box surface.
- Data panels and hero modules sit on a strict 8px bitmap grid with stepped pixel separators and corner registration marks.
- Interactive controls carry small dither-fill state bands, mono micro-labels, and high-contrast obsidian focus outlines.
## 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 | `#F2E4C7` |
| background | `#0B0A09` |
| border | `#4B4338` |
| error | `#C96E5F` |
| info | `#A9B4BC` |
| muted | `#9A9187` |
| primary | `#D8B46A` |
| secondary | `#1A1715` |
| success | `#A5B77A` |
| surface | `#151312` |
| text | `#F7F0E6` |
| warning | `#D8B46A` |
## Typography
- **Headline-Lg**: Cormorant Garamond, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Cormorant Garamond, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 16px, 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`
### Breakpoints
mobile 375px, tablet 768px, desktop 1440px
### Grid
Desktop uses a 12-column grid with a 7-column hero artifact and 5-column control stack; tablet becomes two stacked bands, mobile becomes one column with preserved 8px rhythm.
### Whitespace
Use generous outer margins of 48px to 72px on desktop, 28px on tablet, and 16px on mobile; within dense panels use 8px and 12px grid increments.
## Elevation & Depth
### Shadows
- **Lg**: 0 1px 0 rgba(242,228,199,0.22), 0 42px 120px rgba(0,0,0,0.58)
- **Md**: 0 1px 0 rgba(242,228,199,0.20), 0 24px 70px rgba(0,0,0,0.42)
- **Sm**: 0 1px 0 rgba(242,228,199,0.18), 0 10px 30px rgba(0,0,0,0.28)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `2px`
- **Md**: `2px`
- **None**: `0px`
- **Sm**: `2px`
### Surfaces
- **Bg Pattern**: Large cinematic champagne radial glow over black, interrupted by sparse ordered dither matrices and stepped tile separators.
- **Card Style**: Flat squared jewelry-box cards with hairline pearl borders, inner glow, and gridded bitmap registration marks.
- **Treatment**: Obsidian-to-smoke panels with sparse 1px ordered dither overlays and champagne edge lighting.
### Borders
- **Accent Width**: 2px
- **Character**: Pearl hairlines define structure; champagne 2px ticks mark active corners and important state transitions.
- **Default Width**: 1px
- **Style**: solid hairline plus stepped pixel accents
## Components
### Composition
Use an editorial product screen with a large gradient artifact on one side and dense instrument panels on the other; all modules align to an 8px grid and use stepped separators instead of floating decoration.
### Density
Medium-high density is acceptable when aligned and quiet; every table, stat, and control must feel deliberately placed on the bitmap grid.
### Hierarchy
Create hierarchy through luminous contrast, serif display titles, mono micro-labels, and measured champagne highlights; avoid stacking many equally bright panels.
### Signature Patterns
- Ordered-dither gradient fields built from repeating 1px radial-gradient dots clipped inside panels, buttons, charts, and status fills.
- Stepped pixel-divider borders using linear-gradient segments at 8px intervals rather than rounded cards or ordinary rules.
- Champagne registration corners: four 2px square ticks placed at card corners to make modules feel like luxury bitmap plates.
- Pearl-on-obsidian data engraving: mono labels, tiny square bullets, and inset hairlines transform tables and forms into a precision instrument.
## 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-019e69a6-3be1-7923-90e9-e8f84a5bf90c/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 dithering as an ordered material surface inside gradients, state fills, and data maps.
- Do Keep the palette narrow: champagne, obsidian, pearl, smoke, and only semantic muted state colors.
- Do Make every component prove interface transfer through controls, tables, forms, navigation, and responsive layouts.
- Do Commit to squared 2px geometry with precise hairlines and no random softness.
- Don't Do not use arcade sprites, neon palettes, pixel fonts for body text, or game-console nostalgia.
- Don't Do not apply all-over checkerboard backgrounds that obscure hierarchy.
- Don't Do not mix pillowy radii with squared bitmap logic except for true status pills.
- Don't Do not leave dithering as decorative wallpaper disconnected from buttons, cards, charts, and fields.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "luxury-dither-gradient",
"type": "registry:theme",
"title": "Luxury Dither Gradient shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0B0A09",
"foreground": "#F7F0E6",
"card": "#151312",
"card-foreground": "#F7F0E6",
"popover": "#151312",
"popover-foreground": "#F7F0E6",
"primary": "#D8B46A",
"primary-foreground": "#ffffff",
"secondary": "#1A1715",
"secondary-foreground": "#ffffff",
"muted": "#9A9187",
"muted-foreground": "#F7F0E6",
"accent": "#F2E4C7",
"accent-foreground": "#111111",
"destructive": "#C96E5F",
"border": "#4B4338",
"input": "#4B4338",
"ring": "#F2E4C7",
"chart-1": "#D8B46A",
"chart-2": "#1A1715",
"chart-3": "#F2E4C7",
"chart-4": "#A5B77A",
"chart-5": "#D8B46A",
"sidebar": "#151312",
"sidebar-foreground": "#F7F0E6",
"sidebar-primary": "#D8B46A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#A9B4BC",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#4B4338",
"sidebar-ring": "#F2E4C7",
"radius": "2px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#D8B46A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#F2E4C7",
"accent-foreground": "#111111",
"destructive": "#C96E5F",
"border": "#303642",
"input": "#303642",
"ring": "#F2E4C7",
"chart-1": "#D8B46A",
"chart-2": "#1A1715",
"chart-3": "#F2E4C7",
"chart-4": "#A5B77A",
"chart-5": "#D8B46A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#D8B46A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#F2E4C7",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#F2E4C7",
"radius": "2px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e69a6-3be1-7923-90e9-e8f84a5bf90c",
"slug": "luxury-dither-gradient",
"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",
"error",
"info",
"muted",
"primary",
"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
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: #0B0A09;
--foreground: #F7F0E6;
--card: #151312;
--card-foreground: #F7F0E6;
--popover: #151312;
--popover-foreground: #F7F0E6;
--primary: #D8B46A;
--primary-foreground: #ffffff;
--secondary: #1A1715;
--secondary-foreground: #ffffff;
--muted: #9A9187;
--muted-foreground: #F7F0E6;
--accent: #F2E4C7;
--accent-foreground: #111111;
--destructive: #C96E5F;
--border: #4B4338;
--input: #4B4338;
--ring: #F2E4C7;
--chart-1: #D8B46A;
--chart-2: #1A1715;
--chart-3: #F2E4C7;
--chart-4: #A5B77A;
--chart-5: #D8B46A;
--sidebar: #151312;
--sidebar-foreground: #F7F0E6;
--sidebar-primary: #D8B46A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #A9B4BC;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #4B4338;
--sidebar-ring: #F2E4C7;
--radius: 2px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #D8B46A;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #F2E4C7;
--accent-foreground: #111111;
--destructive: #C96E5F;
--border: #303642;
--input: #303642;
--ring: #F2E4C7;
--chart-1: #D8B46A;
--chart-2: #1A1715;
--chart-3: #F2E4C7;
--chart-4: #A5B77A;
--chart-5: #D8B46A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #D8B46A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #F2E4C7;
--sidebar-accent-foreground: #111111;
--sidebar-border: #303642;
--sidebar-ring: #F2E4C7;
--radius: 2px;
}
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 LuxuryDitherGradientShadcnKit() {
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">Luxury Dither Gradient</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",
"name": "luxury-dither-gradient",
"type": "registry:theme",
"title": "Luxury Dither Gradient shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0B0A09",
"foreground": "#F7F0E6",
"card": "#151312",
"card-foreground": "#F7F0E6",
"popover": "#151312",
"popover-foreground": "#F7F0E6",
"primary": "#D8B46A",
"primary-foreground": "#ffffff",
"secondary": "#1A1715",
"secondary-foreground": "#ffffff",
"muted": "#9A9187",
"muted-foreground": "#F7F0E6",
"accent": "#F2E4C7",
"accent-foreground": "#111111",
"destructive": "#C96E5F",
"border": "#4B4338",
"input": "#4B4338",
"ring": "#F2E4C7",
"chart-1": "#D8B46A",
"chart-2": "#1A1715",
"chart-3": "#F2E4C7",
"chart-4": "#A5B77A",
"chart-5": "#D8B46A",
"sidebar": "#151312",
"sidebar-foreground": "#F7F0E6",
"sidebar-primary": "#D8B46A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#A9B4BC",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#4B4338",
"sidebar-ring": "#F2E4C7",
"radius": "2px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#D8B46A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#F2E4C7",
"accent-foreground": "#111111",
"destructive": "#C96E5F",
"border": "#303642",
"input": "#303642",
"ring": "#F2E4C7",
"chart-1": "#D8B46A",
"chart-2": "#1A1715",
"chart-3": "#F2E4C7",
"chart-4": "#A5B77A",
"chart-5": "#D8B46A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#D8B46A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#F2E4C7",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#F2E4C7",
"radius": "2px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019e69a6-3be1-7923-90e9-e8f84a5bf90c",
"slug": "luxury-dither-gradient",
"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",
"error",
"info",
"muted",
"primary",
"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"
]
}
}
}
# Luxury Dither Gradient shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019e69a6-3be1-7923-90e9-e8f84a5bf90c`
Slug: `luxury-dither-gradient`
## Intent
A restrained luxury interface language where champagne light dissolves into obsidian through ordered bitmap dithering. Pixel logic is treated as couture material: sparse, precise, and tactile rather than nostalgic or arcade-like.
## Required primitives
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
## Token cues
Colors:
{
"accent": "#F2E4C7",
"background": "#0B0A09",
"border": "#4B4338",
"error": "#C96E5F",
"info": "#A9B4BC",
"muted": "#9A9187",
"primary": "#D8B46A",
"secondary": "#1A1715",
"success": "#A5B77A",
"surface": "#151312",
"text": "#F7F0E6",
"warning": "#D8B46A"
}
Typography:
{
"base_size": "16px",
"body_font": "Inter",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap",
"heading_font": "Cormorant Garamond",
"letter_spacing": "-0.02em",
"line_height": 1.5,
"mono_font": "IBM Plex Mono",
"scale_ratio": 1.25
}
## Visual character to preserve
- Layered radial and linear gradients use 1px ordered-dither masks over champagne, pearl, smoky grey, and obsidian fields.
- Cards use squared 2px radii, hairline pearl borders, and inset champagne edge-light to create a jewelry-box surface.
- Data panels and hero modules sit on a strict 8px bitmap grid with stepped pixel separators and corner registration marks.
- Interactive controls carry small dither-fill state bands, mono micro-labels, and high-contrast obsidian focus outlines.
## ShadSync visual profile
{
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/luxury-dither-gradient/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Use dithering as an ordered material surface inside gradients, state fills, and data maps.; Keep the palette narrow: champagne, obsidian, pearl, smoke, and only semantic muted state colors.; Make every component prove interface transfer through controls, tables, forms, navigation, and responsive layouts.; Commit to squared 2px geometry with precise hairlines and no random softness.
- Do not: Do not use arcade sprites, neon palettes, pixel fonts for body text, or game-console nostalgia.; Do not apply all-over checkerboard backgrounds that obscure hierarchy.; Do not mix pillowy radii with squared bitmap logic except for true status pills.; Do not leave dithering as decorative wallpaper disconnected from buttons, cards, charts, and fields.
## Copy-paste component example
This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.
```tsx
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 LuxuryDitherGradientShadcnKit() {
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">Luxury Dither Gradient</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>
);
}
```
## Layout notes
{
"breakpoints": "mobile 375px, tablet 768px, desktop 1440px",
"grid": "Desktop uses a 12-column grid with a 7-column hero artifact and 5-column control stack; tablet becomes two stacked bands, mobile becomes one column with preserved 8px rhythm.",
"whitespace": "Use generous outer margins of 48px to 72px on desktop, 28px on tablet, and 16px on mobile; within dense panels use 8px and 12px grid increments."
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-ui-compatibility-projection",
"generatedBy": "katagami-ui-projection",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "en-019e69a6-3be1-7923-90e9-e8f84a5bf90c",
"name": "Luxury Dither Gradient",
"slug": "luxury-dither-gradient"
},
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Layered radial and linear gradients use 1px ordered-dither masks over champagne, pearl, smoky grey, and obsidian fields.",
"Cards use squared 2px radii, hairline pearl borders, and inset champagne edge-light to create a jewelry-box surface.",
"Data panels and hero modules sit on a strict 8px bitmap grid with stepped pixel separators and corner registration marks.",
"Interactive controls carry small dither-fill state bands, mono micro-labels, and high-contrast obsidian focus outlines."
],
"visualProfile": {
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Luxury Dither Gradient launch room",
"description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
"primaryAction": "Apply theme",
"secondaryAction": "Review states",
"stats": [
{
"label": "components",
"value": "16",
"tone": "accent"
},
{
"label": "states",
"value": "ready"
},
{
"label": "density",
"value": "balanced",
"tone": "warning"
}
],
"rows": [
{
"label": "Primary flow",
"value": "mapped",
"status": "active"
},
{
"label": "Token coverage",
"value": "semantic",
"status": "synced"
},
{
"label": "Responsive proof",
"value": "queued",
"status": "review"
}
],
"statuses": [
"Active",
"Synced",
"Draft"
]
}
},
{
"id": "detail-editor",
"title": "Detail editor",
"viewport": "tablet",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"sheet"
],
"composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
"mustShow": [
"focus ring",
"error or destructive state",
"dialog or sheet treatment",
"written guidance content"
],
"avoid": [
"unstyled browser controls",
"floating cards inside cards",
"missing labels"
],
"scene": {
"eyebrow": "editing flow",
"headline": "Language recipe editor",
"description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
"primaryAction": "Save recipe",
"secondaryAction": "Open sheet",
"fields": [
{
"label": "Component family",
"value": "Narrative cards"
},
{
"label": "State treatment",
"value": "Visible focus + validation"
},
{
"label": "Motion",
"value": "Small lift, no opacity-only fade"
}
],
"statuses": [
"Focus",
"Invalid",
"Confirmed"
]
}
},
{
"id": "data-operations",
"title": "Data operations",
"viewport": "mobile",
"primitives": [
"button",
"tabs",
"badge",
"dropdown-menu",
"table",
"tooltip",
"separator"
],
"composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
"mustShow": [
"responsive reflow",
"dense row styling",
"menu affordance",
"status badge system"
],
"avoid": [
"desktop-only tables",
"text overflow",
"default shadcn spacing without Katagami character"
],
"scene": {
"eyebrow": "operations",
"headline": "Compact review queue",
"description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
"primaryAction": "Resolve",
"secondaryAction": "Filter",
"rows": [
{
"label": "Button hierarchy",
"value": "approved",
"status": "ok"
},
{
"label": "Table rhythm",
"value": "needs pass",
"status": "watch"
},
{
"label": "Empty state",
"value": "designed",
"status": "done"
}
],
"statuses": [
"Queued",
"Blocked",
"Done"
]
}
}
],
"componentRecipes": [
{
"primitive": "button",
"intent": "Prove action hierarchy, focus, disabled, and destructive states."
},
{
"primitive": "card",
"intent": "Carry the language surface, border, elevation, and density rules."
},
{
"primitive": "input",
"intent": "Show labels, focus rings, validation, and spacing rhythm."
},
{
"primitive": "textarea",
"intent": "Show longer guidance, validation copy, and writing density."
},
{
"primitive": "select",
"intent": "Show filtering, selection contrast, and menu trigger styling."
},
{
"primitive": "dialog",
"intent": "Show centered decision states and overlay treatment."
},
{
"primitive": "sheet",
"intent": "Show contextual side panels and responsive editing."
},
{
"primitive": "tabs",
"intent": "Show navigational structure and active/inactive contrast."
},
{
"primitive": "badge",
"intent": "Show compact status vocabulary and semantic colors."
},
{
"primitive": "separator",
"intent": "Show section rhythm without generic gray dividers."
},
{
"primitive": "checkbox",
"intent": "Show binary selection with visible focus and checked states."
},
{
"primitive": "switch",
"intent": "Show settings toggles and on/off contrast."
},
{
"primitive": "slider",
"intent": "Show numeric adjustment with track/thumb styling."
},
{
"primitive": "tooltip",
"intent": "Show concise explanation styling above compact controls."
},
{
"primitive": "dropdown-menu",
"intent": "Show action menus, destructive items, and grouped choices."
},
{
"primitive": "table",
"intent": "Show dense operational data, separators, row states, and responsive behavior."
}
],
"qualityRules": {
"do": [
"Use dithering as an ordered material surface inside gradients, state fills, and data maps.",
"Keep the palette narrow: champagne, obsidian, pearl, smoke, and only semantic muted state colors.",
"Make every component prove interface transfer through controls, tables, forms, navigation, and responsive layouts.",
"Commit to squared 2px geometry with precise hairlines and no random softness."
],
"dont": [
"Do not use arcade sprites, neon palettes, pixel fonts for body text, or game-console nostalgia.",
"Do not apply all-over checkerboard backgrounds that obscure hierarchy.",
"Do not mix pillowy radii with squared bitmap logic except for true status pills.",
"Do not leave dithering as decorative wallpaper disconnected from buttons, cards, charts, and fields."
]
}
}