Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Use an asymmetric engineering-binder layout: a vacuum-black service spine, one dominant airlock-cycle plate, narrow telemetry rails, and a deliberately empty bone-white breach. Avoid equal cards; let dense procedural modules collide with one spacious void.
Priority is expressed by position, weight, and amber risk tape rather than colour variety. Chapter headers are large condensed bone-on-vacuum blocks; command prompts are monospaced; body annotations stay small and procedural.
High density is acceptable inside checklist and ledger modules, but every dense cluster needs a vacuum gutter or bone-white pause nearby so the page feels controlled rather than noisy.
Amber lockout bars that interrupt borders at real risk states; DSKY verb/noun command capsules (mono label cell + bone segmented numeric cell); manga-negative breach voids cropping an EVA operator fragment; barcode part-ID rails and hatch-seal diagrams running along module edges as maintenance metadata.
12-column desktop engineering binder with 16px gutters, a left vacuum-black service spine, a dominant 7-column console plate, and a 3-column procedure rail; tablet collapses to 6 columns; mobile to a single scrollable binder.
4-8px for checklist ticks, 16-24px inside plates, 64-96px for vacuum gutters and manga-white pauses.
Dense in operational ledgers and telemetry strips, sparse around the operator crop and chapter header to preserve human unease.
Renders from ~390px mobile to 2560px+ ultra-wide; the service spine becomes a top index bar on small screens, diagram rails stack below the command module, amber lockout bars stay visible without horizontal scroll; contained content caps and centres at 1320px while only the hero spans 100vw.
anodize
Flat high-contrast monochrome inked service-plate imagery: cropped EVA gloves, helmets, hatch tools, umbilical lines, barcode part IDs, and diagrammatic airlock seals, with amber reserved for a single risk-tape accent. The landing hero is an EVA helmet and gloved hand at a circular airlock hatch seal, weighted left so the right stays quiet for the overlay.
One full-bleed Anodize hero per landing, swapped via --hero-image; breach voids and barcode rails inside the UI reuse the inked-plate halftone + hairline-grid treatment as CSS.
# Regolith ## Philosophy A moonbase airlock-service language for maintenance before EVA: vacuum-black gutters, regolith-aluminum plates, DSKY verb/noun command grammar, barcode part-ID rails, and amber lockout tape spent only where a real life-support state has gone to hold. It treats existential cybernetics as procedure rather than spectacle — a small operator negotiating oxygen, pressure, thermal, and hatch systems through calm square forms bolted to a habitat wall. ### Values - Operational calm under risk - Human scale against habitat machinery - Procedure before spectacle - Material honesty: aluminum, ink, tape, glass - Legible command grammar and checklist rhythm - Sparse amber reserved for real consequence ### Anti-Values - Green matrix rain, neon magenta/cyan cyberpunk, or nightclub glow - Generic SaaS card grids and analytics dashboards - Heroic anime character fan art or glossy spaceship-bridge fantasy - Random kanji, fake hacking clutter, and alarm overload - Decorative colour that does not map to oxygen, pressure, thermal, lockout, or EVA risk ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#050607` | | surface | `#2A2B29` | | surface_2 | `#1A1B19` | | recess | `#020303` | | text | `#ECE7DA` | | bone | `#D7D2C6` | | muted | `#9B988F` | | border | `rgba(255,255,255,0.08)` | | accent | `#C8872A` | | on_accent | `#050607` | | success | `#9CA66F` | | warning | `#C8872A` | | error | `#B65A3B` | | info | `#A8B0AE` | ### Typography - **Base Size**: 17px - **Body Font**: IBM Plex Sans Condensed - **Heading Font**: Saira Condensed - **Mono Font**: Fragment Mono - **Heading Weight**: 700 - **Heading Transform**: uppercase - **Letter Spacing**: -0.02em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fragment+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Saira+Condensed:wght@500;600;700&display=swap ### Radii - **None**: 0 - **Sm**: 0 - **Md**: 0 - **Lg**: 0 - **Full**: 9999px ### Shadows - **Sm**: inset 0 0 0 1px rgba(255,255,255,0.04) - **Md**: 0 20px 60px rgba(0,0,0,0.36) - **Lg**: 0 40px 120px rgba(0,0,0,0.48) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Bg Pattern**: vacuum-black field with sparse registration ticks, barcode-like part IDs, and large bone-white negative-space incisions - **Card Style**: square zero-radius service plates with 1px translucent-white hairlines, amber tape labels only on risk states, no glassmorphism and no accent edges - **Treatment**: flat oxidized-aluminum plates on vacuum black with a subtle hairline grid; no glow, no gradients ### Borders - **Default Width**: 1px - **Accent Width**: 7px - **Style**: solid - **Character**: near-invisible translucent-white hairlines for structure; amber lockout bars are thick interruption plates that physically cut nearby borders at risk states ### Motion - **Duration**: 140ms - **Easing**: steps(2, end) - **Philosophy**: motion behaves like a mechanical relay: instant state ticks, no cinematic easing, no glow pulses; the settled page is the default and renders with no JavaScript, motion is layered on top and respects prefers-reduced-motion ## Rules ### Composition Use an asymmetric engineering-binder layout: a vacuum-black service spine, one dominant airlock-cycle plate, narrow telemetry rails, and a deliberately empty bone-white breach. Avoid equal cards; let dense procedural modules collide with one spacious void. ### Hierarchy Priority is expressed by position, weight, and amber risk tape rather than colour variety. Chapter headers are large condensed bone-on-vacuum blocks; command prompts are monospaced; body annotations stay small and procedural. ### Density High density is acceptable inside checklist and ledger modules, but every dense cluster needs a vacuum gutter or bone-white pause nearby so the page feels controlled rather than noisy. ### Signature Amber lockout bars that interrupt borders at real risk states; DSKY verb/noun command capsules (mono label cell + bone segmented numeric cell); manga-negative breach voids cropping an EVA operator fragment; barcode part-ID rails and hatch-seal diagrams running along module edges as maintenance metadata. ## Layout ### Grid 12-column desktop engineering binder with 16px gutters, a left vacuum-black service spine, a dominant 7-column console plate, and a 3-column procedure rail; tablet collapses to 6 columns; mobile to a single scrollable binder. ### Whitespace 4-8px for checklist ticks, 16-24px inside plates, 64-96px for vacuum gutters and manga-white pauses. ### Density Dense in operational ledgers and telemetry strips, sparse around the operator crop and chapter header to preserve human unease. ### Responsive Renders from ~390px mobile to 2560px+ ultra-wide; the service spine becomes a top index bar on small screens, diagram rails stack below the command module, amber lockout bars stay visible without horizontal scroll; contained content caps and centres at 1320px while only the hero spans 100vw. ### Breakpoints - **Mobile**: 390px - **Tablet**: 768px - **Desktop**: 1200px - **Reflow**: 960px and 600px ## Guidance ### Do - Reserve amber for oxygen, pressure, thermal, lockout, and EVA risk states only. - Use square plates, hairline separators, segmented numerals, and verb/noun command grammar consistently. - Place at least one cropped EVA fragment or tool silhouette at human scale. - Let vacuum-black and bone-white negative space carry the existential tone. - Keep data labels operational: hatch seal, O2 umbilical, thermal loop, part ID, cycle time. - Use typography weight and spacing before adding colour. ### Don't - Do not use green matrix rain, neon cyberpunk magenta/cyan, bloom, or glow. - Do not build a generic dashboard of equal SaaS cards. - Do not use anime fan-art characters or heroic portraits. - Do not add random kanji, fake code spam, or decorative alarm overload. - Do not round corners or use glossy spaceship glass panels. - Do not spend amber on non-risk decorative highlights. ### Accessibility Maintain high contrast between bone text and vacuum-black/regolith surfaces; pair amber warnings with a label and a shape, never colour alone; keep monospaced telemetry at 14.5px or larger; provide visible square amber focus outlines; the settled page renders with no JavaScript and motion respects prefers-reduced-motion. ## Imagery Direction ### Pairs With anodize ### Summary Flat high-contrast monochrome inked service-plate imagery: cropped EVA gloves, helmets, hatch tools, umbilical lines, barcode part IDs, and diagrammatic airlock seals, with amber reserved for a single risk-tape accent. The landing hero is an EVA helmet and gloved hand at a circular airlock hatch seal, weighted left so the right stays quiet for the overlay. ### Subjects - EVA helmet and gloved hand - circular airlock hatch seal - hatch tools and umbilical lines - barcode part-ID rails - diagrammatic airlock seals ### Usage One full-bleed Anodize hero per landing, swapped via --hero-image; breach voids and barcode rails inside the UI reuse the inked-plate halftone + hairline-grid treatment as CSS.
---
version: "alpha"
name: "Regolith"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#050607"
surface: "#2A2B29"
surface_2: "#1A1B19"
recess: "#020303"
text: "#ECE7DA"
bone: "#D7D2C6"
muted: "#9B988F"
accent: "#C8872A"
on_accent: "#050607"
success: "#9CA66F"
warning: "#C8872A"
error: "#B65A3B"
info: "#A8B0AE"
typography:
headline-lg:
fontFamily: "Saira Condensed"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Saira Condensed"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans Condensed"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Fragment 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-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-recess:
backgroundColor: "{colors.recess}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-bone:
backgroundColor: "{colors.bone}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-accent:
backgroundColor: "{colors.accent}"
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"
---
# Regolith
## Overview
A moonbase airlock-service language for maintenance before EVA: vacuum-black gutters, regolith-aluminum plates, DSKY verb/noun command grammar, barcode part-ID rails, and amber lockout tape spent only where a real life-support state has gone to hold. It treats existential cybernetics as procedure rather than spectacle — a small operator negotiating oxygen, pressure, thermal, and hatch systems through calm square forms bolted to a habitat wall.
### Values
- Operational calm under risk
- Human scale against habitat machinery
- Procedure before spectacle
- Material honesty: aluminum, ink, tape, glass
- Legible command grammar and checklist rhythm
- Sparse amber reserved for real consequence
### Anti-Values
- Green matrix rain, neon magenta/cyan cyberpunk, or nightclub glow
- Generic SaaS card grids and analytics dashboards
- Heroic anime character fan art or glossy spaceship-bridge fantasy
- Random kanji, fake hacking clutter, and alarm overload
- Decorative colour that does not map to oxygen, pressure, thermal, lockout, or EVA risk
## 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 | `#050607` |
| surface | `#2A2B29` |
| surface_2 | `#1A1B19` |
| recess | `#020303` |
| text | `#ECE7DA` |
| bone | `#D7D2C6` |
| muted | `#9B988F` |
| accent | `#C8872A` |
| on_accent | `#050607` |
| success | `#9CA66F` |
| warning | `#C8872A` |
| error | `#B65A3B` |
| info | `#A8B0AE` |
## Typography
- **Headline-Lg**: Saira Condensed, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Saira Condensed, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans Condensed, 17px, weight 400, line-height 1.5.
- **Label-Md**: Fragment 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
12-column desktop engineering binder with 16px gutters, a left vacuum-black service spine, a dominant 7-column console plate, and a 3-column procedure rail; tablet collapses to 6 columns; mobile to a single scrollable binder.
### Whitespace
4-8px for checklist ticks, 16-24px inside plates, 64-96px for vacuum gutters and manga-white pauses.
### Density
Dense in operational ledgers and telemetry strips, sparse around the operator crop and chapter header to preserve human unease.
### Responsive
Renders from ~390px mobile to 2560px+ ultra-wide; the service spine becomes a top index bar on small screens, diagram rails stack below the command module, amber lockout bars stay visible without horizontal scroll; contained content caps and centres at 1320px while only the hero spans 100vw.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1200px
- **Reflow**: 960px and 600px
## Elevation & Depth
### Shadows
- **Sm**: inset 0 0 0 1px rgba(255,255,255,0.04)
- **Md**: 0 20px 60px rgba(0,0,0,0.36)
- **Lg**: 0 40px 120px rgba(0,0,0,0.48)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`
### Surfaces
- **Bg Pattern**: vacuum-black field with sparse registration ticks, barcode-like part IDs, and large bone-white negative-space incisions
- **Card Style**: square zero-radius service plates with 1px translucent-white hairlines, amber tape labels only on risk states, no glassmorphism and no accent edges
- **Treatment**: flat oxidized-aluminum plates on vacuum black with a subtle hairline grid; no glow, no gradients
### Borders
- **Default Width**: 1px
- **Accent Width**: 7px
- **Style**: solid
- **Character**: near-invisible translucent-white hairlines for structure; amber lockout bars are thick interruption plates that physically cut nearby borders at risk states
## Components
### Composition
Use an asymmetric engineering-binder layout: a vacuum-black service spine, one dominant airlock-cycle plate, narrow telemetry rails, and a deliberately empty bone-white breach. Avoid equal cards; let dense procedural modules collide with one spacious void.
### Hierarchy
Priority is expressed by position, weight, and amber risk tape rather than colour variety. Chapter headers are large condensed bone-on-vacuum blocks; command prompts are monospaced; body annotations stay small and procedural.
### Density
High density is acceptable inside checklist and ledger modules, but every dense cluster needs a vacuum gutter or bone-white pause nearby so the page feels controlled rather than noisy.
### Signature
Amber lockout bars that interrupt borders at real risk states; DSKY verb/noun command capsules (mono label cell + bone segmented numeric cell); manga-negative breach voids cropping an EVA operator fragment; barcode part-ID rails and hatch-seal diagrams running along module edges as maintenance metadata.
## 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-019ef9ae-8186-7730-ab9c-122071ce54d4/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 Reserve amber for oxygen, pressure, thermal, lockout, and EVA risk states only.
- Do Use square plates, hairline separators, segmented numerals, and verb/noun command grammar consistently.
- Do Place at least one cropped EVA fragment or tool silhouette at human scale.
- Do Let vacuum-black and bone-white negative space carry the existential tone.
- Do Keep data labels operational: hatch seal, O2 umbilical, thermal loop, part ID, cycle time.
- Do Use typography weight and spacing before adding colour.
- Don't Do not use green matrix rain, neon cyberpunk magenta/cyan, bloom, or glow.
- Don't Do not build a generic dashboard of equal SaaS cards.
- Don't Do not use anime fan-art characters or heroic portraits.
- Don't Do not add random kanji, fake code spam, or decorative alarm overload.
- Don't Do not round corners or use glossy spaceship glass panels.
- Don't Do not spend amber on non-risk decorative highlights.
### Accessibility
Maintain high contrast between bone text and vacuum-black/regolith surfaces; pair amber warnings with a label and a shape, never colour alone; keep monospaced telemetry at 14.5px or larger; provide visible square amber focus outlines; the settled page renders with no JavaScript and motion respects prefers-reduced-motion.
## Imagery Direction
### Pairs With
anodize
### Summary
Flat high-contrast monochrome inked service-plate imagery: cropped EVA gloves, helmets, hatch tools, umbilical lines, barcode part IDs, and diagrammatic airlock seals, with amber reserved for a single risk-tape accent. The landing hero is an EVA helmet and gloved hand at a circular airlock hatch seal, weighted left so the right stays quiet for the overlay.
### Subjects
- EVA helmet and gloved hand
- circular airlock hatch seal
- hatch tools and umbilical lines
- barcode part-ID rails
- diagrammatic airlock seals
### Usage
One full-bleed Anodize hero per landing, swapped via --hero-image; breach voids and barcode rails inside the UI reuse the inked-plate halftone + hairline-grid treatment as CSS.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "regolith",
"type": "registry:theme",
"title": "Regolith shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#050607",
"foreground": "#ECE7DA",
"card": "#2A2B29",
"card-foreground": "#ECE7DA",
"popover": "#2A2B29",
"popover-foreground": "#ECE7DA",
"primary": "#ECE7DA",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#9B988F",
"muted-foreground": "#ECE7DA",
"accent": "#C8872A",
"accent-foreground": "#ffffff",
"destructive": "#B65A3B",
"border": "rgba(255,255,255,0.08)",
"input": "rgba(255,255,255,0.08)",
"ring": "#C8872A",
"chart-1": "#ECE7DA",
"chart-2": "#f4f4f5",
"chart-3": "#C8872A",
"chart-4": "#9CA66F",
"chart-5": "#C8872A",
"sidebar": "#2A2B29",
"sidebar-foreground": "#ECE7DA",
"sidebar-primary": "#ECE7DA",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#A8B0AE",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(255,255,255,0.08)",
"sidebar-ring": "#C8872A",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#ECE7DA",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#C8872A",
"accent-foreground": "#ffffff",
"destructive": "#B65A3B",
"border": "#303642",
"input": "#303642",
"ring": "#C8872A",
"chart-1": "#ECE7DA",
"chart-2": "#f4f4f5",
"chart-3": "#C8872A",
"chart-4": "#9CA66F",
"chart-5": "#C8872A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#ECE7DA",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#C8872A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#C8872A",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef9ae-8186-7730-ab9c-122071ce54d4",
"slug": "regolith",
"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",
"bg",
"bone",
"border",
"error",
"info",
"muted",
"on_accent",
"recess",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"mono_font"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Regolithand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
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.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #050607;
--foreground: #ECE7DA;
--card: #2A2B29;
--card-foreground: #ECE7DA;
--popover: #2A2B29;
--popover-foreground: #ECE7DA;
--primary: #ECE7DA;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #9B988F;
--muted-foreground: #ECE7DA;
--accent: #C8872A;
--accent-foreground: #ffffff;
--destructive: #B65A3B;
--border: rgba(255,255,255,0.08);
--input: rgba(255,255,255,0.08);
--ring: #C8872A;
--chart-1: #ECE7DA;
--chart-2: #f4f4f5;
--chart-3: #C8872A;
--chart-4: #9CA66F;
--chart-5: #C8872A;
--sidebar: #2A2B29;
--sidebar-foreground: #ECE7DA;
--sidebar-primary: #ECE7DA;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #A8B0AE;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(255,255,255,0.08);
--sidebar-ring: #C8872A;
--radius: 0;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #ECE7DA;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #C8872A;
--accent-foreground: #ffffff;
--destructive: #B65A3B;
--border: #303642;
--input: #303642;
--ring: #C8872A;
--chart-1: #ECE7DA;
--chart-2: #f4f4f5;
--chart-3: #C8872A;
--chart-4: #9CA66F;
--chart-5: #C8872A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #ECE7DA;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #C8872A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #C8872A;
--radius: 0;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function RegolithShadcnKit() {
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">Regolith</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": "regolith",
"type": "registry:theme",
"title": "Regolith",
"description": "A moonbase airlock-service interface. Bone-white ink on vacuum-black, regolith-aluminum plates, and one amber lockout accent spent only on real life-support risk. Condensed engineering voice (Saira Condensed + IBM Plex Sans Condensed + Fragment Mono); zero-radius squared plates with 1px translucent-white hairline borders; DSKY verb/noun command grammar and barcode part-ID rails carry the identity. Dark mode is the ground, not an option.",
"cssVars": {
"theme": {
"font-sans": "IBM Plex Sans Condensed, system-ui, sans-serif",
"font-mono": "Fragment Mono, ui-monospace, monospace",
"font-display": "Saira Condensed, Arial Narrow, sans-serif",
"font-heading": "Saira Condensed, Arial Narrow, sans-serif",
"radius": "0px"
},
"dark": {
"background": "#050607",
"foreground": "#ECE7DA",
"card": "#2A2B29",
"card-foreground": "#ECE7DA",
"popover": "#1A1B19",
"popover-foreground": "#ECE7DA",
"primary": "#C8872A",
"primary-foreground": "#050607",
"secondary": "#D7D2C6",
"secondary-foreground": "#050607",
"accent": "#C8872A",
"accent-foreground": "#050607",
"muted": "#1A1B19",
"muted-foreground": "#9B988F",
"destructive": "#B65A3B",
"destructive-foreground": "#ECE7DA",
"success": "#9CA66F",
"warning": "#C8872A",
"info": "#A8B0AE",
"border": "rgba(255,255,255,0.08)",
"input": "#020303",
"ring": "#C8872A",
"radius": "0px"
}
}
}
# Regolith shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef9ae-8186-7730-ab9c-122071ce54d4`
Slug: `regolith`
## Intent
A moonbase airlock-service language for maintenance before EVA: vacuum-black gutters, regolith-aluminum plates, DSKY verb/noun command grammar, barcode part-ID rails, and amber lockout tape spent only where a real life-support state has gone to hold. It treats existential cybernetics as procedure rather than spectacle — a small operator negotiating oxygen, pressure, thermal, and hatch systems through calm square forms bolted to a habitat wall.
## 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:
{
"bg": "#050607",
"surface": "#2A2B29",
"surface_2": "#1A1B19",
"recess": "#020303",
"text": "#ECE7DA",
"bone": "#D7D2C6",
"muted": "#9B988F",
"border": "rgba(255,255,255,0.08)",
"accent": "#C8872A",
"on_accent": "#050607",
"success": "#9CA66F",
"warning": "#C8872A",
"error": "#B65A3B",
"info": "#A8B0AE"
}
Typography:
{
"base_size": "17px",
"body_font": "IBM Plex Sans Condensed",
"heading_font": "Saira Condensed",
"mono_font": "Fragment Mono",
"heading_weight": "700",
"heading_transform": "uppercase",
"letter_spacing": "-0.02em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fragment+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:wght@400;500;600;700&family=Saira+Condensed:wght@500;600;700&display=swap"
}
## Visual character to preserve
- Make the source language's structural identity visible in every component state.
## ShadSync visual profile
{
"family": "brutalist",
"material": "ink",
"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/regolith/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: Reserve amber for oxygen, pressure, thermal, lockout, and EVA risk states only.; Use square plates, hairline separators, segmented numerals, and verb/noun command grammar consistently.; Place at least one cropped EVA fragment or tool silhouette at human scale.; Let vacuum-black and bone-white negative space carry the existential tone.; Keep data labels operational: hatch seal, O2 umbilical, thermal loop, part ID, cycle time.; Use typography weight and spacing before adding colour.
- Do not: Do not use green matrix rain, neon cyberpunk magenta/cyan, bloom, or glow.; Do not build a generic dashboard of equal SaaS cards.; Do not use anime fan-art characters or heroic portraits.; Do not add random kanji, fake code spam, or decorative alarm overload.; Do not round corners or use glossy spaceship glass panels.; Do not spend amber on non-risk decorative highlights.
## 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 RegolithShadcnKit() {
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">Regolith</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
{
"grid": "12-column desktop engineering binder with 16px gutters, a left vacuum-black service spine, a dominant 7-column console plate, and a 3-column procedure rail; tablet collapses to 6 columns; mobile to a single scrollable binder.",
"whitespace": "4-8px for checklist ticks, 16-24px inside plates, 64-96px for vacuum gutters and manga-white pauses.",
"density": "Dense in operational ledgers and telemetry strips, sparse around the operator crop and chapter header to preserve human unease.",
"responsive": "Renders from ~390px mobile to 2560px+ ultra-wide; the service spine becomes a top index bar on small screens, diagram rails stack below the command module, amber lockout bars stay visible without horizontal scroll; contained content caps and centres at 1320px while only the hero spans 100vw.",
"breakpoints": {
"mobile": "390px",
"tablet": "768px",
"desktop": "1200px",
"reflow": "960px and 600px"
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"author": "katagami-agent",
"generatedBy": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": { "id": "", "name": "Regolith", "slug": "regolith" },
"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": [
"Amber is risk only — the one primary action, a lockout/hold state, and a thermal alarm carry the amber lockout fill; never decoration. Every other emphasis is bone-white on graphite.",
"Plates, not glass — square zero-radius regolith-aluminum surfaces (#2A2B29) on a vacuum-black ground, separated by 1px translucent-white hairlines; full radius only on tiny sealed status pips.",
"DSKY grammar carries the chrome — verb/noun command capsules pair a mono label cell with a segmented numeric cell; barcode part-ID rails and hatch-seal diagrams run along module edges as maintenance metadata, never generic SaaS cards."
],
"visualProfile": {
"family": "control",
"material": "flat",
"contour": "square",
"border": "hairline",
"underlay": "none",
"grain": true,
"stickerBadges": false,
"motion": "mechanical",
"density": "dense",
"radius": 0,
"accents": ["accent", "success", "warning"]
},
"shots": [
{
"id": "application-shell",
"title": "The Regolith airlock console",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "A moonbase EVA operations console: a vacuum-black service spine, KPI plates for cabin PSI / O2 / seal temp (the seal-temp plate goes amber on hold), a verb/noun command queue, and a pre-breach checklist ledger with bone-on-graphite OK rows and a single amber HOLD row.",
"mustShow": ["amber primary 'Confirm Lockout' vs bone-white quiet actions", "square zero-radius aluminum plates separated by 1px hairlines (no rounded corners, no accent edges)", "amber risk-tape on exactly the one hold state, bone-white everywhere else", "Fragment Mono telemetry readouts and Saira Condensed verb labels"],
"avoid": ["rounded corners or glassy panels", "amber spent on non-risk decoration", "green matrix / neon glow", "a generic grid of equal SaaS cards"],
"scene": {
"eyebrow": "console",
"headline": "EVA Operations — Icarus-9",
"description": "An airlock-service desk where amber marks the single life-support hold and everything else stays calm bone-on-graphite procedure.",
"primaryAction": "Confirm Lockout",
"secondaryAction": "Save Draft",
"stats": [
{ "label": "cabin psi", "value": "14.68", "tone": "default" },
{ "label": "o2 flow", "value": "88%", "tone": "info" },
{ "label": "seal temp", "value": "-42°C", "tone": "warning" }
],
"rows": [
{ "label": "Inner hatch sealed and indexed", "value": "T-04:00", "status": "ok" },
{ "label": "Cabin pressure equalized", "value": "T-02:50", "status": "ok" },
{ "label": "Outer hatch gasket reseat required", "value": "T-01:40", "status": "hold" },
{ "label": "Suit dump valve seated", "value": "T-00:55", "status": "ok" }
],
"statuses": ["OK", "Hold", "Idle"]
}
},
{
"id": "detail-editor",
"title": "EVA prep ticket",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A crew sign-off ticket: labelled mono fields on recess-black inputs, a service-task select, a procedure-notes textarea, a pressure-dump checkbox, a lockout-acknowledged switch (on is amber), an O2-flow slider, and a confirm-lockout dialog framed as a formal notice with an amber tape header.",
"mustShow": ["every control explicitly styled with no browser defaults", "amber focus ring and amber lockout switch in the on state", "an error (rust #B65A3B) inset on an out-of-tolerance field", "confirm-lockout dialog as a formal procedural notice", "real maintenance values (PN LM-AIR-LOCK-77, 14.68 PSI)"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "rounded inputs that break the squared geometry"],
"scene": {
"eyebrow": "prep",
"headline": "EVA prep ticket — Theron R.",
"description": "A sign-off proving labelled fields, an amber lockout switch, an out-of-tolerance error state, an O2 slider, and a lockout confirm.",
"primaryAction": "Confirm Lockout",
"secondaryAction": "Save Draft",
"fields": [
{ "label": "Service task", "value": "Outer hatch seal reseat", "type": "select" },
{ "label": "Procedure notes", "value": "Reseat gasket PN LM-AIR-LOCK-77 before cycle resumes", "type": "textarea" },
{ "label": "Seal temp", "value": "-42°C · below thermal floor", "type": "invalid" },
{ "label": "Lockout acknowledged", "value": "on", "type": "switch" }
],
"statuses": ["OK", "Hold", "Error"]
}
},
{
"id": "data-operations",
"title": "Cycle log queue",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow cycle log: stacked mono rows, per-row dropdown actions (reseat / log / release hold), status badges, tooltips, and a single amber HOLD state — collapses to a single scrollable binder on mobile.",
"mustShow": ["responsive reflow to a single-column binder", "Fragment Mono log rows", "row action menu with a destructive 'release hold' item", "bone OK / amber HOLD / muted IDLE status badges", "a hold state that reads as the only amber"],
"avoid": ["desktop-only tables", "horizontal overflow", "generic shadcn spacing without Regolith hairlines and grain"],
"scene": {
"eyebrow": "log",
"headline": "Cycle log",
"description": "A compact log with rows, action menus, tooltips, status badges, and a single amber hold affordance.",
"primaryAction": "Release Hold",
"secondaryAction": "Filter",
"rows": [
{ "label": "T-04:00 Inner hatch sealed", "value": "OK", "status": "ok" },
{ "label": "T-02:50 Cabin equalized", "value": "OK", "status": "ok" },
{ "label": "T-01:40 Outer hatch held", "value": "HOLD", "status": "hold" }
],
"statuses": ["OK", "Hold", "Idle"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Hierarchy: amber lockout primary = the one risk-confirming action; bone-white-on-graphite quiet = standard procedure; ghost = cancel; all share one 48px height, zero radius, centred mono label, a hairline that brightens to bone on hover. Mechanical: instant state tick, no easing glow." },
{ "primitive": "card", "intent": "Square zero-radius regolith-aluminum plate (#2A2B29) on vacuum-black, 1px translucent-white hairline, no accent edge; a recess variant (#020303) for command/rail panels; never nest plates." },
{ "primitive": "input", "intent": "Recess-black (#020303) fill, 1px hairline, zero radius, Fragment Mono value with a mono label above; amber inset on focus, rust (#B65A3B) inset when out of tolerance." },
{ "primitive": "textarea", "intent": "Procedure notes with the same focus + error rhythm; mono, zero radius, generous." },
{ "primitive": "select", "intent": "Service-task / view filtering with a square trigger, an explicit drawn caret (no browser default), clear selection contrast." },
{ "primitive": "dialog", "intent": "A formal 'Confirm lockout?' notice — centred, zero radius, an amber risk-tape header bar; no rounded corners." },
{ "primitive": "sheet", "intent": "The procedure rail / command queue side panel for contextual sign-off." },
{ "primitive": "tabs", "intent": "Switch Cycle / Telemetry / Crew / Log; active carries amber type or a short amber tape mark, not a soft underline." },
{ "primitive": "badge", "intent": "Flat status-chip vocabulary: OK / nominal (bone or sage success), HOLD / risk (amber lockout fill), IDLE (muted). Square, mono, hairline." },
{ "primitive": "separator", "intent": "A 1px translucent-white hairline grouping checklist rows or rail sections; never a heavy rule, never an accent edge." },
{ "primitive": "checkbox", "intent": "Pre-breach opt-ins with a sage-success diagonal check on a recess square and an amber focus ring." },
{ "primitive": "switch", "intent": "Lockout-acknowledged toggle; on is an amber track with a vacuum-black knob, off is a flat aluminum track with a muted knob." },
{ "primitive": "slider", "intent": "O2 flow / cabin PSI with a bone track, an amber fill when in a risk band, and a square knob." },
{ "primitive": "tooltip", "intent": "Concise mono procedure notes above compact controls; recess-black, hairline." },
{ "primitive": "dropdown-menu", "intent": "Per-row cycle actions (reseat, log, release hold) with a destructive amber 'release hold' item." },
{ "primitive": "table", "intent": "The cycle log / checklist ledger: mono header, mono rows on the surface-2 (#1A1B19) zebra, a status badge per row, a single amber HOLD row, hairline row separators only." }
],
"qualityRules": {
"do": [
"Spend amber only on the one risk-confirming action and on real oxygen/pressure/thermal/lockout states; keep everything else bone-on-graphite.",
"Keep plates square and zero-radius on a vacuum-black ground; separate with 1px translucent-white hairlines and the recess surface.",
"Set telemetry, codes, PSI, temperatures, and part IDs in Fragment Mono; verb labels and headers in Saira Condensed.",
"Let barcode part-ID rails and hatch-seal diagrams carry the chrome instead of generic icons."
],
"dont": [
"Round corners, add glassy panels, or give a card an accent edge.",
"Spend amber on decoration, or add green matrix / neon / bloom / glow.",
"Build a grid of equal SaaS cards or use unstyled browser controls.",
"Solve hierarchy with extra hues when weight, spacing, and a single amber tape can do the work."
]
}
}