Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Compose every screen as an annotated feature spread: a dominant lead-story column, narrower annotation rails, and small utility clusters that never overpower the reading path. Each exhibit is a numbered figure plate.
Dramatic serif display (Instrument Serif) for narrative headlines, uppercase mono microtype (IBM Plex Mono) for labels, figure numbers, folio markers and timestamps, Manrope for body. The serif/mono contrast is the rhythm.
Moderate and breathable; high-information zones (tables, ledgers) get margin, hairline separators, and caption structure so the page still reads as edited.
The figure plate — a captioned, cross-referenced exhibit (image or data) beneath a hairline oxblood rule, framed by crop-marks, optionally pinned by a leader line to a numbered tag. The same convention drives imagery via the paired Gravure art style.
Desktop uses an asymmetric editorial grid with a dominant ~7-column story area, a ~3-column annotation rail, and small utility clusters; interior panels use nested split grids for article-and-data pairings.
Generous and directional — large vertical spacing around headline blocks, measured gutters between annotation modules to preserve periodical pacing.
Reading-first; data is allowed but always typeset and captioned.
gravure
Documentary technology photography printed as a warm paper-cream and ink-black halftone duotone — figure plates inset on a clean paper margin, a hairline oxblood rule beneath a short FIG. caption, crop-mark brackets, and at most one leader line to a numbered tag. Hands-on fabrication scenes, architectural detail, printed matter, and abstracted systems diagrams suit the periodical tone.
The landing hero is a full-bleed gravure plate (FIG. 01 — WAFER) with a clean upper margin for the headline overlay. Inline figures are smaller plates with their own FIG. captions and rules.
# Cicero ## Philosophy Cicero frames software as a premium field journal: a dominant reading column, annotated margins, and numbered figure plates printed in oxblood and ink. Named for the typographic unit of measure, it is built on typeset rhythm — information arrives authored, paced, and cited, with the gravity and whitespace of a serious periodical. ### Values - reading-first hierarchy over dashboard noise - every claim arrives as a numbered, cross-referenced figure plate - warm paper texture with precise typeset annotation - the accent is a highlighter, never a flood ### Anti-Values - generic SaaS card farms and white-minimal defaults - cold neon futurism without readability - uniform sans that flattens the serif/mono contrast - gadget chrome, loud gradients, and one-sided accent edges ### Visual Character - Large high-contrast serif headlines sit in wide asymmetric columns while compact uppercase mono rails create a deliberate periodical rhythm across the page. - Every exhibit is a numbered figure plate: a gravure duotone image inset on a paper margin, a hairline oxblood rule, a short uppercase mono caption (FIG. NN), crop-mark brackets, and at most one leader line to a numbered tag. - Thin mono labels, issue markers, folio dates, and captions form a layer of technical annotation around the primary reading column. - Oxblood appears as underlines, quote bars, progress rules, active marks, chart strokes, and tag outlines — never filled buttons or saturated floods. - Images, pull quotes, metrics, and margin notes are arranged in uneven but baseline-aligned columns with generous gutters — page composition, not a uniform component grid. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#f3ede4` | | surface | `#fbf7f0` | | surface_2 | `#f7f1e8` | | text | `#161412` | | muted | `#6f655b` | | border | `#e1d6c8` | | accent | `#b13a2e` | | on_accent | `#fbf7f0` | | primary | `#161412` | | secondary | `#655d56` | | success | `#2f6a53` | | warning | `#9a6a2c` | | error | `#a8392f` | | info | `#3f6178` | ### Typography - **Base Size**: 17px - **Body Font**: Manrope - **Heading Font**: Instrument Serif - **Mono Font**: IBM Plex Mono - **Heading Weight**: 400 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Display Letter Spacing**: -0.04em - **Body Line Height**: 1.58 - **Display Line Height**: 1.06 - **Scale Ratio**: 1.25 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Manrope:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0px - **Container**: 24px - **Control**: 9999px ### Shadows - **Sm**: 0 12px 24px rgba(22,20,18,0.05) - **Md**: 0 18px 40px rgba(22,20,18,0.08) - **Lg**: 0 28px 80px rgba(22,20,18,0.12) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Treatment**: warm paper sheets - **Card Style**: warm paper panels (#fbf7f0), 24px rounded sheet silhouette, near-invisible warm hairline border, restrained backdrop blur on the lead figure plate, one three-step shadow scale - **Bg Pattern**: very subtle paper grain (faint layered radial tints), no washes ### Borders - **Default Width**: 1px - **Accent Width**: 2px - **Style**: solid - **Character**: near-invisible warm oxford hairline rules; a separate 2px sharp oxblood rule carries figure captions and quote bars — never a one-sided edge on a rounded card ### Motion - **Duration**: 280ms - **Easing**: cubic-bezier(0.22,1,0.36,1) - **Philosophy**: page pacing and editorial reveal — slow fades, parallax plate drift, rule-line and caption sequencing on scroll; settled state is the no-JS default; respects prefers-reduced-motion ## Rules ### Composition Compose every screen as an annotated feature spread: a dominant lead-story column, narrower annotation rails, and small utility clusters that never overpower the reading path. Each exhibit is a numbered figure plate. ### Hierarchy Dramatic serif display (Instrument Serif) for narrative headlines, uppercase mono microtype (IBM Plex Mono) for labels, figure numbers, folio markers and timestamps, Manrope for body. The serif/mono contrast is the rhythm. ### Density Moderate and breathable; high-information zones (tables, ledgers) get margin, hairline separators, and caption structure so the page still reads as edited. ### Signature The figure plate — a captioned, cross-referenced exhibit (image or data) beneath a hairline oxblood rule, framed by crop-marks, optionally pinned by a leader line to a numbered tag. The same convention drives imagery via the paired Gravure art style. ## Layout ### Grid Desktop uses an asymmetric editorial grid with a dominant ~7-column story area, a ~3-column annotation rail, and small utility clusters; interior panels use nested split grids for article-and-data pairings. ### Whitespace Generous and directional — large vertical spacing around headline blocks, measured gutters between annotation modules to preserve periodical pacing. ### Density Reading-first; data is allowed but always typeset and captioned. ### Responsive - **Desktop**: asymmetric editorial spread (story + rail + utility) - **Tablet**: stacked main-and-side sections with two-column internals - **Mobile**: single reading column, full-width modules, non-essential nav hidden, tables scroll only where necessary ### Breakpoints - **Desktop**: 1440px+ keeps the multi-column spread - **Tablet**: 900px collapses to stacked editorial sections - **Mobile**: 390px becomes one reading column; grids use minmax(0,1fr) so children shrink, never overflow ## Guidance ### Do - Treat long-form content, captions, figure numbers, and cross-references as first-class design material. - Make every exhibit a numbered figure plate beneath a hairline oxblood rule. - Pair warm paper surfaces with precise rule lines and one restrained oxblood accent. - Build hierarchy from typography, spacing, and annotation, not oversized buttons or bright fills. - Keep one button clearly primary (oxblood fill); keep the rest quieter, sharing one shape and height. - Explicitly style every form control — inputs, selects, textareas, toggles, pills — as typographic editorial elements. - Let navigation breathe as part of the page; never trap it in a floating pill bar or boxed widget. ### Don't - Do not default to a white ground or turn the language into a generic analytics dashboard. - Do not replace the serif-and-microtype contrast with uniform sans. - Do not flood panels with oxblood, heavy colour, gradients, or gadget chrome. - Do not give a card a single one-sided accent edge, or nest cards. - Do not use browser-default form controls or unstyled tables. - Do not mix arbitrary radii (10px, 18px, 28px) or use symbol glyphs in copy — use SVG primitives. - Do not put emoji on buttons. ### Accessibility Maintain WCAG AA contrast (ink on paper, oxblood used at AA-legible sizes), visible oxblood focus rings on all controls, readable 17px body copy, table rows 14.5px+, keyboard-usable controls with clear mono labels, and prefers-reduced-motion honoured. ## Imagery Direction ### Pairs With gravure ### Summary Documentary technology photography printed as a warm paper-cream and ink-black halftone duotone — figure plates inset on a clean paper margin, a hairline oxblood rule beneath a short FIG. caption, crop-mark brackets, and at most one leader line to a numbered tag. Hands-on fabrication scenes, architectural detail, printed matter, and abstracted systems diagrams suit the periodical tone. ### Subjects - silicon wafers and fabrication - hands-on inspection scenes - architectural and machine detail - printed matter and typesetting - abstracted systems diagrams ### Usage The landing hero is a full-bleed gravure plate (FIG. 01 — WAFER) with a clean upper margin for the headline overlay. Inline figures are smaller plates with their own FIG. captions and rules.
---
version: "alpha"
name: "Cicero"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#f3ede4"
surface: "#fbf7f0"
surface_2: "#f7f1e8"
text: "#161412"
muted: "#6f655b"
border: "#e1d6c8"
accent: "#b13a2e"
on_accent: "#fbf7f0"
primary: "#161412"
secondary: "#655d56"
success: "#2f6a53"
warning: "#9a6a2c"
error: "#a8392f"
info: "#3f6178"
typography:
headline-lg:
fontFamily: "Instrument Serif"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Instrument Serif"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Manrope"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
container: "24px"
control: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-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-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
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.primary}"
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"
---
# Cicero
## Overview
Cicero frames software as a premium field journal: a dominant reading column, annotated margins, and numbered figure plates printed in oxblood and ink. Named for the typographic unit of measure, it is built on typeset rhythm — information arrives authored, paced, and cited, with the gravity and whitespace of a serious periodical.
### Values
- reading-first hierarchy over dashboard noise
- every claim arrives as a numbered, cross-referenced figure plate
- warm paper texture with precise typeset annotation
- the accent is a highlighter, never a flood
### Anti-Values
- generic SaaS card farms and white-minimal defaults
- cold neon futurism without readability
- uniform sans that flattens the serif/mono contrast
- gadget chrome, loud gradients, and one-sided accent edges
### Visual Character
- Large high-contrast serif headlines sit in wide asymmetric columns while compact uppercase mono rails create a deliberate periodical rhythm across the page.
- Every exhibit is a numbered figure plate: a gravure duotone image inset on a paper margin, a hairline oxblood rule, a short uppercase mono caption (FIG. NN), crop-mark brackets, and at most one leader line to a numbered tag.
- Thin mono labels, issue markers, folio dates, and captions form a layer of technical annotation around the primary reading column.
- Oxblood appears as underlines, quote bars, progress rules, active marks, chart strokes, and tag outlines — never filled buttons or saturated floods.
- Images, pull quotes, metrics, and margin notes are arranged in uneven but baseline-aligned columns with generous gutters — page composition, not a uniform component grid.
## 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 | `#f3ede4` |
| surface | `#fbf7f0` |
| surface_2 | `#f7f1e8` |
| text | `#161412` |
| muted | `#6f655b` |
| border | `#e1d6c8` |
| accent | `#b13a2e` |
| on_accent | `#fbf7f0` |
| primary | `#161412` |
| secondary | `#655d56` |
| success | `#2f6a53` |
| warning | `#9a6a2c` |
| error | `#a8392f` |
| info | `#3f6178` |
## Typography
- **Headline-Lg**: Instrument Serif, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Instrument Serif, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Manrope, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Grid
Desktop uses an asymmetric editorial grid with a dominant ~7-column story area, a ~3-column annotation rail, and small utility clusters; interior panels use nested split grids for article-and-data pairings.
### Whitespace
Generous and directional — large vertical spacing around headline blocks, measured gutters between annotation modules to preserve periodical pacing.
### Density
Reading-first; data is allowed but always typeset and captioned.
### Responsive
- **Desktop**: asymmetric editorial spread (story + rail + utility)
- **Tablet**: stacked main-and-side sections with two-column internals
- **Mobile**: single reading column, full-width modules, non-essential nav hidden, tables scroll only where necessary
### Breakpoints
- **Desktop**: 1440px+ keeps the multi-column spread
- **Tablet**: 900px collapses to stacked editorial sections
- **Mobile**: 390px becomes one reading column; grids use minmax(0,1fr) so children shrink, never overflow
## Elevation & Depth
### Shadows
- **Sm**: 0 12px 24px rgba(22,20,18,0.05)
- **Md**: 0 18px 40px rgba(22,20,18,0.08)
- **Lg**: 0 28px 80px rgba(22,20,18,0.12)
## Shapes
### Rounded
- **None**: `0px`
- **Container**: `24px`
- **Control**: `9999px`
### Surfaces
- **Treatment**: warm paper sheets
- **Card Style**: warm paper panels (#fbf7f0), 24px rounded sheet silhouette, near-invisible warm hairline border, restrained backdrop blur on the lead figure plate, one three-step shadow scale
- **Bg Pattern**: very subtle paper grain (faint layered radial tints), no washes
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: near-invisible warm oxford hairline rules; a separate 2px sharp oxblood rule carries figure captions and quote bars — never a one-sided edge on a rounded card
## Components
### Composition
Compose every screen as an annotated feature spread: a dominant lead-story column, narrower annotation rails, and small utility clusters that never overpower the reading path. Each exhibit is a numbered figure plate.
### Hierarchy
Dramatic serif display (Instrument Serif) for narrative headlines, uppercase mono microtype (IBM Plex Mono) for labels, figure numbers, folio markers and timestamps, Manrope for body. The serif/mono contrast is the rhythm.
### Density
Moderate and breathable; high-information zones (tables, ledgers) get margin, hairline separators, and caption structure so the page still reads as edited.
### Signature
The figure plate — a captioned, cross-referenced exhibit (image or data) beneath a hairline oxblood rule, framed by crop-marks, optionally pinned by a leader line to a numbered tag. The same convention drives imagery via the paired Gravure art style.
## 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-019efa19-e69d-7a83-918c-ca9f01a0b8c3/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 Treat long-form content, captions, figure numbers, and cross-references as first-class design material.
- Do Make every exhibit a numbered figure plate beneath a hairline oxblood rule.
- Do Pair warm paper surfaces with precise rule lines and one restrained oxblood accent.
- Do Build hierarchy from typography, spacing, and annotation, not oversized buttons or bright fills.
- Do Keep one button clearly primary (oxblood fill); keep the rest quieter, sharing one shape and height.
- Do Explicitly style every form control — inputs, selects, textareas, toggles, pills — as typographic editorial elements.
- Do Let navigation breathe as part of the page; never trap it in a floating pill bar or boxed widget.
- Don't Do not default to a white ground or turn the language into a generic analytics dashboard.
- Don't Do not replace the serif-and-microtype contrast with uniform sans.
- Don't Do not flood panels with oxblood, heavy colour, gradients, or gadget chrome.
- Don't Do not give a card a single one-sided accent edge, or nest cards.
- Don't Do not use browser-default form controls or unstyled tables.
- Don't Do not mix arbitrary radii (10px, 18px, 28px) or use symbol glyphs in copy — use SVG primitives.
- Don't Do not put emoji on buttons.
### Accessibility
Maintain WCAG AA contrast (ink on paper, oxblood used at AA-legible sizes), visible oxblood focus rings on all controls, readable 17px body copy, table rows 14.5px+, keyboard-usable controls with clear mono labels, and prefers-reduced-motion honoured.
## Imagery Direction
### Pairs With
gravure
### Summary
Documentary technology photography printed as a warm paper-cream and ink-black halftone duotone — figure plates inset on a clean paper margin, a hairline oxblood rule beneath a short FIG. caption, crop-mark brackets, and at most one leader line to a numbered tag. Hands-on fabrication scenes, architectural detail, printed matter, and abstracted systems diagrams suit the periodical tone.
### Subjects
- silicon wafers and fabrication
- hands-on inspection scenes
- architectural and machine detail
- printed matter and typesetting
- abstracted systems diagrams
### Usage
The landing hero is a full-bleed gravure plate (FIG. 01 — WAFER) with a clean upper margin for the headline overlay. Inline figures are smaller plates with their own FIG. captions and rules.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "cicero",
"type": "registry:theme",
"title": "Cicero shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#f3ede4",
"foreground": "#161412",
"card": "#fbf7f0",
"card-foreground": "#161412",
"popover": "#fbf7f0",
"popover-foreground": "#161412",
"primary": "#161412",
"primary-foreground": "#ffffff",
"secondary": "#655d56",
"secondary-foreground": "#ffffff",
"muted": "#6f655b",
"muted-foreground": "#161412",
"accent": "#b13a2e",
"accent-foreground": "#ffffff",
"destructive": "#a8392f",
"border": "#e1d6c8",
"input": "#e1d6c8",
"ring": "#b13a2e",
"chart-1": "#161412",
"chart-2": "#655d56",
"chart-3": "#b13a2e",
"chart-4": "#2f6a53",
"chart-5": "#9a6a2c",
"sidebar": "#fbf7f0",
"sidebar-foreground": "#161412",
"sidebar-primary": "#161412",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3f6178",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#e1d6c8",
"sidebar-ring": "#b13a2e",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#161412",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#b13a2e",
"accent-foreground": "#ffffff",
"destructive": "#a8392f",
"border": "#303642",
"input": "#303642",
"ring": "#b13a2e",
"chart-1": "#161412",
"chart-2": "#655d56",
"chart-3": "#b13a2e",
"chart-4": "#2f6a53",
"chart-5": "#9a6a2c",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#161412",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#b13a2e",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#b13a2e",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efa19-e69d-7a83-918c-ca9f01a0b8c3",
"slug": "cicero",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"primary",
"secondary",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"body_line_height",
"display_letter_spacing",
"display_line_height",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"mono_font",
"scale_ratio"
],
"radii": [
"container",
"control",
"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 Ciceroand 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: #f3ede4;
--foreground: #161412;
--card: #fbf7f0;
--card-foreground: #161412;
--popover: #fbf7f0;
--popover-foreground: #161412;
--primary: #161412;
--primary-foreground: #ffffff;
--secondary: #655d56;
--secondary-foreground: #ffffff;
--muted: #6f655b;
--muted-foreground: #161412;
--accent: #b13a2e;
--accent-foreground: #ffffff;
--destructive: #a8392f;
--border: #e1d6c8;
--input: #e1d6c8;
--ring: #b13a2e;
--chart-1: #161412;
--chart-2: #655d56;
--chart-3: #b13a2e;
--chart-4: #2f6a53;
--chart-5: #9a6a2c;
--sidebar: #fbf7f0;
--sidebar-foreground: #161412;
--sidebar-primary: #161412;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3f6178;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #e1d6c8;
--sidebar-ring: #b13a2e;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #161412;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #b13a2e;
--accent-foreground: #ffffff;
--destructive: #a8392f;
--border: #303642;
--input: #303642;
--ring: #b13a2e;
--chart-1: #161412;
--chart-2: #655d56;
--chart-3: #b13a2e;
--chart-4: #2f6a53;
--chart-5: #9a6a2c;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #161412;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #b13a2e;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #b13a2e;
--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 CiceroShadcnKit() {
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">Cicero</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": "cicero",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Cicero — Field Journal",
"description": "A field-journal design language: warm paper-cream ground, ink text, a single oxblood accent used as a typeset rule, serif/mono contrast, 24px sheets and pill controls.",
"cssVars": {
"theme": {
"font-sans": "Manrope, system-ui, -apple-system, sans-serif",
"font-serif": "Instrument Serif, Georgia, serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"radius": "24px"
},
"light": {
"background": "#f3ede4",
"foreground": "#161412",
"card": "#fbf7f0",
"card-foreground": "#161412",
"popover": "#fbf7f0",
"popover-foreground": "#161412",
"primary": "#b13a2e",
"primary-foreground": "#fbf7f0",
"secondary": "#f7f1e8",
"secondary-foreground": "#161412",
"muted": "#f7f1e8",
"muted-foreground": "#6f655b",
"accent": "#b13a2e",
"accent-foreground": "#fbf7f0",
"destructive": "#a8392f",
"destructive-foreground": "#fbf7f0",
"border": "#e1d6c8",
"input": "#e1d6c8",
"ring": "#b13a2e",
"chart-1": "#b13a2e",
"chart-2": "#161412",
"chart-3": "#6f655b",
"chart-4": "#3f6178",
"chart-5": "#2f6a53",
"sidebar": "#fbf7f0",
"sidebar-foreground": "#161412",
"sidebar-primary": "#b13a2e",
"sidebar-primary-foreground": "#fbf7f0",
"sidebar-accent": "#f7f1e8",
"sidebar-accent-foreground": "#161412",
"sidebar-border": "#e1d6c8",
"sidebar-ring": "#b13a2e",
"radius": "24px"
},
"dark": {
"background": "#161412",
"foreground": "#f3ede4",
"card": "#1f1c19",
"card-foreground": "#f3ede4",
"popover": "#1f1c19",
"popover-foreground": "#f3ede4",
"primary": "#cf6256",
"primary-foreground": "#161412",
"secondary": "#262220",
"secondary-foreground": "#f3ede4",
"muted": "#262220",
"muted-foreground": "#a89c8f",
"accent": "#cf6256",
"accent-foreground": "#161412",
"destructive": "#cf6256",
"destructive-foreground": "#161412",
"border": "#332e29",
"input": "#332e29",
"ring": "#cf6256",
"chart-1": "#cf6256",
"chart-2": "#f3ede4",
"chart-3": "#a89c8f",
"chart-4": "#7fa3bd",
"chart-5": "#6fae90",
"sidebar": "#1f1c19",
"sidebar-foreground": "#f3ede4",
"sidebar-primary": "#cf6256",
"sidebar-primary-foreground": "#161412",
"sidebar-accent": "#262220",
"sidebar-accent-foreground": "#f3ede4",
"sidebar-border": "#332e29",
"sidebar-ring": "#cf6256",
"radius": "24px"
}
}
}
# Cicero shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efa19-e69d-7a83-918c-ca9f01a0b8c3`
Slug: `cicero`
## Intent
Cicero frames software as a premium field journal: a dominant reading column, annotated margins, and numbered figure plates printed in oxblood and ink. Named for the typographic unit of measure, it is built on typeset rhythm — information arrives authored, paced, and cited, with the gravity and whitespace of a serious periodical.
## 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": "#f3ede4",
"surface": "#fbf7f0",
"surface_2": "#f7f1e8",
"text": "#161412",
"muted": "#6f655b",
"border": "#e1d6c8",
"accent": "#b13a2e",
"on_accent": "#fbf7f0",
"primary": "#161412",
"secondary": "#655d56",
"success": "#2f6a53",
"warning": "#9a6a2c",
"error": "#a8392f",
"info": "#3f6178"
}
Typography:
{
"base_size": "17px",
"body_font": "Manrope",
"heading_font": "Instrument Serif",
"mono_font": "IBM Plex Mono",
"heading_weight": "400",
"heading_transform": "none",
"letter_spacing": "-0.02em",
"display_letter_spacing": "-0.04em",
"body_line_height": "1.58",
"display_line_height": "1.06",
"scale_ratio": 1.25,
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Manrope:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- Large high-contrast serif headlines sit in wide asymmetric columns while compact uppercase mono rails create a deliberate periodical rhythm across the page.
- Every exhibit is a numbered figure plate: a gravure duotone image inset on a paper margin, a hairline oxblood rule, a short uppercase mono caption (FIG. NN), crop-mark brackets, and at most one leader line to a numbered tag.
- Thin mono labels, issue markers, folio dates, and captions form a layer of technical annotation around the primary reading column.
- Oxblood appears as underlines, quote bars, progress rules, active marks, chart strokes, and tag outlines — never filled buttons or saturated floods.
- Images, pull quotes, metrics, and margin notes are arranged in uneven but baseline-aligned columns with generous gutters — page composition, not a uniform component grid.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "dense",
"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/cicero/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: Treat long-form content, captions, figure numbers, and cross-references as first-class design material.; Make every exhibit a numbered figure plate beneath a hairline oxblood rule.; Pair warm paper surfaces with precise rule lines and one restrained oxblood accent.; Build hierarchy from typography, spacing, and annotation, not oversized buttons or bright fills.; Keep one button clearly primary (oxblood fill); keep the rest quieter, sharing one shape and height.; Explicitly style every form control — inputs, selects, textareas, toggles, pills — as typographic editorial elements.; Let navigation breathe as part of the page; never trap it in a floating pill bar or boxed widget.
- Do not: Do not default to a white ground or turn the language into a generic analytics dashboard.; Do not replace the serif-and-microtype contrast with uniform sans.; Do not flood panels with oxblood, heavy colour, gradients, or gadget chrome.; Do not give a card a single one-sided accent edge, or nest cards.; Do not use browser-default form controls or unstyled tables.; Do not mix arbitrary radii (10px, 18px, 28px) or use symbol glyphs in copy — use SVG primitives.; Do not put emoji on buttons.
## 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 CiceroShadcnKit() {
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">Cicero</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 uses an asymmetric editorial grid with a dominant ~7-column story area, a ~3-column annotation rail, and small utility clusters; interior panels use nested split grids for article-and-data pairings.",
"whitespace": "Generous and directional — large vertical spacing around headline blocks, measured gutters between annotation modules to preserve periodical pacing.",
"density": "Reading-first; data is allowed but always typeset and captioned.",
"responsive": {
"desktop": "asymmetric editorial spread (story + rail + utility)",
"tablet": "stacked main-and-side sections with two-column internals",
"mobile": "single reading column, full-width modules, non-essential nav hidden, tables scroll only where necessary"
},
"breakpoints": {
"desktop": "1440px+ keeps the multi-column spread",
"tablet": "900px collapses to stacked editorial sections",
"mobile": "390px becomes one reading column; grids use minmax(0,1fr) so children shrink, never overflow"
}
}
{
"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-019efa19-e69d-7a83-918c-ca9f01a0b8c3",
"name": "Cicero",
"slug": "cicero"
},
"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": [
"Large high-contrast serif headlines sit in wide asymmetric columns while compact uppercase mono rails create a deliberate periodical rhythm across the page.",
"Every exhibit is a numbered figure plate: a gravure duotone image inset on a paper margin, a hairline oxblood rule, a short uppercase mono caption (FIG. NN), crop-mark brackets, and at most one leader line to a numbered tag.",
"Thin mono labels, issue markers, folio dates, and captions form a layer of technical annotation around the primary reading column.",
"Oxblood appears as underlines, quote bars, progress rules, active marks, chart strokes, and tag outlines — never filled buttons or saturated floods.",
"Images, pull quotes, metrics, and margin notes are arranged in uneven but baseline-aligned columns with generous gutters — page composition, not a uniform component grid."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "dense",
"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": "Cicero 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": [
"Treat long-form content, captions, figure numbers, and cross-references as first-class design material.",
"Make every exhibit a numbered figure plate beneath a hairline oxblood rule.",
"Pair warm paper surfaces with precise rule lines and one restrained oxblood accent.",
"Build hierarchy from typography, spacing, and annotation, not oversized buttons or bright fills.",
"Keep one button clearly primary (oxblood fill); keep the rest quieter, sharing one shape and height.",
"Explicitly style every form control — inputs, selects, textareas, toggles, pills — as typographic editorial elements.",
"Let navigation breathe as part of the page; never trap it in a floating pill bar or boxed widget."
],
"dont": [
"Do not default to a white ground or turn the language into a generic analytics dashboard.",
"Do not replace the serif-and-microtype contrast with uniform sans.",
"Do not flood panels with oxblood, heavy colour, gradients, or gadget chrome.",
"Do not give a card a single one-sided accent edge, or nest cards.",
"Do not use browser-default form controls or unstyled tables.",
"Do not mix arbitrary radii (10px, 18px, 28px) or use symbol glyphs in copy — use SVG primitives.",
"Do not put emoji on buttons."
]
}
}