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.
A circulating media catalog, not a dashboard: a horizontally-scanning shelf of upright disk-spine cards anchors the page; below it an index drawer on the left pairs with a wide reading pane on the right; a lending-card date table and one-line phosphor terminal lines carry circulation. The masthead nav sits openly across the header. Never three equal cards, never nested cards.
Hierarchy comes from spine scale, ink weight, status-LED state, and type roles: Oswald condensed uppercase for identity and headings, IBM Plex Sans for body, IBM Plex Mono for index codes and terminal lines. Red stays a quiet overdue tick only.
Tight 4-12px clusters inside a spine or card against broad 48-112px air between major areas — a packed crate with calm space around it.
Disk-spine cards filed on edge with a clip-path write-protect notch, hole-punch dot, vertical Oswald label, index code, and a status LED (mint shelved / amber held / red overdue); a lending-card date table in the pocket; one-line phosphor terminal commands; the featured disk's oxide-amber magnetic stripe; a horizontally-scanning shelf you browse by edge.
Scan across, not down: the primary plane is a horizontal shelf of equal-width spines using minmax(0,1fr)/min-width:0; below it a 260px index drawer pairs with a fluid reading pane. Dashboard uses a 240px spine-drawer sidebar plus a fluid main with a 4-up KPI row.
Broad outer rhythm of 48-112px between major areas with tight 4-12px clusters inside spines and cards.
Medium-high information density held legible by quiet toner air, so codes, LEDs, and terminal fragments feel filed rather than crammed.
Keep the spine shelf first; it scrolls horizontally on every width. Stack to one column on mobile, hide non-essential nav links and section notes, and never overflow horizontally; only the full-bleed hero spans 100vw on ultra-wide.
toner-press
Photocopied ink-and-screentone printed as a reversed negative: pale cream linework and halftone on a dark warm-graphite toner ground, with the single saturated channel held for the ferric-oxide amber magnetic coating. Subjects are shared-machine media filed and catalogued.
One full-bleed hero of a crate of disks on edge; feature vignettes of single volumes with a circled index and one oxide-amber detail; keep cream margins only where a real shelf would breathe.
# Oxide ## Philosophy Oxide treats software like a computer club's shared floppies: the library is a crate of disks filed on edge, every volume stood on its spine, checked out by name, written back, and logged. The machine's memory is something you borrow and return — a room object maintained together, never an abstract dashboard. The ground is the dark interior of the disk box, the one saturated channel is ferric-oxide amber: the magnetic coating that is the stored memory. ### Values - Make the machine's social memory the whole interface: who has a volume, what was left, what is still out on loan. - Scan across spines, not down a page — the catalog is a crate browsed by edge, notch, and index code. - Hierarchy comes from spine scale, ink weight, status LEDs, and a Western catalog type voice, not decorative spectacle. - Restraint as warmth: a dark toner ground, pale label ink, one oxide-amber highlighter, and red only for a quiet overdue tick. - Favor shared-machine rituals and low-stakes club computing — check out, verify, write back, shelve — over lone-genius hacker theatre. - Let circulation ephemera structure the interface: lending cards, write-protect notches, hole-punches, tape backups, and one-line terminal whispers. ### Anti-Values - No cream manga-panel diagram sheet; Oxide is the dark disk-box, the spine shelf, the circulation card — not a notebook page restyled. - No green matrix rain, neon cyberpunk, military HUDs, chrome, glassmorphism, or synthetic hacker dashboards. - No SaaS card grids, evenly repeated feature tiles, nested cards, or a nav trapped in a pill bar. - No colour beyond the three accents and a small semantic set; status LEDs and badges must mean something, never decoration. ### Visual Character - Dark warm-graphite toner ground (a reversed photocopy of a club notebook) with pale label-cream ink and a faint blue-gray magnetic grid. - Disk-spine cards filed on edge with a real write-protect notch cut by clip-path, an index code, a hole-punch dot, a vertical Oswald label, and a status LED. - Status LEDs as small squares: phosphor mint shelved, oxide amber held, red overdue — the whole circulating state legible across a shelf. - Lending-card date tables in the pocket and one-line phosphor terminal commands carry circulation; the featured disk shows the oxide-amber magnetic stripe. - Open masthead nav across the header, surfaces separated by space and inset rings rather than borders, geometry limited to radii of 0 / 16px / 9999px. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#1B1A24` | | surface | `#26242F` | | surface_2 | `#302D3A` | | text | `#EDE6D6` | | muted | `#9A93A0` | | border | `#3E3A48` | | accent | `#E8915C` | | on_accent | `#1B1A24` | | accent_2 | `#79C7A8` | | accent_3 | `#6E8BB5` | | success | `#79C7A8` | | warning | `#E8B85C` | | error | `#D9594C` | | info | `#6E8BB5` | ### Typography - **Base Size**: 17px - **Body Font**: IBM Plex Sans - **Heading Font**: Oswald - **Mono Font**: IBM Plex Mono - **Heading Weight**: 600 - **Heading Transform**: uppercase - **Letter Spacing**: -0.01em - **Display Letter Spacing**: -0.01em - **Line Height**: 1.55 - **Scale Ratio**: 1.25 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0 - **Lg**: 16px - **Full**: 9999px ### Shadows - **Sm**: 0 1px 0 rgba(0,0,0,0.3) - **Md**: 0 6px 18px rgba(0,0,0,0.35) - **Ring**: inset 0 0 0 2px var(--border) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,88,112] ### Surfaces - **Bg Pattern**: Dark warm-graphite toner ground with a faint blue-gray magnetic grid at 120px and light toner speckle; the reversed-photocopy interior of a disk box. - **Card Style**: Flat matte panels on the toner ground, radius 16px, no border, separated by space and an optional inset 2px ring; never nested. - **Treatment**: Dark ABS disk-shell surfaces and pale label ink; spine cards carry a clip-path write-protect notch, a hole-punch, and a status LED. ### Borders - **Default Width**: 0 - **Accent Width**: 2px - **Style**: no decorative borders; hierarchy from surface and space; hairline 1px var(--border) only for data rules, 2px var(--text) for a masthead rule - **Character**: Borderless surfaces; structure comes from ground separation and inset rings; never a single coloured accent edge on a card. ### Motion - **Duration**: 180ms - **Easing**: steps(2, end) - **Philosophy**: Motion reads like a disk seating into a drive or an LED flicking on — a short step, never glossy or cinematic. The fully-rendered settled state is the no-JS default; reveals layer on top and respect prefers-reduced-motion. ## Rules ### Composition A circulating media catalog, not a dashboard: a horizontally-scanning shelf of upright disk-spine cards anchors the page; below it an index drawer on the left pairs with a wide reading pane on the right; a lending-card date table and one-line phosphor terminal lines carry circulation. The masthead nav sits openly across the header. Never three equal cards, never nested cards. ### Hierarchy Hierarchy comes from spine scale, ink weight, status-LED state, and type roles: Oswald condensed uppercase for identity and headings, IBM Plex Sans for body, IBM Plex Mono for index codes and terminal lines. Red stays a quiet overdue tick only. ### Density Tight 4-12px clusters inside a spine or card against broad 48-112px air between major areas — a packed crate with calm space around it. ### Signature Disk-spine cards filed on edge with a clip-path write-protect notch, hole-punch dot, vertical Oswald label, index code, and a status LED (mint shelved / amber held / red overdue); a lending-card date table in the pocket; one-line phosphor terminal commands; the featured disk's oxide-amber magnetic stripe; a horizontally-scanning shelf you browse by edge. ## Layout ### Grid Scan across, not down: the primary plane is a horizontal shelf of equal-width spines using minmax(0,1fr)/min-width:0; below it a 260px index drawer pairs with a fluid reading pane. Dashboard uses a 240px spine-drawer sidebar plus a fluid main with a 4-up KPI row. ### Whitespace Broad outer rhythm of 48-112px between major areas with tight 4-12px clusters inside spines and cards. ### Density Medium-high information density held legible by quiet toner air, so codes, LEDs, and terminal fragments feel filed rather than crammed. ### Responsive Keep the spine shelf first; it scrolls horizontally on every width. Stack to one column on mobile, hide non-essential nav links and section notes, and never overflow horizontally; only the full-bleed hero spans 100vw on ultra-wide. ### Breakpoints - **Mobile**: <= 640px - **Tablet**: 641px - 1000px - **Desktop**: >= 1001px ## Guidance ### Do - Browse the catalog as a crate of disks on edge: each spine carries an index code, a hole-punch, a write-protect notch, and a status LED. - Use oxide amber as the one highlighter for the primary action and the held state; phosphor mint for active/verified; disk-shell blue for index and info. - Carry circulation in lending-card date tables and one-line terminal whispers; keep red to a quiet overdue tick. - Separate surfaces with space and inset rings, not borders; keep the nav open across the header. - Hold geometry to radii of 0 / 16px / 9999px and body text to 17px+ on the dark toner ground. ### Don't - Don't restyle a cream manga-panel notebook page — Oxide is the dark disk-box and the spine shelf. - Don't add colour beyond the three accents and the small semantic set, or let LEDs and badges become decoration without state. - Don't nest cards, box the nav in a pill, or hang a single coloured accent edge on a card. - Don't turn the terminal into a code waterfall or use neon, matrix, HUD, or chrome theatrics. ### Accessibility Maintain WCAG AA contrast for all core text on the dark toner ground (pale label ink on graphite), never rely on LED colour alone for state — pair it with a text badge — keep body text at 17px+, and preserve visible oxide-amber focus rings on every control. ## Imagery Direction ### Pairs With toner-press ### Summary Photocopied ink-and-screentone printed as a reversed negative: pale cream linework and halftone on a dark warm-graphite toner ground, with the single saturated channel held for the ferric-oxide amber magnetic coating. Subjects are shared-machine media filed and catalogued. ### Subjects - a crate of floppy disks filed upright on edge - an open-reel tape with exposed oxide coating - a lending-card pocket and date stamp - a disk drive seating a 3.5-inch floppy - a labelled storage box of catalogued volumes ### Usage One full-bleed hero of a crate of disks on edge; feature vignettes of single volumes with a circled index and one oxide-amber detail; keep cream margins only where a real shelf would breathe.
---
version: "alpha"
name: "Oxide"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#1B1A24"
surface: "#26242F"
surface_2: "#302D3A"
text: "#EDE6D6"
muted: "#9A93A0"
border: "#3E3A48"
accent: "#E8915C"
on_accent: "#1B1A24"
accent_2: "#79C7A8"
accent_3: "#6E8BB5"
success: "#79C7A8"
warning: "#E8B85C"
error: "#D9594C"
info: "#6E8BB5"
typography:
headline-lg:
fontFamily: "Oswald"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Oswald"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.01em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
lg: "16px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "88px"
step-9: "112px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
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"
---
# Oxide
## Overview
Oxide treats software like a computer club's shared floppies: the library is a crate of disks filed on edge, every volume stood on its spine, checked out by name, written back, and logged. The machine's memory is something you borrow and return — a room object maintained together, never an abstract dashboard. The ground is the dark interior of the disk box, the one saturated channel is ferric-oxide amber: the magnetic coating that is the stored memory.
### Values
- Make the machine's social memory the whole interface: who has a volume, what was left, what is still out on loan.
- Scan across spines, not down a page — the catalog is a crate browsed by edge, notch, and index code.
- Hierarchy comes from spine scale, ink weight, status LEDs, and a Western catalog type voice, not decorative spectacle.
- Restraint as warmth: a dark toner ground, pale label ink, one oxide-amber highlighter, and red only for a quiet overdue tick.
- Favor shared-machine rituals and low-stakes club computing — check out, verify, write back, shelve — over lone-genius hacker theatre.
- Let circulation ephemera structure the interface: lending cards, write-protect notches, hole-punches, tape backups, and one-line terminal whispers.
### Anti-Values
- No cream manga-panel diagram sheet; Oxide is the dark disk-box, the spine shelf, the circulation card — not a notebook page restyled.
- No green matrix rain, neon cyberpunk, military HUDs, chrome, glassmorphism, or synthetic hacker dashboards.
- No SaaS card grids, evenly repeated feature tiles, nested cards, or a nav trapped in a pill bar.
- No colour beyond the three accents and a small semantic set; status LEDs and badges must mean something, never decoration.
### Visual Character
- Dark warm-graphite toner ground (a reversed photocopy of a club notebook) with pale label-cream ink and a faint blue-gray magnetic grid.
- Disk-spine cards filed on edge with a real write-protect notch cut by clip-path, an index code, a hole-punch dot, a vertical Oswald label, and a status LED.
- Status LEDs as small squares: phosphor mint shelved, oxide amber held, red overdue — the whole circulating state legible across a shelf.
- Lending-card date tables in the pocket and one-line phosphor terminal commands carry circulation; the featured disk shows the oxide-amber magnetic stripe.
- Open masthead nav across the header, surfaces separated by space and inset rings rather than borders, geometry limited to radii of 0 / 16px / 9999px.
## 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 | `#1B1A24` |
| surface | `#26242F` |
| surface_2 | `#302D3A` |
| text | `#EDE6D6` |
| muted | `#9A93A0` |
| border | `#3E3A48` |
| accent | `#E8915C` |
| on_accent | `#1B1A24` |
| accent_2 | `#79C7A8` |
| accent_3 | `#6E8BB5` |
| success | `#79C7A8` |
| warning | `#E8B85C` |
| error | `#D9594C` |
| info | `#6E8BB5` |
## Typography
- **Headline-Lg**: Oswald, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Oswald, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.55.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `88px`
- **Step-9**: `112px`
### Grid
Scan across, not down: the primary plane is a horizontal shelf of equal-width spines using minmax(0,1fr)/min-width:0; below it a 260px index drawer pairs with a fluid reading pane. Dashboard uses a 240px spine-drawer sidebar plus a fluid main with a 4-up KPI row.
### Whitespace
Broad outer rhythm of 48-112px between major areas with tight 4-12px clusters inside spines and cards.
### Density
Medium-high information density held legible by quiet toner air, so codes, LEDs, and terminal fragments feel filed rather than crammed.
### Responsive
Keep the spine shelf first; it scrolls horizontally on every width. Stack to one column on mobile, hide non-essential nav links and section notes, and never overflow horizontally; only the full-bleed hero spans 100vw on ultra-wide.
### Breakpoints
- **Mobile**: <= 640px
- **Tablet**: 641px - 1000px
- **Desktop**: >= 1001px
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(0,0,0,0.3)
- **Md**: 0 6px 18px rgba(0,0,0,0.35)
- **Ring**: inset 0 0 0 2px var(--border)
## Shapes
### Rounded
- **None**: `0px`
- **Lg**: `16px`
- **Full**: `9999px`
### Surfaces
- **Bg Pattern**: Dark warm-graphite toner ground with a faint blue-gray magnetic grid at 120px and light toner speckle; the reversed-photocopy interior of a disk box.
- **Card Style**: Flat matte panels on the toner ground, radius 16px, no border, separated by space and an optional inset 2px ring; never nested.
- **Treatment**: Dark ABS disk-shell surfaces and pale label ink; spine cards carry a clip-path write-protect notch, a hole-punch, and a status LED.
### Borders
- **Default Width**: 0
- **Accent Width**: 2px
- **Style**: no decorative borders; hierarchy from surface and space; hairline 1px var(--border) only for data rules, 2px var(--text) for a masthead rule
- **Character**: Borderless surfaces; structure comes from ground separation and inset rings; never a single coloured accent edge on a card.
## Components
### Composition
A circulating media catalog, not a dashboard: a horizontally-scanning shelf of upright disk-spine cards anchors the page; below it an index drawer on the left pairs with a wide reading pane on the right; a lending-card date table and one-line phosphor terminal lines carry circulation. The masthead nav sits openly across the header. Never three equal cards, never nested cards.
### Hierarchy
Hierarchy comes from spine scale, ink weight, status-LED state, and type roles: Oswald condensed uppercase for identity and headings, IBM Plex Sans for body, IBM Plex Mono for index codes and terminal lines. Red stays a quiet overdue tick only.
### Density
Tight 4-12px clusters inside a spine or card against broad 48-112px air between major areas — a packed crate with calm space around it.
### Signature
Disk-spine cards filed on edge with a clip-path write-protect notch, hole-punch dot, vertical Oswald label, index code, and a status LED (mint shelved / amber held / red overdue); a lending-card date table in the pocket; one-line phosphor terminal commands; the featured disk's oxide-amber magnetic stripe; a horizontally-scanning shelf you browse by edge.
## 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-019ef8c7-da2e-7a21-9561-83956611e887/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 Browse the catalog as a crate of disks on edge: each spine carries an index code, a hole-punch, a write-protect notch, and a status LED.
- Do Use oxide amber as the one highlighter for the primary action and the held state; phosphor mint for active/verified; disk-shell blue for index and info.
- Do Carry circulation in lending-card date tables and one-line terminal whispers; keep red to a quiet overdue tick.
- Do Separate surfaces with space and inset rings, not borders; keep the nav open across the header.
- Do Hold geometry to radii of 0 / 16px / 9999px and body text to 17px+ on the dark toner ground.
- Don't Don't restyle a cream manga-panel notebook page — Oxide is the dark disk-box and the spine shelf.
- Don't Don't add colour beyond the three accents and the small semantic set, or let LEDs and badges become decoration without state.
- Don't Don't nest cards, box the nav in a pill, or hang a single coloured accent edge on a card.
- Don't Don't turn the terminal into a code waterfall or use neon, matrix, HUD, or chrome theatrics.
### Accessibility
Maintain WCAG AA contrast for all core text on the dark toner ground (pale label ink on graphite), never rely on LED colour alone for state — pair it with a text badge — keep body text at 17px+, and preserve visible oxide-amber focus rings on every control.
## Imagery Direction
### Pairs With
toner-press
### Summary
Photocopied ink-and-screentone printed as a reversed negative: pale cream linework and halftone on a dark warm-graphite toner ground, with the single saturated channel held for the ferric-oxide amber magnetic coating. Subjects are shared-machine media filed and catalogued.
### Subjects
- a crate of floppy disks filed upright on edge
- an open-reel tape with exposed oxide coating
- a lending-card pocket and date stamp
- a disk drive seating a 3.5-inch floppy
- a labelled storage box of catalogued volumes
### Usage
One full-bleed hero of a crate of disks on edge; feature vignettes of single volumes with a circled index and one oxide-amber detail; keep cream margins only where a real shelf would breathe.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "oxide",
"type": "registry:theme",
"title": "Oxide shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#1B1A24",
"foreground": "#EDE6D6",
"card": "#26242F",
"card-foreground": "#EDE6D6",
"popover": "#26242F",
"popover-foreground": "#EDE6D6",
"primary": "#EDE6D6",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#9A93A0",
"muted-foreground": "#EDE6D6",
"accent": "#E8915C",
"accent-foreground": "#ffffff",
"destructive": "#D9594C",
"border": "#3E3A48",
"input": "#3E3A48",
"ring": "#E8915C",
"chart-1": "#EDE6D6",
"chart-2": "#f4f4f5",
"chart-3": "#E8915C",
"chart-4": "#79C7A8",
"chart-5": "#E8B85C",
"sidebar": "#26242F",
"sidebar-foreground": "#EDE6D6",
"sidebar-primary": "#EDE6D6",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#6E8BB5",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#3E3A48",
"sidebar-ring": "#E8915C",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#EDE6D6",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#E8915C",
"accent-foreground": "#ffffff",
"destructive": "#D9594C",
"border": "#303642",
"input": "#303642",
"ring": "#E8915C",
"chart-1": "#EDE6D6",
"chart-2": "#f4f4f5",
"chart-3": "#E8915C",
"chart-4": "#79C7A8",
"chart-5": "#E8B85C",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#EDE6D6",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#E8915C",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#E8915C",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef8c7-da2e-7a21-9561-83956611e887",
"slug": "oxide",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"display_letter_spacing",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"none"
],
"shadows": [
"md",
"ring",
"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 Oxideand 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: #1B1A24;
--foreground: #EDE6D6;
--card: #26242F;
--card-foreground: #EDE6D6;
--popover: #26242F;
--popover-foreground: #EDE6D6;
--primary: #EDE6D6;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #9A93A0;
--muted-foreground: #EDE6D6;
--accent: #E8915C;
--accent-foreground: #ffffff;
--destructive: #D9594C;
--border: #3E3A48;
--input: #3E3A48;
--ring: #E8915C;
--chart-1: #EDE6D6;
--chart-2: #f4f4f5;
--chart-3: #E8915C;
--chart-4: #79C7A8;
--chart-5: #E8B85C;
--sidebar: #26242F;
--sidebar-foreground: #EDE6D6;
--sidebar-primary: #EDE6D6;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #6E8BB5;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #3E3A48;
--sidebar-ring: #E8915C;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #EDE6D6;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #E8915C;
--accent-foreground: #ffffff;
--destructive: #D9594C;
--border: #303642;
--input: #303642;
--ring: #E8915C;
--chart-1: #EDE6D6;
--chart-2: #f4f4f5;
--chart-3: #E8915C;
--chart-4: #79C7A8;
--chart-5: #E8B85C;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #EDE6D6;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #E8915C;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #E8915C;
--radius: 16px;
}
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 OxideShadcnKit() {
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">Oxide</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": "oxide",
"type": "registry:theme",
"author": "katagami-agent",
"visualProfile": {
"mode": "dark",
"ground": "deep warm graphite toner (#1B1A24), a reversed-photocopy disk-box interior",
"material": "flat matte surfaces lifted by ground separation and inset 2px rings; never borders, never nested cards",
"radius": "16px on containers, 9999px on pills/controls, 0 on data rules — no in-between radii",
"accentUse": "oxide amber primary like a highlighter; phosphor mint for active/verified; disk-shell blue for index/info; red semantic-only",
"typography": "Oswald condensed uppercase headings, IBM Plex Sans body, IBM Plex Mono for codes/terminal",
"signature": "disk-spine cards with write-protect notch, status LEDs, lending-card tables, phosphor terminal lines",
"shadow": "minimal; flat offset only where a disk edge would cast"
},
"cssVars": {
"theme": {
"font-sans": "IBM Plex Sans, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"font-heading": "Oswald, system-ui, sans-serif",
"radius": "16px"
},
"light": {
"background": "#1B1A24",
"foreground": "#EDE6D6",
"card": "#26242F",
"card-foreground": "#EDE6D6",
"popover": "#26242F",
"popover-foreground": "#EDE6D6",
"primary": "#E8915C",
"primary-foreground": "#1B1A24",
"secondary": "#302D3A",
"secondary-foreground": "#EDE6D6",
"muted": "#302D3A",
"muted-foreground": "#9A93A0",
"accent": "#79C7A8",
"accent-foreground": "#1B1A24",
"destructive": "#D9594C",
"destructive-foreground": "#EDE6D6",
"border": "#3E3A48",
"input": "#3E3A48",
"ring": "#E8915C",
"chart-1": "#E8915C",
"chart-2": "#79C7A8",
"chart-3": "#6E8BB5",
"chart-4": "#E8B85C",
"chart-5": "#D9594C",
"radius": "16px"
},
"dark": {
"background": "#1B1A24",
"foreground": "#EDE6D6",
"card": "#26242F",
"card-foreground": "#EDE6D6",
"popover": "#26242F",
"popover-foreground": "#EDE6D6",
"primary": "#E8915C",
"primary-foreground": "#1B1A24",
"secondary": "#302D3A",
"secondary-foreground": "#EDE6D6",
"muted": "#302D3A",
"muted-foreground": "#9A93A0",
"accent": "#79C7A8",
"accent-foreground": "#1B1A24",
"destructive": "#D9594C",
"destructive-foreground": "#EDE6D6",
"border": "#3E3A48",
"input": "#3E3A48",
"ring": "#E8915C",
"chart-1": "#E8915C",
"chart-2": "#79C7A8",
"chart-3": "#6E8BB5",
"chart-4": "#E8B85C",
"chart-5": "#D9594C",
"radius": "16px"
}
}
}
# Oxide shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef8c7-da2e-7a21-9561-83956611e887`
Slug: `oxide`
## Intent
Oxide treats software like a computer club's shared floppies: the library is a crate of disks filed on edge, every volume stood on its spine, checked out by name, written back, and logged. The machine's memory is something you borrow and return — a room object maintained together, never an abstract dashboard. The ground is the dark interior of the disk box, the one saturated channel is ferric-oxide amber: the magnetic coating that is the stored memory.
## 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": "#1B1A24",
"surface": "#26242F",
"surface_2": "#302D3A",
"text": "#EDE6D6",
"muted": "#9A93A0",
"border": "#3E3A48",
"accent": "#E8915C",
"on_accent": "#1B1A24",
"accent_2": "#79C7A8",
"accent_3": "#6E8BB5",
"success": "#79C7A8",
"warning": "#E8B85C",
"error": "#D9594C",
"info": "#6E8BB5"
}
Typography:
{
"base_size": "17px",
"body_font": "IBM Plex Sans",
"heading_font": "Oswald",
"mono_font": "IBM Plex Mono",
"heading_weight": "600",
"heading_transform": "uppercase",
"letter_spacing": "-0.01em",
"display_letter_spacing": "-0.01em",
"line_height": 1.55,
"scale_ratio": 1.25,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- Dark warm-graphite toner ground (a reversed photocopy of a club notebook) with pale label-cream ink and a faint blue-gray magnetic grid.
- Disk-spine cards filed on edge with a real write-protect notch cut by clip-path, an index code, a hole-punch dot, a vertical Oswald label, and a status LED.
- Status LEDs as small squares: phosphor mint shelved, oxide amber held, red overdue — the whole circulating state legible across a shelf.
- Lending-card date tables in the pocket and one-line phosphor terminal commands carry circulation; the featured disk shows the oxide-amber magnetic stripe.
- Open masthead nav across the header, surfaces separated by space and inset rings rather than borders, geometry limited to radii of 0 / 16px / 9999px.
## ShadSync visual profile
{
"family": "brutalist",
"material": "ink",
"contour": "default",
"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/oxide/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: Browse the catalog as a crate of disks on edge: each spine carries an index code, a hole-punch, a write-protect notch, and a status LED.; Use oxide amber as the one highlighter for the primary action and the held state; phosphor mint for active/verified; disk-shell blue for index and info.; Carry circulation in lending-card date tables and one-line terminal whispers; keep red to a quiet overdue tick.; Separate surfaces with space and inset rings, not borders; keep the nav open across the header.; Hold geometry to radii of 0 / 16px / 9999px and body text to 17px+ on the dark toner ground.
- Do not: Don't restyle a cream manga-panel notebook page — Oxide is the dark disk-box and the spine shelf.; Don't add colour beyond the three accents and the small semantic set, or let LEDs and badges become decoration without state.; Don't nest cards, box the nav in a pill, or hang a single coloured accent edge on a card.; Don't turn the terminal into a code waterfall or use neon, matrix, HUD, or chrome theatrics.
## 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 OxideShadcnKit() {
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">Oxide</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": "Scan across, not down: the primary plane is a horizontal shelf of equal-width spines using minmax(0,1fr)/min-width:0; below it a 260px index drawer pairs with a fluid reading pane. Dashboard uses a 240px spine-drawer sidebar plus a fluid main with a 4-up KPI row.",
"whitespace": "Broad outer rhythm of 48-112px between major areas with tight 4-12px clusters inside spines and cards.",
"density": "Medium-high information density held legible by quiet toner air, so codes, LEDs, and terminal fragments feel filed rather than crammed.",
"responsive": "Keep the spine shelf first; it scrolls horizontally on every width. Stack to one column on mobile, hide non-essential nav links and section notes, and never overflow horizontally; only the full-bleed hero spans 100vw on ultra-wide.",
"breakpoints": {
"mobile": "<= 640px",
"tablet": "641px - 1000px",
"desktop": ">= 1001px"
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-ui-compatibility-projection",
"generatedBy": "katagami-ui-projection",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "en-019ef8c7-da2e-7a21-9561-83956611e887",
"name": "Oxide",
"slug": "oxide"
},
"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": [
"Dark warm-graphite toner ground (a reversed photocopy of a club notebook) with pale label-cream ink and a faint blue-gray magnetic grid.",
"Disk-spine cards filed on edge with a real write-protect notch cut by clip-path, an index code, a hole-punch dot, a vertical Oswald label, and a status LED.",
"Status LEDs as small squares: phosphor mint shelved, oxide amber held, red overdue — the whole circulating state legible across a shelf.",
"Lending-card date tables in the pocket and one-line phosphor terminal commands carry circulation; the featured disk shows the oxide-amber magnetic stripe.",
"Open masthead nav across the header, surfaces separated by space and inset rings rather than borders, geometry limited to radii of 0 / 16px / 9999px."
],
"visualProfile": {
"family": "brutalist",
"material": "ink",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": false,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Oxide launch room",
"description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
"primaryAction": "Apply theme",
"secondaryAction": "Review states",
"stats": [
{
"label": "components",
"value": "16",
"tone": "accent"
},
{
"label": "states",
"value": "ready"
},
{
"label": "density",
"value": "balanced",
"tone": "warning"
}
],
"rows": [
{
"label": "Primary flow",
"value": "mapped",
"status": "active"
},
{
"label": "Token coverage",
"value": "semantic",
"status": "synced"
},
{
"label": "Responsive proof",
"value": "queued",
"status": "review"
}
],
"statuses": [
"Active",
"Synced",
"Draft"
]
}
},
{
"id": "detail-editor",
"title": "Detail editor",
"viewport": "tablet",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"sheet"
],
"composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
"mustShow": [
"focus ring",
"error or destructive state",
"dialog or sheet treatment",
"written guidance content"
],
"avoid": [
"unstyled browser controls",
"floating cards inside cards",
"missing labels"
],
"scene": {
"eyebrow": "editing flow",
"headline": "Language recipe editor",
"description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
"primaryAction": "Save recipe",
"secondaryAction": "Open sheet",
"fields": [
{
"label": "Component family",
"value": "Narrative cards"
},
{
"label": "State treatment",
"value": "Visible focus + validation"
},
{
"label": "Motion",
"value": "Small lift, no opacity-only fade"
}
],
"statuses": [
"Focus",
"Invalid",
"Confirmed"
]
}
},
{
"id": "data-operations",
"title": "Data operations",
"viewport": "mobile",
"primitives": [
"button",
"tabs",
"badge",
"dropdown-menu",
"table",
"tooltip",
"separator"
],
"composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
"mustShow": [
"responsive reflow",
"dense row styling",
"menu affordance",
"status badge system"
],
"avoid": [
"desktop-only tables",
"text overflow",
"default shadcn spacing without Katagami character"
],
"scene": {
"eyebrow": "operations",
"headline": "Compact review queue",
"description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
"primaryAction": "Resolve",
"secondaryAction": "Filter",
"rows": [
{
"label": "Button hierarchy",
"value": "approved",
"status": "ok"
},
{
"label": "Table rhythm",
"value": "needs pass",
"status": "watch"
},
{
"label": "Empty state",
"value": "designed",
"status": "done"
}
],
"statuses": [
"Queued",
"Blocked",
"Done"
]
}
}
],
"componentRecipes": [
{
"primitive": "button",
"intent": "Prove action hierarchy, focus, disabled, and destructive states."
},
{
"primitive": "card",
"intent": "Carry the language surface, border, elevation, and density rules."
},
{
"primitive": "input",
"intent": "Show labels, focus rings, validation, and spacing rhythm."
},
{
"primitive": "textarea",
"intent": "Show longer guidance, validation copy, and writing density."
},
{
"primitive": "select",
"intent": "Show filtering, selection contrast, and menu trigger styling."
},
{
"primitive": "dialog",
"intent": "Show centered decision states and overlay treatment."
},
{
"primitive": "sheet",
"intent": "Show contextual side panels and responsive editing."
},
{
"primitive": "tabs",
"intent": "Show navigational structure and active/inactive contrast."
},
{
"primitive": "badge",
"intent": "Show compact status vocabulary and semantic colors."
},
{
"primitive": "separator",
"intent": "Show section rhythm without generic gray dividers."
},
{
"primitive": "checkbox",
"intent": "Show binary selection with visible focus and checked states."
},
{
"primitive": "switch",
"intent": "Show settings toggles and on/off contrast."
},
{
"primitive": "slider",
"intent": "Show numeric adjustment with track/thumb styling."
},
{
"primitive": "tooltip",
"intent": "Show concise explanation styling above compact controls."
},
{
"primitive": "dropdown-menu",
"intent": "Show action menus, destructive items, and grouped choices."
},
{
"primitive": "table",
"intent": "Show dense operational data, separators, row states, and responsive behavior."
}
],
"qualityRules": {
"do": [
"Browse the catalog as a crate of disks on edge: each spine carries an index code, a hole-punch, a write-protect notch, and a status LED.",
"Use oxide amber as the one highlighter for the primary action and the held state; phosphor mint for active/verified; disk-shell blue for index and info.",
"Carry circulation in lending-card date tables and one-line terminal whispers; keep red to a quiet overdue tick.",
"Separate surfaces with space and inset rings, not borders; keep the nav open across the header.",
"Hold geometry to radii of 0 / 16px / 9999px and body text to 17px+ on the dark toner ground."
],
"dont": [
"Don't restyle a cream manga-panel notebook page — Oxide is the dark disk-box and the spine shelf.",
"Don't add colour beyond the three accents and the small semantic set, or let LEDs and badges become decoration without state.",
"Don't nest cards, box the nav in a pill, or hang a single coloured accent edge on a card.",
"Don't turn the terminal into a code waterfall or use neon, matrix, HUD, or chrome theatrics."
]
}
}