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.
Compose as a scramble crossing: signals converge from four directions and the full-width crossing band sorts them into bounded crosswalk lanes on a warm violet dusk. Primary content lives in lane cards with crosswalk-striped edges; supporting detail rides transit pills, glowing status lights, and one live inset screen. Surfaces are carved apart by glow and hard gutters, not grey borders, and each throws a reflection on the wet ground.
Scan-first: one oversized display number or word, then dense Space Mono labels and metadata. Users read by colour, number and direction before any paragraph.
High density kept legible — each surface is a bounded lane with one striped edge and one hairline per table row; the scene feels packed with signals yet orchestrated.
The crossing band and the reflection echo: a full-width horizontal striped marquee in lime/ice/coral that sorts converging signals into crosswalk lanes, while every surface mirrors itself on the wet ground. Lane cards carry a crosswalk-striped top edge whose colour is the state and an oversized numeral that is the reading.
Responsive lane grid (minmax(0,1fr) + min-width:0) so children shrink instead of overflowing; the crossing band spans full-bleed; contained measure caps on ultra-wide.
Generous padding above titles; a calm dark violet zone in the hero for the overlaid headline; meters and lanes breathe.
Dense but lane-bounded; the table is a results sheet at 14.5px rows.
Mobile collapses to one column, hides non-essential nav, drops the form to one column; the hero headline uses clamp() and wraps, never clipping at 390px.
halation-bloom
Long-exposure night photography in the Halation technique: bloom swells around every light, the wet ground mirrors the neon as vertical streaks, bokeh orbs float in the deep dark, the subject's edges glow. Lime, coral and ice read as highlighter marks on a deep magenta-violet night.
One full-bleed night-photo hero per landing, the crossing massed to the lower-right and a calm dark violet zone upper-left for the overlaid headline; one live inset screen per major surface, driven by --hero-image.
# Scramble ## Philosophy Scramble is a wayfinding interface language built from the moment a dense intersection releases. A corridor moves you along a wall of signs; a scramble crossing fills from four directions at once. Scramble turns that into structure: signals — feeds, ads, routes, alerts — converge from every side and a single horizontal crossing band sorts them into bounded crosswalk lanes, so a glance is enough. You read by colour and number, follow the direction, then move. The ground is a saturated magenta-violet dusk, three highlighter inks do all the signalling, and every surface throws a wet-ground reflection of itself. ### Values - A scramble crossing as a way to move through data — read by colour and number, follow direction, then move - The crossing band is the structure: a full-width striped marquee that sorts converging signals into bounded crosswalk lanes - The reflection echo: every surface mirrors itself on the wet ground, the long-exposure photograph made structural - Three highlighter inks on a warm violet dusk — lime to go, coral to mark what is live, ice to route - A coloured night, never white, never blue-black; glow and reflection carry the brightness while the chrome stays quiet ### Anti-Values - Defaulting to white or blue-black, or washing the dusk pale - A vertical sign-tower corridor with a single luminous spine - A second loud accent, or flooding a surface with colour - Grey borders, boxed-in pill navigation, or nested cards - Long body copy as the primary hierarchy instead of scan-first signage ### Visual Character - The crossing band: a full-width horizontal striped marquee in lime, ice and coral lanes, laid like a scramble crosswalk seen from above, running the live signals across the top of every view as structure, not decoration. - Lane cards: every primary surface carries a crosswalk-striped top edge in its role colour, an oversized numeral you read first, then a Space Mono label; colour is the state, the number is the value. - The reflection echo: surfaces throw a faint blurred mirrored copy of themselves on the wet ground beneath, recolouring with the surface. - A warm magenta-violet dusk ground against which lime (go), coral (live) and ice (route) read as three bright highlighter marks; structure comes from glow and the striped edge, never from grey borders. - Space Grotesk display and body with Space Mono metadata, one headline word carrying a lime colour-pop highlighter mark, never a serif/italic swap. - One live inset screen per surface — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit pills, and role-coloured meters that stand in for any stat row. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#160a1f` | | bg_deep | `#0e0614` | | surface | `#221230` | | surface_2 | `#2c1840` | | text | `#f6effb` | | muted | `#b09cc4` | | border | `#3a2350` | | accent | `#c6ff3a` | | accent_2 | `#ff6a4d` | | accent_3 | `#b6ecff` | | on_accent | `#160a1f` | | success | `#c6ff3a` | | warning | `#ffb347` | | error | `#ff5a78` | | info | `#b6ecff` | ### Typography - **Base Size**: 17px - **Body Font**: Space Grotesk - **Heading Font**: Space Grotesk - **Mono Font**: Space Mono - **Heading Weight**: 700 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Line Height**: 1.55 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap ### Radii - **Sharp**: 0px - **Base**: 16px - **Lg**: 24px - **Pill**: 9999px ### Shadows - **Glow**: 0 0 14px 2px var(--accent) - **Inset Ring**: inset 0 0 0 1.5px var(--border) ### Spacing - **Base**: 8px - **Scale**: ["8px","14px","22px","34px","56px","90px"] ### Surfaces - **Ground**: #160a1f - **Card**: #221230 - **Raised**: #2c1840 ### Borders - **Hairline**: 1px solid #3a2350 - **Philosophy**: structure from glow and the crosswalk-striped edge, never grey borders ### Motion - **Band**: horizontal crossing-band marquee, 22-24s linear - **Reveal**: opacity+translateY on scroll - **Reduced**: respect prefers-reduced-motion ## Rules ### Composition Compose as a scramble crossing: signals converge from four directions and the full-width crossing band sorts them into bounded crosswalk lanes on a warm violet dusk. Primary content lives in lane cards with crosswalk-striped edges; supporting detail rides transit pills, glowing status lights, and one live inset screen. Surfaces are carved apart by glow and hard gutters, not grey borders, and each throws a reflection on the wet ground. ### Hierarchy Scan-first: one oversized display number or word, then dense Space Mono labels and metadata. Users read by colour, number and direction before any paragraph. ### Density High density kept legible — each surface is a bounded lane with one striped edge and one hairline per table row; the scene feels packed with signals yet orchestrated. ### Signature The crossing band and the reflection echo: a full-width horizontal striped marquee in lime/ice/coral that sorts converging signals into crosswalk lanes, while every surface mirrors itself on the wet ground. Lane cards carry a crosswalk-striped top edge whose colour is the state and an oversized numeral that is the reading. ## Layout ### Grid Responsive lane grid (minmax(0,1fr) + min-width:0) so children shrink instead of overflowing; the crossing band spans full-bleed; contained measure caps on ultra-wide. ### Whitespace Generous padding above titles; a calm dark violet zone in the hero for the overlaid headline; meters and lanes breathe. ### Density Dense but lane-bounded; the table is a results sheet at 14.5px rows. ### Responsive Mobile collapses to one column, hides non-essential nav, drops the form to one column; the hero headline uses clamp() and wraps, never clipping at 390px. ### Breakpoints - **Mobile**: 390px - **Tablet**: 720px - **Desktop**: 1240px - **Ultrawide**: 2560px ## Guidance ### Do - Keep the ground a warm magenta-violet dusk; let lime, coral and ice glow on it like highlighters. - Lead each surface with one lime primary; keep everything else quiet. - Build structure from glow, the crosswalk-striped edge and hard gutters; mirror surfaces on the wet ground. - Drive the live inset from --hero-image; keep one live screen per view. - Use Space Grotesk for type and Space Mono for metadata; pop one headline word in lime. ### Don't - Default to white or blue-black, or wash the dusk pale, or desaturate the inks to greys. - Add grey borders, nested cards, or a boxed-in pill nav. - Use the SaaS-template hero (eyebrow tag + primary/secondary button pair + three-stat furniture row). - Swap serif/italic in the headline; ship unstyled native form controls. - Let amber or error read as primary — semantic colour stays a small part. ### Accessibility Light text on the dusk holds high contrast; focus states light a 2px lime ring; motion is gated and respects prefers-reduced-motion; the page renders fully with no JavaScript. ## Imagery Direction ### Pairs With halation-bloom ### Summary Long-exposure night photography in the Halation technique: bloom swells around every light, the wet ground mirrors the neon as vertical streaks, bokeh orbs float in the deep dark, the subject's edges glow. Lime, coral and ice read as highlighter marks on a deep magenta-violet night. ### Subjects - a rain-soaked scramble crossing seen from a high diagonal angle - a single object rim-lit by night signage on wet ground - a wet boulevard with reflected light streaks - a night-street scene lit by converging neon ### Usage One full-bleed night-photo hero per landing, the crossing massed to the lower-right and a calm dark violet zone upper-left for the overlaid headline; one live inset screen per major surface, driven by --hero-image.
---
version: "alpha"
name: "Scramble"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#160a1f"
bg_deep: "#0e0614"
surface: "#221230"
surface_2: "#2c1840"
text: "#f6effb"
muted: "#b09cc4"
border: "#3a2350"
accent: "#c6ff3a"
accent_2: "#ff6a4d"
accent_3: "#b6ecff"
on_accent: "#160a1f"
success: "#c6ff3a"
warning: "#ffb347"
error: "#ff5a78"
info: "#b6ecff"
typography:
headline-lg:
fontFamily: "Space Grotesk"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Space Grotesk"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Space Grotesk"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Space Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
sharp: "0px"
base: "16px"
lg: "24px"
pill: "9999px"
spacing:
base: "8px"
xs: "8px"
sm: "14px"
md: "22px"
lg: "34px"
xl: "56px"
2xl: "90px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-bg_deep:
backgroundColor: "{colors.bg_deep}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
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.lg}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.lg}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.lg}"
height: "44px"
---
# Scramble
## Overview
Scramble is a wayfinding interface language built from the moment a dense intersection releases. A corridor moves you along a wall of signs; a scramble crossing fills from four directions at once. Scramble turns that into structure: signals — feeds, ads, routes, alerts — converge from every side and a single horizontal crossing band sorts them into bounded crosswalk lanes, so a glance is enough. You read by colour and number, follow the direction, then move. The ground is a saturated magenta-violet dusk, three highlighter inks do all the signalling, and every surface throws a wet-ground reflection of itself.
### Values
- A scramble crossing as a way to move through data — read by colour and number, follow direction, then move
- The crossing band is the structure: a full-width striped marquee that sorts converging signals into bounded crosswalk lanes
- The reflection echo: every surface mirrors itself on the wet ground, the long-exposure photograph made structural
- Three highlighter inks on a warm violet dusk — lime to go, coral to mark what is live, ice to route
- A coloured night, never white, never blue-black; glow and reflection carry the brightness while the chrome stays quiet
### Anti-Values
- Defaulting to white or blue-black, or washing the dusk pale
- A vertical sign-tower corridor with a single luminous spine
- A second loud accent, or flooding a surface with colour
- Grey borders, boxed-in pill navigation, or nested cards
- Long body copy as the primary hierarchy instead of scan-first signage
### Visual Character
- The crossing band: a full-width horizontal striped marquee in lime, ice and coral lanes, laid like a scramble crosswalk seen from above, running the live signals across the top of every view as structure, not decoration.
- Lane cards: every primary surface carries a crosswalk-striped top edge in its role colour, an oversized numeral you read first, then a Space Mono label; colour is the state, the number is the value.
- The reflection echo: surfaces throw a faint blurred mirrored copy of themselves on the wet ground beneath, recolouring with the surface.
- A warm magenta-violet dusk ground against which lime (go), coral (live) and ice (route) read as three bright highlighter marks; structure comes from glow and the striped edge, never from grey borders.
- Space Grotesk display and body with Space Mono metadata, one headline word carrying a lime colour-pop highlighter mark, never a serif/italic swap.
- One live inset screen per surface — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit pills, and role-coloured meters that stand in for any stat row.
## 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 | `#160a1f` |
| bg_deep | `#0e0614` |
| surface | `#221230` |
| surface_2 | `#2c1840` |
| text | `#f6effb` |
| muted | `#b09cc4` |
| border | `#3a2350` |
| accent | `#c6ff3a` |
| accent_2 | `#ff6a4d` |
| accent_3 | `#b6ecff` |
| on_accent | `#160a1f` |
| success | `#c6ff3a` |
| warning | `#ffb347` |
| error | `#ff5a78` |
| info | `#b6ecff` |
## 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**: Space Grotesk, 17px, weight 400, line-height 1.55.
- **Label-Md**: Space Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `8px`
- **Sm**: `14px`
- **Md**: `22px`
- **Lg**: `34px`
- **Xl**: `56px`
- **2xl**: `90px`
### Grid
Responsive lane grid (minmax(0,1fr) + min-width:0) so children shrink instead of overflowing; the crossing band spans full-bleed; contained measure caps on ultra-wide.
### Whitespace
Generous padding above titles; a calm dark violet zone in the hero for the overlaid headline; meters and lanes breathe.
### Density
Dense but lane-bounded; the table is a results sheet at 14.5px rows.
### Responsive
Mobile collapses to one column, hides non-essential nav, drops the form to one column; the hero headline uses clamp() and wraps, never clipping at 390px.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 720px
- **Desktop**: 1240px
- **Ultrawide**: 2560px
## Elevation & Depth
### Shadows
- **Glow**: 0 0 14px 2px var(--accent)
- **Inset Ring**: inset 0 0 0 1.5px var(--border)
## Shapes
### Rounded
- **Sharp**: `0px`
- **Base**: `16px`
- **Lg**: `24px`
- **Pill**: `9999px`
### Surfaces
- **Ground**: #160a1f
- **Card**: #221230
- **Raised**: #2c1840
### Borders
- **Hairline**: 1px solid #3a2350
- **Philosophy**: structure from glow and the crosswalk-striped edge, never grey borders
## Components
### Composition
Compose as a scramble crossing: signals converge from four directions and the full-width crossing band sorts them into bounded crosswalk lanes on a warm violet dusk. Primary content lives in lane cards with crosswalk-striped edges; supporting detail rides transit pills, glowing status lights, and one live inset screen. Surfaces are carved apart by glow and hard gutters, not grey borders, and each throws a reflection on the wet ground.
### Hierarchy
Scan-first: one oversized display number or word, then dense Space Mono labels and metadata. Users read by colour, number and direction before any paragraph.
### Density
High density kept legible — each surface is a bounded lane with one striped edge and one hairline per table row; the scene feels packed with signals yet orchestrated.
### Signature
The crossing band and the reflection echo: a full-width horizontal striped marquee in lime/ice/coral that sorts converging signals into crosswalk lanes, while every surface mirrors itself on the wet ground. Lane cards carry a crosswalk-striped top edge whose colour is the state and an oversized numeral that is the reading.
## 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-019efdb8-7280-7791-b95d-88c0092f1307/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 Keep the ground a warm magenta-violet dusk; let lime, coral and ice glow on it like highlighters.
- Do Lead each surface with one lime primary; keep everything else quiet.
- Do Build structure from glow, the crosswalk-striped edge and hard gutters; mirror surfaces on the wet ground.
- Do Drive the live inset from --hero-image; keep one live screen per view.
- Do Use Space Grotesk for type and Space Mono for metadata; pop one headline word in lime.
- Don't Default to white or blue-black, or wash the dusk pale, or desaturate the inks to greys.
- Don't Add grey borders, nested cards, or a boxed-in pill nav.
- Don't Use the SaaS-template hero (eyebrow tag + primary/secondary button pair + three-stat furniture row).
- Don't Swap serif/italic in the headline; ship unstyled native form controls.
- Don't Let amber or error read as primary — semantic colour stays a small part.
### Accessibility
Light text on the dusk holds high contrast; focus states light a 2px lime ring; motion is gated and respects prefers-reduced-motion; the page renders fully with no JavaScript.
## Imagery Direction
### Pairs With
halation-bloom
### Summary
Long-exposure night photography in the Halation technique: bloom swells around every light, the wet ground mirrors the neon as vertical streaks, bokeh orbs float in the deep dark, the subject's edges glow. Lime, coral and ice read as highlighter marks on a deep magenta-violet night.
### Subjects
- a rain-soaked scramble crossing seen from a high diagonal angle
- a single object rim-lit by night signage on wet ground
- a wet boulevard with reflected light streaks
- a night-street scene lit by converging neon
### Usage
One full-bleed night-photo hero per landing, the crossing massed to the lower-right and a calm dark violet zone upper-left for the overlaid headline; one live inset screen per major surface, driven by --hero-image.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "scramble",
"type": "registry:theme",
"title": "Scramble shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#160a1f",
"foreground": "#f6effb",
"card": "#221230",
"card-foreground": "#f6effb",
"popover": "#221230",
"popover-foreground": "#f6effb",
"primary": "#f6effb",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#b09cc4",
"muted-foreground": "#f6effb",
"accent": "#c6ff3a",
"accent-foreground": "#111111",
"destructive": "#ff5a78",
"border": "#3a2350",
"input": "#3a2350",
"ring": "#c6ff3a",
"chart-1": "#f6effb",
"chart-2": "#f4f4f5",
"chart-3": "#c6ff3a",
"chart-4": "#c6ff3a",
"chart-5": "#ffb347",
"sidebar": "#221230",
"sidebar-foreground": "#f6effb",
"sidebar-primary": "#f6effb",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#b6ecff",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#3a2350",
"sidebar-ring": "#c6ff3a",
"radius": "24px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#f6effb",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#c6ff3a",
"accent-foreground": "#111111",
"destructive": "#ff5a78",
"border": "#303642",
"input": "#303642",
"ring": "#c6ff3a",
"chart-1": "#f6effb",
"chart-2": "#f4f4f5",
"chart-3": "#c6ff3a",
"chart-4": "#c6ff3a",
"chart-5": "#ffb347",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#f6effb",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#c6ff3a",
"sidebar-accent-foreground": "#111111",
"sidebar-border": "#303642",
"sidebar-ring": "#c6ff3a",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efdb8-7280-7791-b95d-88c0092f1307",
"slug": "scramble",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"bg_deep",
"border",
"error",
"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": [
"base",
"lg",
"pill",
"sharp"
],
"shadows": [
"glow",
"inset_ring"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"card",
"ground",
"raised"
],
"borders": [
"hairline",
"philosophy"
],
"motion": [
"band",
"reduced",
"reveal"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
produced by claude-opus-4-8 · sourced by claude-opus-4-8 · images by gpt-image-2
Keep Scrambleand 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: #160a1f;
--foreground: #f6effb;
--card: #221230;
--card-foreground: #f6effb;
--popover: #221230;
--popover-foreground: #f6effb;
--primary: #f6effb;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #b09cc4;
--muted-foreground: #f6effb;
--accent: #c6ff3a;
--accent-foreground: #111111;
--destructive: #ff5a78;
--border: #3a2350;
--input: #3a2350;
--ring: #c6ff3a;
--chart-1: #f6effb;
--chart-2: #f4f4f5;
--chart-3: #c6ff3a;
--chart-4: #c6ff3a;
--chart-5: #ffb347;
--sidebar: #221230;
--sidebar-foreground: #f6effb;
--sidebar-primary: #f6effb;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #b6ecff;
--sidebar-accent-foreground: #111111;
--sidebar-border: #3a2350;
--sidebar-ring: #c6ff3a;
--radius: 24px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #f6effb;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #c6ff3a;
--accent-foreground: #111111;
--destructive: #ff5a78;
--border: #303642;
--input: #303642;
--ring: #c6ff3a;
--chart-1: #f6effb;
--chart-2: #f4f4f5;
--chart-3: #c6ff3a;
--chart-4: #c6ff3a;
--chart-5: #ffb347;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #f6effb;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #c6ff3a;
--sidebar-accent-foreground: #111111;
--sidebar-border: #303642;
--sidebar-ring: #c6ff3a;
--radius: 24px;
}
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 ScrambleShadcnKit() {
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">Scramble</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": "scramble",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Space Grotesk, ui-sans-serif, system-ui, sans-serif",
"font-mono": "Space Mono, ui-monospace, monospace",
"radius": "16px"
},
"light": {
"background": "#160a1f",
"foreground": "#f6effb",
"card": "#221230",
"card-foreground": "#f6effb",
"popover": "#221230",
"popover-foreground": "#f6effb",
"primary": "#c6ff3a",
"primary-foreground": "#160a1f",
"secondary": "#2c1840",
"secondary-foreground": "#f6effb",
"muted": "#2c1840",
"muted-foreground": "#b09cc4",
"accent": "#ff6a4d",
"accent-foreground": "#160a1f",
"destructive": "#ff5a78",
"destructive-foreground": "#160a1f",
"border": "#3a2350",
"input": "#3a2350",
"ring": "#c6ff3a",
"chart-1": "#c6ff3a",
"chart-2": "#ff6a4d",
"chart-3": "#b6ecff",
"chart-4": "#ffb347",
"chart-5": "#ff5a78"
},
"dark": {
"background": "#160a1f",
"foreground": "#f6effb",
"card": "#221230",
"card-foreground": "#f6effb",
"popover": "#221230",
"popover-foreground": "#f6effb",
"primary": "#c6ff3a",
"primary-foreground": "#160a1f",
"secondary": "#2c1840",
"secondary-foreground": "#f6effb",
"muted": "#2c1840",
"muted-foreground": "#b09cc4",
"accent": "#ff6a4d",
"accent-foreground": "#160a1f",
"destructive": "#ff5a78",
"destructive-foreground": "#160a1f",
"border": "#3a2350",
"input": "#3a2350",
"ring": "#c6ff3a",
"chart-1": "#c6ff3a",
"chart-2": "#ff6a4d",
"chart-3": "#b6ecff",
"chart-4": "#ffb347",
"chart-5": "#ff5a78"
}
}
}
# Scramble shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efdb8-7280-7791-b95d-88c0092f1307`
Slug: `scramble`
## Intent
Scramble is a wayfinding interface language built from the moment a dense intersection releases. A corridor moves you along a wall of signs; a scramble crossing fills from four directions at once. Scramble turns that into structure: signals — feeds, ads, routes, alerts — converge from every side and a single horizontal crossing band sorts them into bounded crosswalk lanes, so a glance is enough. You read by colour and number, follow the direction, then move. The ground is a saturated magenta-violet dusk, three highlighter inks do all the signalling, and every surface throws a wet-ground reflection of itself.
## 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": "#160a1f",
"bg_deep": "#0e0614",
"surface": "#221230",
"surface_2": "#2c1840",
"text": "#f6effb",
"muted": "#b09cc4",
"border": "#3a2350",
"accent": "#c6ff3a",
"accent_2": "#ff6a4d",
"accent_3": "#b6ecff",
"on_accent": "#160a1f",
"success": "#c6ff3a",
"warning": "#ffb347",
"error": "#ff5a78",
"info": "#b6ecff"
}
Typography:
{
"base_size": "17px",
"body_font": "Space Grotesk",
"heading_font": "Space Grotesk",
"mono_font": "Space Mono",
"heading_weight": "700",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"line_height": 1.55,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap"
}
## Visual character to preserve
- The crossing band: a full-width horizontal striped marquee in lime, ice and coral lanes, laid like a scramble crosswalk seen from above, running the live signals across the top of every view as structure, not decoration.
- Lane cards: every primary surface carries a crosswalk-striped top edge in its role colour, an oversized numeral you read first, then a Space Mono label; colour is the state, the number is the value.
- The reflection echo: surfaces throw a faint blurred mirrored copy of themselves on the wet ground beneath, recolouring with the surface.
- A warm magenta-violet dusk ground against which lime (go), coral (live) and ice (route) read as three bright highlighter marks; structure comes from glow and the striped edge, never from grey borders.
- Space Grotesk display and body with Space Mono metadata, one headline word carrying a lime colour-pop highlighter mark, never a serif/italic swap.
- One live inset screen per surface — a billboard-within framed on-air, driven by the swappable night-photo hero — plus glowing status lights, transit pills, and role-coloured meters that stand in for any stat row.
## ShadSync visual profile
{
"family": "editorial",
"material": "flat",
"contour": "pebble",
"border": "solid",
"underlay": false,
"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/scramble/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: Keep the ground a warm magenta-violet dusk; let lime, coral and ice glow on it like highlighters.; Lead each surface with one lime primary; keep everything else quiet.; Build structure from glow, the crosswalk-striped edge and hard gutters; mirror surfaces on the wet ground.; Drive the live inset from --hero-image; keep one live screen per view.; Use Space Grotesk for type and Space Mono for metadata; pop one headline word in lime.
- Do not: Default to white or blue-black, or wash the dusk pale, or desaturate the inks to greys.; Add grey borders, nested cards, or a boxed-in pill nav.; Use the SaaS-template hero (eyebrow tag + primary/secondary button pair + three-stat furniture row).; Swap serif/italic in the headline; ship unstyled native form controls.; Let amber or error read as primary — semantic colour stays a small part.
## 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 ScrambleShadcnKit() {
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">Scramble</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": "Responsive lane grid (minmax(0,1fr) + min-width:0) so children shrink instead of overflowing; the crossing band spans full-bleed; contained measure caps on ultra-wide.",
"whitespace": "Generous padding above titles; a calm dark violet zone in the hero for the overlaid headline; meters and lanes breathe.",
"density": "Dense but lane-bounded; the table is a results sheet at 14.5px rows.",
"responsive": "Mobile collapses to one column, hides non-essential nav, drops the form to one column; the hero headline uses clamp() and wraps, never clipping at 390px.",
"breakpoints": {
"mobile": "390px",
"tablet": "720px",
"desktop": "1240px",
"ultrawide": "2560px"
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-agent",
"generatedBy": "katagami-agent",
"author": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "",
"name": "Scramble",
"slug": "scramble"
},
"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": [
"The crossing band: a full-width striped marquee in lime/coral/ice runs the live signals across the top of a view, like a scramble crosswalk seen from above.",
"Every primary surface is a lane card with a crosswalk-striped top edge in its role colour, an oversized numeral read first, then a mono label.",
"A warm magenta-violet dusk ground against which lime (go), coral (live), and ice (route) read as three bright highlighter inks; structure comes from glow and the striped edge, never from grey borders.",
"One live inset screen per view, framed on-air and driven by the swappable night-photo hero; surfaces throw a faint reflection on the wet ground beneath.",
"Space Grotesk for display and body, Space Mono for metadata; one headline word carries a lime colour-pop, never a serif/italic swap."
],
"visualProfile": {
"family": "signage",
"material": "glow-on-dusk",
"contour": "pebble",
"border": "none",
"underlay": true,
"grain": false,
"stickerBadges": false,
"motion": "marquee",
"density": "dense",
"accents": ["lime", "coral", "ice"]
},
"shots": [
{
"id": "crossing-board",
"title": "Crossing control board",
"viewport": "1440x960",
"primitives": ["button","card","badge","tabs","table","separator","tooltip"],
"composition": "A dark violet dashboard: a crossing-band marquee across the top, four lane cards with crosswalk-striped edges, then a results-sheet table with status pills.",
"mustShow": ["crosswalk-striped card top edge","lime primary pill button","status pills (lime/coral/ice)","hairline-divided dense table"],
"avoid": ["grey card borders","white background","two equally-loud buttons","eyebrow tag above title"],
"scene": {
"eyebrow": "SHIBUYA WEST · 23:47 · RAIN",
"headline": "Crossing board",
"description": "Four lanes feeding one intersection. Read each by colour and number; the crossing band keeps the live one loud and the rest quiet on the dusk.",
"primaryAction": "Step into the crossing",
"stats": [
{ "label": "West lane · clear", "value": "82%", "tone": "lime" },
{ "label": "Ad slots · live", "value": "12", "tone": "coral" },
{ "label": "Route N→S", "value": "91%", "tone": "ice" },
{ "label": "Dwell · avg", "value": "38s", "tone": "lime" }
],
"rows": [
{ "label": "West scramble", "value": "1,840", "status": "crossing" },
{ "label": "North approach", "value": "612", "status": "queued" },
{ "label": "East ad slot", "value": "9", "status": "live" },
{ "label": "South approach", "value": "430", "status": "queued" }
],
"statuses": ["crossing","live","queued","idle"]
}
},
{
"id": "book-a-corner",
"title": "Book a corner",
"viewport": "1024x900",
"primitives": ["input","textarea","select","checkbox","switch","slider","button","card"],
"composition": "A booking slip card on the dusk: mono labels over borderless inputs that light a lime caret on focus, a custom-chevron select, a checkbox, a switch, and a content-sized lime submit pill.",
"mustShow": ["borderless input with inset ring","lime focus ring","lime-checked checkbox","lime switch","content-sized submit button"],
"avoid": ["native browser controls","full-width stretched submit","grey borders"],
"scene": {
"eyebrow": "BOOK A CORNER",
"headline": "Light a slot at the crossing",
"description": "Forms read like a booking slip: mono labels, inputs that fill quietly until focus lights the lime caret line, one lime button to confirm.",
"primaryAction": "Book the corner",
"fields": [
{ "label": "Corner name", "value": "West scramble", "type": "text" },
{ "label": "Lane", "value": "West — clear to cross", "type": "select" },
{ "label": "Release time", "value": "23:47", "type": "text" },
{ "label": "Signal hue", "value": "Lime — go", "type": "select" },
{ "label": "Auto-refresh the inset", "value": "on", "type": "checkbox" },
{ "label": "Live on the board", "value": "on", "type": "switch" }
]
}
},
{
"id": "live-inset",
"title": "Live crossing inset",
"viewport": "1440x900",
"primitives": ["card","badge","slider","dialog","sheet","dropdown-menu","tooltip","separator"],
"composition": "A live inset screen framed on-air over the night-photo hero, with meter sliders below in the role inks and a reflection echo on the wet ground.",
"mustShow": ["ON AIR coral badge","night-photo inset driven by --hero-image","role-coloured meters","reflection echo beneath the surface"],
"avoid": ["lazy gradient scrim","grey borders","muted desaturated accents"],
"scene": {
"eyebrow": "ONE LIVE INSET PER SURFACE",
"headline": "A board that refreshes like the street",
"description": "Each surface carries one live screen-within, framed on-air and driven by the swappable night-photo hero; the wet ground reflects the lights below.",
"primaryAction": "Go live now",
"stats": [
{ "label": "Foot traffic", "value": "82%", "tone": "lime" },
{ "label": "Ad slots live", "value": "58%", "tone": "coral" },
{ "label": "Route clear", "value": "91%", "tone": "ice" }
],
"rows": [
{ "label": "West crossing", "value": "1,840 crossing", "status": "live" },
{ "label": "Next release", "value": "00:12", "status": "queued" }
],
"statuses": ["live","queued"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Lime pill primary = the lane clear to cross; coral pill = live action; quiet violet and ghost for the rest. One height, mono label, never two equally-loud buttons." },
{ "primitive": "card", "intent": "Dusk surface, 16px radius, no border; crosswalk-striped top edge in the role colour, oversized numeral read first." },
{ "primitive": "input", "intent": "Borderless dusk fill with an inset hairline ring; focus swaps to a 2px lime ring (the caret line)." },
{ "primitive": "textarea", "intent": "Same as input, taller; muted violet placeholder, lime focus ring." },
{ "primitive": "select", "intent": "Dusk fill with a custom lime-muted chevron SVG; never the native control." },
{ "primitive": "dialog", "intent": "Dusk popover surface, 16px radius, soft shadow, no border; over a plain dusk scrim, never a lazy gradient." },
{ "primitive": "sheet", "intent": "Slides from the edge over a dusk scrim; surface matches the card, no border." },
{ "primitive": "tabs", "intent": "Pill tabs on the dusk: active is a lime pill, inactive a muted dusk pill; no underline, no boxed bar." },
{ "primitive": "badge", "intent": "Mono uppercase pill; lime=go, coral=live, ice=route/cool, surface=idle. Fill carries the state, no outline." },
{ "primitive": "separator", "intent": "A single hairline in the violet border colour; used only between dense table rows, never to box a surface." },
{ "primitive": "checkbox", "intent": "20px rounded square, dusk fill, lime when checked with a dusk tick." },
{ "primitive": "switch", "intent": "46x26 pill; track violet surface, thumb muted; checked track lime, thumb dusk." },
{ "primitive": "slider", "intent": "The meter: rounded-full track on violet, fill in the role ink — length is the reading, hue is the state; lime glowing thumb." },
{ "primitive": "tooltip", "intent": "Small mono dusk chip with a lime left tick; concise metadata, never a paragraph." },
{ "primitive": "dropdown-menu", "intent": "Dusk surface, 16px radius, no border; the active item carries a lime tick on its left edge." },
{ "primitive": "table", "intent": "The results sheet: dense 14.5px rows divided by hairlines, mono muted header, status as a pill, numbers right-aligned in mono. No cell borders." }
],
"qualityRules": {
"do": [
"Keep the ground a warm magenta-violet dusk; let lime, coral and ice glow on it like highlighters.",
"Lead each surface with one lime primary; keep everything else quiet.",
"Build structure from glow, the crosswalk-striped edge and hard gutters.",
"Drive the live inset from --hero-image; keep one live screen per view.",
"Use Space Grotesk for type and Space Mono for metadata; pop one headline word in lime."
],
"dont": [
"Never default to white or blue-black; never wash the dusk pale.",
"No grey borders, no boxed-in nav, no nested cards.",
"No SaaS-template hero: no eyebrow tag, no primary+secondary pair, no three-stat furniture row.",
"No serif/italic headline swap; no native unstyled form controls.",
"Never desaturate the inks to tasteful greys; amber stays a small part, never primary."
]
}
}