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 clubroom diagram sheet, not a dashboard: a dominant 7-span manga panel anchors the page, a 5-span rail of dense notes sits beside it, a full-width printer-test strip crosses the grid, and half/third panels of varied scale follow. Floppy-label tabs sit openly across the header; never three equal cards.
Hierarchy comes from ink weight, panel scale, label placement, and type roles: heavy Gothic display for identity, neat Gothic for labels and body, DotGothic16 for prompts, and blue handwriting for meta-commentary. Red marks remain micro-alerts only.
Alternate dense annotated modules with broad cream pauses; cluster related controls at 4-12px while major page areas separate by 64-112px, like a studied club notebook.
Floppy-disk label tabs (clipped corner + hole-punch dot + slight rotation); blue-ballpoint margin annotations with dashed arrows and circled indices; full-width perforated printer-test strips; notebook-grid underlays; DotGothic16 terminal phosphor chips, one short command each; a dominant manga panel crop with a seating chart.
Desktop is a 12-column max-width 1180px page with asymmetric 7/5 and 4/8 panel spans; tablet collapses to 6 columns; mobile becomes one column with preserved floppy tabs and annotation layering. Columns use minmax(0,1fr) and children min-width:0.
Outer margins broad at 48-112px while internal label gaps stay tight at 4-12px, creating the rhythm of a notebook page with crowded notes around calm diagrams.
Medium-high informational density with deliberate quiet cream margins so annotations and terminal fragments feel found rather than crammed.
Keep the dominant clubroom panel first, then the rail, printer strip, archive queue, and notes; fold margin annotations inline on narrow screens; only the full-bleed hero spans 100vw on ultra-wide.
toner-press
Photocopied annotated ink-and-screentone drawings on warm cream paper, with one blue-ballpoint annotation channel, applied to shared-machine and clubroom subjects.
Use the Toner Press technique for the landing hero (full-bleed) and feature vignettes; keep cream paper, halftone screentone, and a single blue annotation; never neon, never anime mascots.
# Diskette Ledger ## Philosophy Diskette Ledger turns shared computing into a warm clubroom diagram: cream paper, photocopied manga panels, floppy-disk label tabs, blue-ballpoint corrections, and tiny terminal jokes make the machine feel like a room object maintained together, not a dashboard. ### Values - Treat the computer as a room object with dust, labels, seating habits, and a social memory rather than as an abstract dashboard. - Make technical hierarchy legible through notebook diagrams, manga panel crops, and practical label typography instead of decorative spectacle. - Keep existential cybernetic ideas small: questions in margins, boot messages, and handwritten corrections that invite reflection without ominous AI theater. - Use restraint as warmth: mostly cream paper, black ink, one blue annotation channel, and red only for tiny correction marks. - Favor low-stakes educational computing, shared-machine rituals, and after-school collaboration over lone-genius hacker mythology. - Let analog ephemera structure the interface: taped floppy tabs, seating charts, printer-test strips, port labels, and DOS/V prompt fragments. ### Anti-Values - No green matrix rain, neon cyberpunk, military HUDs, chrome overload, or synthetic hacker dashboards. - No SaaS card grids, generic analytics views, or evenly repeated feature tiles masquerading as product structure. - No fan-art anime character decoration; manga influence must live in panel rhythm, crop, ink hierarchy, and instructional composition. - No vaporwave rainbow, black-green coding palette, or high-saturation futuristic glow. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#F3EBD8` | | surface | `#FFF9EA` | | text | `#24231F` | | muted | `#777064` | | border | `#1E1D19` | | accent | `#2F5F9A` | | on_accent | `#FFF9EA` | | accent_2 | `#5E7453` | | accent_3 | `#A04438` | | success | `#5E7453` | | warning | `#B08A45` | | error | `#A04438` | | info | `#3B6792` | ### Typography - **Base Size**: 17px - **Body Font**: Zen Kaku Gothic New - **Heading Font**: Zen Kaku Gothic Antique - **Mono Font**: DotGothic16 - **Annotation Font**: Gaegu - **Heading Weight**: 900 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Display Letter Spacing**: -0.04em - **Line Height**: 1.55 - **Scale Ratio**: 1.22 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=DotGothic16&family=Gaegu:wght@400;700&family=Zen+Kaku+Gothic+Antique:wght@500;700;900&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap ### Radii - **None**: 0 - **Full**: 9999px ### Shadows - **Sm**: 0 1px 0 rgba(30,29,25,0.18) - **Md**: 4px 5px 0 rgba(30,29,25,0.10) - **Lg**: 10px 12px 0 rgba(30,29,25,0.08) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,88,112] ### Surfaces - **Bg Pattern**: Cream base with faint blue-gray notebook ruling at 24px intervals; off-white ABS panels carry a second inset photocopy hairline. - **Card Style**: Flat off-white panels with a 1px black ink outline, a 2px inset photocopy hairline, zero radius, and a restrained flat offset paper shadow. - **Treatment**: Warm off-white paper and beige ABS plastic with subtle grain, notebook ruling, gray adhesive label overlays, and light toner speckle. ### Borders - **Default Width**: 1px - **Accent Width**: 2px - **Style**: solid black-ink structural outlines; secondary separators are rgba(30,29,25,0.14) photocopy hairlines - **Character**: Structural ink outlines at high contrast; never grey decorative borders; never a single coloured accent edge on a card. ### Motion - **Duration**: 140ms - **Easing**: steps(2, end) - **Philosophy**: Motion feels like a cursor blink, a paper tab being selected, or a printer advancing one line; never glossy or cinematic. The settled state is the no-JS default; reveals layer on top and respect prefers-reduced-motion. ## Rules ### Composition A clubroom diagram sheet, not a dashboard: a dominant 7-span manga panel anchors the page, a 5-span rail of dense notes sits beside it, a full-width printer-test strip crosses the grid, and half/third panels of varied scale follow. Floppy-label tabs sit openly across the header; never three equal cards. ### Hierarchy Hierarchy comes from ink weight, panel scale, label placement, and type roles: heavy Gothic display for identity, neat Gothic for labels and body, DotGothic16 for prompts, and blue handwriting for meta-commentary. Red marks remain micro-alerts only. ### Density Alternate dense annotated modules with broad cream pauses; cluster related controls at 4-12px while major page areas separate by 64-112px, like a studied club notebook. ### Signature Floppy-disk label tabs (clipped corner + hole-punch dot + slight rotation); blue-ballpoint margin annotations with dashed arrows and circled indices; full-width perforated printer-test strips; notebook-grid underlays; DotGothic16 terminal phosphor chips, one short command each; a dominant manga panel crop with a seating chart. ## Layout ### Grid Desktop is a 12-column max-width 1180px page with asymmetric 7/5 and 4/8 panel spans; tablet collapses to 6 columns; mobile becomes one column with preserved floppy tabs and annotation layering. Columns use minmax(0,1fr) and children min-width:0. ### Whitespace Outer margins broad at 48-112px while internal label gaps stay tight at 4-12px, creating the rhythm of a notebook page with crowded notes around calm diagrams. ### Density Medium-high informational density with deliberate quiet cream margins so annotations and terminal fragments feel found rather than crammed. ### Responsive Keep the dominant clubroom panel first, then the rail, printer strip, archive queue, and notes; fold margin annotations inline on narrow screens; only the full-bleed hero spans 100vw on ultra-wide. ### Breakpoints - **Mobile**: <= 640px - **Tablet**: 641px - 980px - **Desktop**: >= 981px ## Guidance ### Do - Use cream paper, off-white ABS, black manga ink, faded label gray, and one restrained blue annotation channel. - Name interface modules as plausible school computer-club artifacts: seating charts, disk ledgers, cable labels, boot logs, printer strips. - Make manga influence structural: panel crops, gutter rhythm, restrained speed-lines, and instructional diagram hierarchy. - Use terminal fragments as small punchlines or status whispers, no more than one short command per chip. - Give one panel dominance and vary its neighbours by scale, density, and orientation. - Use red only for tiny correction ticks, wrong-disk notes, or a single overdue warning. - Explicitly style every form control with no visible browser defaults; keep body text 17px+ at high contrast. ### Don't - Do not use green matrix rain, neon glows, vaporwave gradients, cyberpunk purple, or black-background hacker theatrics. - Do not draw anime characters or fan-art mascots; the manga reference is page architecture, not illustration fandom. - Do not create three equal cards in a row, generic analytics dashboards, CRM widgets, or SaaS pricing/feature grids. - Do not box the top nav in a floating pill or nest cards; let the nav sit openly across the header. - Do not add decorative colours beyond the blue annotation channel and tiny red correction marks. - Do not let handwritten notes become illegible decoration; every note should clarify, question, or humanize a nearby system detail. ### Accessibility Maintain WCAG AA contrast for all core text on cream, keep blue notes large enough to read, never rely on colour alone for warnings, and preserve visible ink-outline focus states on every control. ## Imagery Direction ### Pairs With toner-press ### Summary Photocopied annotated ink-and-screentone drawings on warm cream paper, with one blue-ballpoint annotation channel, applied to shared-machine and clubroom subjects. ### Subjects - a 1990s school club desktop machine and a stack of labeled floppy diskettes - a clubroom desk with a CRT and desk lamp - a single labeled floppy disk in close panel crop - a seating-chart notebook page ### Usage Use the Toner Press technique for the landing hero (full-bleed) and feature vignettes; keep cream paper, halftone screentone, and a single blue annotation; never neon, never anime mascots.
---
version: "alpha"
name: "Diskette Ledger"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#F3EBD8"
surface: "#FFF9EA"
text: "#24231F"
muted: "#777064"
border: "#1E1D19"
accent: "#2F5F9A"
on_accent: "#FFF9EA"
accent_2: "#5E7453"
accent_3: "#A04438"
success: "#5E7453"
warning: "#B08A45"
error: "#A04438"
info: "#3B6792"
typography:
headline-lg:
fontFamily: "Zen Kaku Gothic Antique"
fontSize: "1.929rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Zen Kaku Gothic Antique"
fontSize: "1.581rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Zen Kaku Gothic New"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "DotGothic16"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
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-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: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
height: "44px"
---
# Diskette Ledger
## Overview
Diskette Ledger turns shared computing into a warm clubroom diagram: cream paper, photocopied manga panels, floppy-disk label tabs, blue-ballpoint corrections, and tiny terminal jokes make the machine feel like a room object maintained together, not a dashboard.
### Values
- Treat the computer as a room object with dust, labels, seating habits, and a social memory rather than as an abstract dashboard.
- Make technical hierarchy legible through notebook diagrams, manga panel crops, and practical label typography instead of decorative spectacle.
- Keep existential cybernetic ideas small: questions in margins, boot messages, and handwritten corrections that invite reflection without ominous AI theater.
- Use restraint as warmth: mostly cream paper, black ink, one blue annotation channel, and red only for tiny correction marks.
- Favor low-stakes educational computing, shared-machine rituals, and after-school collaboration over lone-genius hacker mythology.
- Let analog ephemera structure the interface: taped floppy tabs, seating charts, printer-test strips, port labels, and DOS/V prompt fragments.
### Anti-Values
- No green matrix rain, neon cyberpunk, military HUDs, chrome overload, or synthetic hacker dashboards.
- No SaaS card grids, generic analytics views, or evenly repeated feature tiles masquerading as product structure.
- No fan-art anime character decoration; manga influence must live in panel rhythm, crop, ink hierarchy, and instructional composition.
- No vaporwave rainbow, black-green coding palette, or high-saturation futuristic glow.
## 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 | `#F3EBD8` |
| surface | `#FFF9EA` |
| text | `#24231F` |
| muted | `#777064` |
| border | `#1E1D19` |
| accent | `#2F5F9A` |
| on_accent | `#FFF9EA` |
| accent_2 | `#5E7453` |
| accent_3 | `#A04438` |
| success | `#5E7453` |
| warning | `#B08A45` |
| error | `#A04438` |
| info | `#3B6792` |
## Typography
- **Headline-Lg**: Zen Kaku Gothic Antique, 1.929rem, weight 700, line-height 1.1.
- **Headline-Md**: Zen Kaku Gothic Antique, 1.581rem, weight 600, line-height 1.15.
- **Body-Md**: Zen Kaku Gothic New, 17px, weight 400, line-height 1.55.
- **Label-Md**: DotGothic16, 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
Desktop is a 12-column max-width 1180px page with asymmetric 7/5 and 4/8 panel spans; tablet collapses to 6 columns; mobile becomes one column with preserved floppy tabs and annotation layering. Columns use minmax(0,1fr) and children min-width:0.
### Whitespace
Outer margins broad at 48-112px while internal label gaps stay tight at 4-12px, creating the rhythm of a notebook page with crowded notes around calm diagrams.
### Density
Medium-high informational density with deliberate quiet cream margins so annotations and terminal fragments feel found rather than crammed.
### Responsive
Keep the dominant clubroom panel first, then the rail, printer strip, archive queue, and notes; fold margin annotations inline on narrow screens; only the full-bleed hero spans 100vw on ultra-wide.
### Breakpoints
- **Mobile**: <= 640px
- **Tablet**: 641px - 980px
- **Desktop**: >= 981px
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(30,29,25,0.18)
- **Md**: 4px 5px 0 rgba(30,29,25,0.10)
- **Lg**: 10px 12px 0 rgba(30,29,25,0.08)
## Shapes
### Rounded
- **None**: `0px`
- **Full**: `9999px`
### Surfaces
- **Bg Pattern**: Cream base with faint blue-gray notebook ruling at 24px intervals; off-white ABS panels carry a second inset photocopy hairline.
- **Card Style**: Flat off-white panels with a 1px black ink outline, a 2px inset photocopy hairline, zero radius, and a restrained flat offset paper shadow.
- **Treatment**: Warm off-white paper and beige ABS plastic with subtle grain, notebook ruling, gray adhesive label overlays, and light toner speckle.
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid black-ink structural outlines; secondary separators are rgba(30,29,25,0.14) photocopy hairlines
- **Character**: Structural ink outlines at high contrast; never grey decorative borders; never a single coloured accent edge on a card.
## Components
### Composition
A clubroom diagram sheet, not a dashboard: a dominant 7-span manga panel anchors the page, a 5-span rail of dense notes sits beside it, a full-width printer-test strip crosses the grid, and half/third panels of varied scale follow. Floppy-label tabs sit openly across the header; never three equal cards.
### Hierarchy
Hierarchy comes from ink weight, panel scale, label placement, and type roles: heavy Gothic display for identity, neat Gothic for labels and body, DotGothic16 for prompts, and blue handwriting for meta-commentary. Red marks remain micro-alerts only.
### Density
Alternate dense annotated modules with broad cream pauses; cluster related controls at 4-12px while major page areas separate by 64-112px, like a studied club notebook.
### Signature
Floppy-disk label tabs (clipped corner + hole-punch dot + slight rotation); blue-ballpoint margin annotations with dashed arrows and circled indices; full-width perforated printer-test strips; notebook-grid underlays; DotGothic16 terminal phosphor chips, one short command each; a dominant manga panel crop with a seating chart.
## 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-019ef8b7-ac27-7fc1-b7d6-4f3ace9d3996/DESIGN.with-shadcn.md`.
The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.
Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.
## Do's and Don'ts
- Do Use cream paper, off-white ABS, black manga ink, faded label gray, and one restrained blue annotation channel.
- Do Name interface modules as plausible school computer-club artifacts: seating charts, disk ledgers, cable labels, boot logs, printer strips.
- Do Make manga influence structural: panel crops, gutter rhythm, restrained speed-lines, and instructional diagram hierarchy.
- Do Use terminal fragments as small punchlines or status whispers, no more than one short command per chip.
- Do Give one panel dominance and vary its neighbours by scale, density, and orientation.
- Do Use red only for tiny correction ticks, wrong-disk notes, or a single overdue warning.
- Do Explicitly style every form control with no visible browser defaults; keep body text 17px+ at high contrast.
- Don't Do not use green matrix rain, neon glows, vaporwave gradients, cyberpunk purple, or black-background hacker theatrics.
- Don't Do not draw anime characters or fan-art mascots; the manga reference is page architecture, not illustration fandom.
- Don't Do not create three equal cards in a row, generic analytics dashboards, CRM widgets, or SaaS pricing/feature grids.
- Don't Do not box the top nav in a floating pill or nest cards; let the nav sit openly across the header.
- Don't Do not add decorative colours beyond the blue annotation channel and tiny red correction marks.
- Don't Do not let handwritten notes become illegible decoration; every note should clarify, question, or humanize a nearby system detail.
### Accessibility
Maintain WCAG AA contrast for all core text on cream, keep blue notes large enough to read, never rely on colour alone for warnings, and preserve visible ink-outline focus states on every control.
## Imagery Direction
### Pairs With
toner-press
### Summary
Photocopied annotated ink-and-screentone drawings on warm cream paper, with one blue-ballpoint annotation channel, applied to shared-machine and clubroom subjects.
### Subjects
- a 1990s school club desktop machine and a stack of labeled floppy diskettes
- a clubroom desk with a CRT and desk lamp
- a single labeled floppy disk in close panel crop
- a seating-chart notebook page
### Usage
Use the Toner Press technique for the landing hero (full-bleed) and feature vignettes; keep cream paper, halftone screentone, and a single blue annotation; never neon, never anime mascots.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "diskette-ledger",
"type": "registry:theme",
"title": "Diskette Ledger shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F3EBD8",
"foreground": "#24231F",
"card": "#FFF9EA",
"card-foreground": "#24231F",
"popover": "#FFF9EA",
"popover-foreground": "#24231F",
"primary": "#24231F",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#777064",
"muted-foreground": "#24231F",
"accent": "#2F5F9A",
"accent-foreground": "#ffffff",
"destructive": "#A04438",
"border": "#1E1D19",
"input": "#1E1D19",
"ring": "#2F5F9A",
"chart-1": "#24231F",
"chart-2": "#f4f4f5",
"chart-3": "#2F5F9A",
"chart-4": "#5E7453",
"chart-5": "#B08A45",
"sidebar": "#FFF9EA",
"sidebar-foreground": "#24231F",
"sidebar-primary": "#24231F",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3B6792",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#1E1D19",
"sidebar-ring": "#2F5F9A",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#24231F",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#2F5F9A",
"accent-foreground": "#ffffff",
"destructive": "#A04438",
"border": "#303642",
"input": "#303642",
"ring": "#2F5F9A",
"chart-1": "#24231F",
"chart-2": "#f4f4f5",
"chart-3": "#2F5F9A",
"chart-4": "#5E7453",
"chart-5": "#B08A45",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#24231F",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2F5F9A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#2F5F9A",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef8b7-ac27-7fc1-b7d6-4f3ace9d3996",
"slug": "diskette-ledger",
"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",
"text",
"warning"
],
"typography": [
"annotation_font",
"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",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Diskette Ledgerand 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: #F3EBD8;
--foreground: #24231F;
--card: #FFF9EA;
--card-foreground: #24231F;
--popover: #FFF9EA;
--popover-foreground: #24231F;
--primary: #24231F;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #777064;
--muted-foreground: #24231F;
--accent: #2F5F9A;
--accent-foreground: #ffffff;
--destructive: #A04438;
--border: #1E1D19;
--input: #1E1D19;
--ring: #2F5F9A;
--chart-1: #24231F;
--chart-2: #f4f4f5;
--chart-3: #2F5F9A;
--chart-4: #5E7453;
--chart-5: #B08A45;
--sidebar: #FFF9EA;
--sidebar-foreground: #24231F;
--sidebar-primary: #24231F;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3B6792;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #1E1D19;
--sidebar-ring: #2F5F9A;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #24231F;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #2F5F9A;
--accent-foreground: #ffffff;
--destructive: #A04438;
--border: #303642;
--input: #303642;
--ring: #2F5F9A;
--chart-1: #24231F;
--chart-2: #f4f4f5;
--chart-3: #2F5F9A;
--chart-4: #5E7453;
--chart-5: #B08A45;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #24231F;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2F5F9A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #2F5F9A;
--radius: 0.625rem;
}
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 DisketteLedgerShadcnKit() {
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">Diskette Ledger</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": "diskette-ledger",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Diskette Ledger",
"description": "A photocopied clubroom-diagram theme: warm cream paper, structural black ink, one blue-ballpoint accent and a red correction tick. Flat offset paper shadows, zero radius on panels, full radius on pills and punch-dots.",
"cssVars": {
"theme": {
"font-sans": "Zen Kaku Gothic New, system-ui, sans-serif",
"font-mono": "DotGothic16, ui-monospace, monospace",
"radius": "0px"
},
"light": {
"background": "#F3EBD8",
"foreground": "#24231F",
"card": "#FFF9EA",
"card-foreground": "#24231F",
"popover": "#FFF9EA",
"popover-foreground": "#24231F",
"primary": "#24231F",
"primary-foreground": "#FFF9EA",
"secondary": "#CFC7B8",
"secondary-foreground": "#24231F",
"muted": "#EDE4CF",
"muted-foreground": "#777064",
"accent": "#2F5F9A",
"accent-foreground": "#FFF9EA",
"destructive": "#A04438",
"destructive-foreground": "#FFF9EA",
"border": "#1E1D19",
"input": "#1E1D19",
"ring": "#2F5F9A",
"chart-1": "#2F5F9A",
"chart-2": "#5E7453",
"chart-3": "#B08A45",
"chart-4": "#A04438",
"chart-5": "#3B6792",
"radius": "0px"
},
"dark": {
"background": "#1E1D19",
"foreground": "#F1EEDE",
"card": "#272620",
"card-foreground": "#F1EEDE",
"popover": "#272620",
"popover-foreground": "#F1EEDE",
"primary": "#F1EEDE",
"primary-foreground": "#1E1D19",
"secondary": "#3A382F",
"secondary-foreground": "#F1EEDE",
"muted": "#2E2D26",
"muted-foreground": "#B7B4A4",
"accent": "#8FB0DA",
"accent-foreground": "#1E1D19",
"destructive": "#C66457",
"destructive-foreground": "#1E1D19",
"border": "#3A382F",
"input": "#3A382F",
"ring": "#8FB0DA",
"chart-1": "#8FB0DA",
"chart-2": "#8FA37E",
"chart-3": "#C9A55E",
"chart-4": "#C66457",
"chart-5": "#6E96C2",
"radius": "0px"
}
},
"visualProfile": {
"material": "flat photocopied paper — off-white ABS panels on cream ground, faint blue-gray notebook ruling, light toner speckle",
"borders": "structural 1px black ink outlines; a second inset 1px photocopy hairline at 7px on cards; never grey decorative borders",
"radius": "0px on panels, inputs, and buttons; 9999px only on pills, badges, toggles, avatars, and hole-punch dots",
"shadow": "flat offset paper shadows (e.g. 4px 5px 0 rgba(30,29,25,.10)); never soft blur, never glossy",
"elevation": "panels lift with offset, not blur; modals use a heavier offset (10px 12px 0)",
"accentUsage": "blue carries all interactive accent and annotation; green=ok, amber=needs-attention, red=correction/destructive ticks only",
"typography": "Zen Kaku Gothic Antique (heavy display), Zen Kaku Gothic New (body), DotGothic16 (mono/terminal), Gaegu (handwritten margin notes)",
"motion": "140ms steps(2,end) — cursor-blink / paper-advance, never cinematic easing"
}
}
# Diskette Ledger shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef8b7-ac27-7fc1-b7d6-4f3ace9d3996`
Slug: `diskette-ledger`
## Intent
Diskette Ledger turns shared computing into a warm clubroom diagram: cream paper, photocopied manga panels, floppy-disk label tabs, blue-ballpoint corrections, and tiny terminal jokes make the machine feel like a room object maintained together, not a dashboard.
## 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": "#F3EBD8",
"surface": "#FFF9EA",
"text": "#24231F",
"muted": "#777064",
"border": "#1E1D19",
"accent": "#2F5F9A",
"on_accent": "#FFF9EA",
"accent_2": "#5E7453",
"accent_3": "#A04438",
"success": "#5E7453",
"warning": "#B08A45",
"error": "#A04438",
"info": "#3B6792"
}
Typography:
{
"base_size": "17px",
"body_font": "Zen Kaku Gothic New",
"heading_font": "Zen Kaku Gothic Antique",
"mono_font": "DotGothic16",
"annotation_font": "Gaegu",
"heading_weight": "900",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"display_letter_spacing": "-0.04em",
"line_height": 1.55,
"scale_ratio": 1.22,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=DotGothic16&family=Gaegu:wght@400;700&family=Zen+Kaku+Gothic+Antique:wght@500;700;900&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap"
}
## Visual character to preserve
- Make the source language's structural identity visible in every component state.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"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/diskette-ledger/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Use cream paper, off-white ABS, black manga ink, faded label gray, and one restrained blue annotation channel.; Name interface modules as plausible school computer-club artifacts: seating charts, disk ledgers, cable labels, boot logs, printer strips.; Make manga influence structural: panel crops, gutter rhythm, restrained speed-lines, and instructional diagram hierarchy.; Use terminal fragments as small punchlines or status whispers, no more than one short command per chip.; Give one panel dominance and vary its neighbours by scale, density, and orientation.; Use red only for tiny correction ticks, wrong-disk notes, or a single overdue warning.; Explicitly style every form control with no visible browser defaults; keep body text 17px+ at high contrast.
- Do not: Do not use green matrix rain, neon glows, vaporwave gradients, cyberpunk purple, or black-background hacker theatrics.; Do not draw anime characters or fan-art mascots; the manga reference is page architecture, not illustration fandom.; Do not create three equal cards in a row, generic analytics dashboards, CRM widgets, or SaaS pricing/feature grids.; Do not box the top nav in a floating pill or nest cards; let the nav sit openly across the header.; Do not add decorative colours beyond the blue annotation channel and tiny red correction marks.; Do not let handwritten notes become illegible decoration; every note should clarify, question, or humanize a nearby system detail.
## 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 DisketteLedgerShadcnKit() {
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">Diskette Ledger</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": "Desktop is a 12-column max-width 1180px page with asymmetric 7/5 and 4/8 panel spans; tablet collapses to 6 columns; mobile becomes one column with preserved floppy tabs and annotation layering. Columns use minmax(0,1fr) and children min-width:0.",
"whitespace": "Outer margins broad at 48-112px while internal label gaps stay tight at 4-12px, creating the rhythm of a notebook page with crowded notes around calm diagrams.",
"density": "Medium-high informational density with deliberate quiet cream margins so annotations and terminal fragments feel found rather than crammed.",
"responsive": "Keep the dominant clubroom panel first, then the rail, printer strip, archive queue, and notes; fold margin annotations inline on narrow screens; only the full-bleed hero spans 100vw on ultra-wide.",
"breakpoints": {
"mobile": "<= 640px",
"tablet": "641px - 980px",
"desktop": ">= 981px"
}
}
{
"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-019ef8b7-ac27-7fc1-b7d6-4f3ace9d3996",
"name": "Diskette Ledger",
"slug": "diskette-ledger"
},
"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": [],
"visualProfile": {
"family": "system",
"material": "flat",
"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": "Diskette Ledger launch room",
"description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
"primaryAction": "Apply theme",
"secondaryAction": "Review states",
"stats": [
{
"label": "components",
"value": "16",
"tone": "accent"
},
{
"label": "states",
"value": "ready"
},
{
"label": "density",
"value": "balanced",
"tone": "warning"
}
],
"rows": [
{
"label": "Primary flow",
"value": "mapped",
"status": "active"
},
{
"label": "Token coverage",
"value": "semantic",
"status": "synced"
},
{
"label": "Responsive proof",
"value": "queued",
"status": "review"
}
],
"statuses": [
"Active",
"Synced",
"Draft"
]
}
},
{
"id": "detail-editor",
"title": "Detail editor",
"viewport": "tablet",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"sheet"
],
"composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
"mustShow": [
"focus ring",
"error or destructive state",
"dialog or sheet treatment",
"written guidance content"
],
"avoid": [
"unstyled browser controls",
"floating cards inside cards",
"missing labels"
],
"scene": {
"eyebrow": "editing flow",
"headline": "Language recipe editor",
"description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
"primaryAction": "Save recipe",
"secondaryAction": "Open sheet",
"fields": [
{
"label": "Component family",
"value": "Narrative cards"
},
{
"label": "State treatment",
"value": "Visible focus + validation"
},
{
"label": "Motion",
"value": "Small lift, no opacity-only fade"
}
],
"statuses": [
"Focus",
"Invalid",
"Confirmed"
]
}
},
{
"id": "data-operations",
"title": "Data operations",
"viewport": "mobile",
"primitives": [
"button",
"tabs",
"badge",
"dropdown-menu",
"table",
"tooltip",
"separator"
],
"composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
"mustShow": [
"responsive reflow",
"dense row styling",
"menu affordance",
"status badge system"
],
"avoid": [
"desktop-only tables",
"text overflow",
"default shadcn spacing without Katagami character"
],
"scene": {
"eyebrow": "operations",
"headline": "Compact review queue",
"description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
"primaryAction": "Resolve",
"secondaryAction": "Filter",
"rows": [
{
"label": "Button hierarchy",
"value": "approved",
"status": "ok"
},
{
"label": "Table rhythm",
"value": "needs pass",
"status": "watch"
},
{
"label": "Empty state",
"value": "designed",
"status": "done"
}
],
"statuses": [
"Queued",
"Blocked",
"Done"
]
}
}
],
"componentRecipes": [
{
"primitive": "button",
"intent": "Prove action hierarchy, focus, disabled, and destructive states."
},
{
"primitive": "card",
"intent": "Carry the language surface, border, elevation, and density rules."
},
{
"primitive": "input",
"intent": "Show labels, focus rings, validation, and spacing rhythm."
},
{
"primitive": "textarea",
"intent": "Show longer guidance, validation copy, and writing density."
},
{
"primitive": "select",
"intent": "Show filtering, selection contrast, and menu trigger styling."
},
{
"primitive": "dialog",
"intent": "Show centered decision states and overlay treatment."
},
{
"primitive": "sheet",
"intent": "Show contextual side panels and responsive editing."
},
{
"primitive": "tabs",
"intent": "Show navigational structure and active/inactive contrast."
},
{
"primitive": "badge",
"intent": "Show compact status vocabulary and semantic colors."
},
{
"primitive": "separator",
"intent": "Show section rhythm without generic gray dividers."
},
{
"primitive": "checkbox",
"intent": "Show binary selection with visible focus and checked states."
},
{
"primitive": "switch",
"intent": "Show settings toggles and on/off contrast."
},
{
"primitive": "slider",
"intent": "Show numeric adjustment with track/thumb styling."
},
{
"primitive": "tooltip",
"intent": "Show concise explanation styling above compact controls."
},
{
"primitive": "dropdown-menu",
"intent": "Show action menus, destructive items, and grouped choices."
},
{
"primitive": "table",
"intent": "Show dense operational data, separators, row states, and responsive behavior."
}
],
"qualityRules": {
"do": [
"Use cream paper, off-white ABS, black manga ink, faded label gray, and one restrained blue annotation channel.",
"Name interface modules as plausible school computer-club artifacts: seating charts, disk ledgers, cable labels, boot logs, printer strips.",
"Make manga influence structural: panel crops, gutter rhythm, restrained speed-lines, and instructional diagram hierarchy.",
"Use terminal fragments as small punchlines or status whispers, no more than one short command per chip.",
"Give one panel dominance and vary its neighbours by scale, density, and orientation.",
"Use red only for tiny correction ticks, wrong-disk notes, or a single overdue warning.",
"Explicitly style every form control with no visible browser defaults; keep body text 17px+ at high contrast."
],
"dont": [
"Do not use green matrix rain, neon glows, vaporwave gradients, cyberpunk purple, or black-background hacker theatrics.",
"Do not draw anime characters or fan-art mascots; the manga reference is page architecture, not illustration fandom.",
"Do not create three equal cards in a row, generic analytics dashboards, CRM widgets, or SaaS pricing/feature grids.",
"Do not box the top nav in a floating pill or nest cards; let the nav sit openly across the header.",
"Do not add decorative colours beyond the blue annotation channel and tiny red correction marks.",
"Do not let handwritten notes become illegible decoration; every note should clarify, question, or humanize a nearby system detail."
]
}
}