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 screens as a bound issue locked to a left-margin folio rail: a thick bone galley rule down the margin, each section opening with a running mono folio number, a condensed display heading, and a right-aligned meta label, capped by a rule. A dominant narrative column and a narrower evidence rail lock to the same measure. Panels are square 0-radius ink frames capped by a 3px bone rule — never floating cards, never a boxed-in pill nav.
Lead with one large condensed display score or title; build rank from scale, weight, rule thickness, and the single saffron tick — not from shadows. Serif body and mono metadata give a tri-level institutional voice.
Medium-dense to dense. Ledgers and evidence blocks may be compact, but every dense zone is buffered by measured whitespace bands and a visible cap rule, so the page reads as a research-journal issue, not a crowded console.
A 12-column desktop grid on an 8px base, framed by the folio rail in the left margin; key compositions run 8/4 or 7/5 column splits for editorial asymmetry, hard-aligned left and top.
Desktop 1280px+ keeps 12 columns and the full margin rail. Tablet 768px collapses to a stacked reading order keeping every folio number and cap rule. Mobile 390px folds the rail into the section head (the meta label wraps under the heading), reduces tables to key columns, and never overflows horizontally; the nav wraps, never spills.
Large top margins and inter-section bands give institutional breathing room around dense content; the galley rail and cap rules measure the rhythm so whitespace reads as deliberate, not soft.
Shift from the multi-column margin-railed spread to a single stacked reading column while preserving folio numbers, cap rules, the saffron ticks, and the tri-level type at every breakpoint.
reglet-letterpress-rule
Imagery uses the letterpress relief technique: subjects pressed hard into warm cotton-rag paper, value built from broken-ink dry-press texture and fine engraved hatching, in a strict two-ink registration with one small saffron spot accent. Heroes are full-bleed worked fields with a calm band of bare paper left open for the overlay.
Use full-bleed relief fields for heroes with the ink mass weighted to one side and bare paper left for the overlay; use centered single-subject print specimens for feature and avatar slots; keep empty-states mostly bare paper with one faint impression.
# Reglet ## Philosophy Reglet is the letterpress review-desk language. A reglet is the thin strip a printer locks between lines to hold the measure true; Reglet makes that strip the interface. Its one ownable idea is the folio rail — a thick bone galley rule that runs down the left margin, numbering every section, capping it with a rule, and ticking one saffron signal where a verdict needs attention. It reinterprets an institutional editorial-review source, but moves it off the warm-paper red-black-white spread onto a warm-ink night desk, where a single saffron ink does all the signaling and scores are typeset, not animated. ### Values - Bind the page like an issue: every section is a numbered folio capped by a rule, not a floating card. - Lock to the measure: tables, scores, and copy hold one column, with mono tabular numerals doing the alignment. - Signal with one ink: saffron is a registration tick, a highlighter swipe, a meter peak — a spark, never a wash. - Frame with rules, not shadows: a bone galley rule and a hairline do the structure; depth is the rule. - Typeset the verdict: condensed display scores against serif copy and mono metadata — an institutional voice you trust. ### Anti-Values - Rounded consumer-app softness, glass, or blurred translucency. - Red-black-white on warm paper as a default editorial costume. - Smooth gradient meters and glossy charts that hide a discrete reading. - Floating pills and chips, boxed-in nav widgets, decorative gradients. - Centered symmetry — Reglet depends on the asymmetric margin rail. ### Visual Character - A thick bone galley rule runs down the left margin and every major section opens with a running mono folio number, so the screen reads as a bound issue rather than a stack of cards. - Section heads are a folio — number, condensed display heading, and a right-aligned mono meta label — capped by a 1px rule; panels carry a 3px bone top rule. - One saffron signal ink appears only as a margin inset tick on a flagged module, a highlighter swipe under a single headline word, and the hot segment in a meter. - Quantities read as tick meters: a run of discrete square segments (lit, unlit, one hot) rather than a smooth bar. - Tri-level type — Archivo condensed display for scores and titles, Spectral serif for body, Spline Sans Mono for folios, metadata, and tabular numerals — set on a warm press-bed ink ground with bone paper text. ## Tokens ### Colors | Name | Value | |------|-------| | primary | `#E8A317` | | secondary | `#221E1A` | | accent | `#E8A317` | | background | `#1A1714` | | surface | `#221E1A` | | surface_2 | `#15120F` | | text | `#EDE6D6` | | muted | `#9A9082` | | border | `#3A332C` | | on_accent | `#1A1714` | | ink_blue | `#7FA6C9` | | error | `#D9694C` | | success | `#7BAE6E` | | warning | `#E8A317` | | info | `#7FA6C9` | ### Typography - **Heading Font**: Archivo - **Body Font**: Spectral - **Mono Font**: Spline Sans Mono - **Base Size**: 17px - **Scale Ratio**: 1.25 - **Line Height**: 1.6 - **Letter Spacing**: -0.02em - **Heading Weight**: 800 - **Heading Transform**: none - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Spectral:ital,wght@0,400;0,500;1,400&family=Spline+Sans+Mono:wght@400;500;600&display=swap ### Spacing - **Base**: 8px - **Scale**: ["8px","12px","16px","24px","32px","48px","64px","96px"] ### Radii - **None**: 0px - **Sm**: 0px - **Md**: 0px - **Lg**: 0px - **Xl**: 0px - **Full**: 9999px ### Shadows - **Sm**: none - **Md**: none - **Lg**: none - **Tick**: inset 4px 0 0 #E8A317 ### Surfaces - **Treatment**: matte ink - **Card Style**: Raised ink panel (#221E1A) capped by a 3px bone galley rule, 0 radius; a flagged panel adds a saffron inset margin tick. Depth is the rule, never a shadow or glass. - **Bg Pattern**: folio-rail ### Borders - **Default Width**: 1px - **Accent Width**: 3px - **Style**: solid - **Character**: A 1px warm hairline (#3A332C) separates; a 3px bone rule (#EDE6D6) caps a folio or panel; a flagged module carries a saffron inset tick. Never an all-around accent edge. ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2,0.8,0.2,1) - **Character**: Deliberate, like a page going to press. A primary key flips to a saffron offset on hover; a field gains a saffron inset focus bar. The settled, fully-set state renders with no JavaScript; reduced-motion shows it instantly. ## Rules ### Composition Compose screens as a bound issue locked to a left-margin folio rail: a thick bone galley rule down the margin, each section opening with a running mono folio number, a condensed display heading, and a right-aligned meta label, capped by a rule. A dominant narrative column and a narrower evidence rail lock to the same measure. Panels are square 0-radius ink frames capped by a 3px bone rule — never floating cards, never a boxed-in pill nav. ### Hierarchy Lead with one large condensed display score or title; build rank from scale, weight, rule thickness, and the single saffron tick — not from shadows. Serif body and mono metadata give a tri-level institutional voice. ### Density Medium-dense to dense. Ledgers and evidence blocks may be compact, but every dense zone is buffered by measured whitespace bands and a visible cap rule, so the page reads as a research-journal issue, not a crowded console. ### Signature Patterns - Run a thick bone galley rule down the left margin and open every major section with a running mono folio number, binding the page like an issue. - Cap each section head (number / heading / meta) with a rule, and each major panel with a 3px bone top rule; let rules do the framing, never shadows. - Signal state with one saffron ink only — a margin inset tick on a flagged module, a highlighter swipe on a single word, the hot segment in a meter. - Render every quantity as a tick meter: a run of discrete square segments where lit cells count the value and one hot segment marks a peak or flag. - Lock tables and metadata to one strict measure with mono tabular numerals, hairline separators, and alternating ink bands — no pills, no floating chips. ## Layout ### Grid A 12-column desktop grid on an 8px base, framed by the folio rail in the left margin; key compositions run 8/4 or 7/5 column splits for editorial asymmetry, hard-aligned left and top. ### Breakpoints Desktop 1280px+ keeps 12 columns and the full margin rail. Tablet 768px collapses to a stacked reading order keeping every folio number and cap rule. Mobile 390px folds the rail into the section head (the meta label wraps under the heading), reduces tables to key columns, and never overflows horizontally; the nav wraps, never spills. ### Whitespace Large top margins and inter-section bands give institutional breathing room around dense content; the galley rail and cap rules measure the rhythm so whitespace reads as deliberate, not soft. ### Responsive Shift from the multi-column margin-railed spread to a single stacked reading column while preserving folio numbers, cap rules, the saffron ticks, and the tri-level type at every breakpoint. ### Breakpoints Map - **Mobile**: 390px - **Tablet**: 768px - **Desktop**: 1280px - **Wide**: 1600px ## Guidance ### Do - Open every section with a folio number on the margin rail and cap it with a rule. - Keep saffron a single signal — a margin tick, one highlighter swipe, a meter peak — never a wash or a background. - Lock tables and scores to one measure with mono tabular numerals so columns of figures line up. - Frame with the bone galley rule and hairlines; keep corners hard at 0 radius and let depth be the rule. - Pair condensed Archivo display with Spectral serif body and Spline Sans Mono metadata for a tri-level voice. ### Don't - Do not default to warm paper or red-black-white; Reglet lives on a warm-ink night desk. - Do not flood areas with saffron — it loses its registration force. - Do not replace tick meters with smooth gradient bars or glossy charts. - Do not float pills and chips, box the nav into a widget, or nest cards. - Do not center everything symmetrically; the margin rail and editorial asymmetry are the point. ### Accessibility Body text is 17px bone on warm ink for high contrast; verdict state never relies on colour alone — a mono label (pass / hold / re-test) and a discrete tick count carry the reading. Every form control is explicitly styled with a saffron inset focus bar; the saffron and ink-blue accents stay sparks, never low-contrast text-on-text. Motion respects prefers-reduced-motion by showing the settled, fully-set state instantly. ## Imagery Direction ### Pairs With reglet-letterpress-rule ### Summary Imagery uses the letterpress relief technique: subjects pressed hard into warm cotton-rag paper, value built from broken-ink dry-press texture and fine engraved hatching, in a strict two-ink registration with one small saffron spot accent. Heroes are full-bleed worked fields with a calm band of bare paper left open for the overlay. ### Subjects - composing sticks and locked-up metal type on a press bed - portraits and avatars as engraved relief prints - single objects and instruments as print specimens - skylines and architecture pressed into paper - review-desk still lifes and tools ### Usage Use full-bleed relief fields for heroes with the ink mass weighted to one side and bare paper left for the overlay; use centered single-subject print specimens for feature and avatar slots; keep empty-states mostly bare paper with one faint impression.
---
version: "alpha"
name: "Reglet"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
primary: "#E8A317"
secondary: "#221E1A"
accent: "#E8A317"
background: "#1A1714"
surface: "#221E1A"
surface_2: "#15120F"
text: "#EDE6D6"
muted: "#9A9082"
border: "#3A332C"
on_accent: "#1A1714"
ink_blue: "#7FA6C9"
error: "#D9694C"
success: "#7BAE6E"
warning: "#E8A317"
info: "#7FA6C9"
typography:
headline-lg:
fontFamily: "Archivo"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Archivo"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Spectral"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Spline Sans Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "0px"
lg: "0px"
xl: "0px"
full: "9999px"
spacing:
base: "8px"
xs: "8px"
sm: "12px"
md: "16px"
lg: "24px"
xl: "32px"
2xl: "48px"
3xl: "64px"
4xl: "96px"
components:
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
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-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-ink_blue:
backgroundColor: "{colors.ink_blue}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Reglet
## Overview
Reglet is the letterpress review-desk language. A reglet is the thin strip a printer locks between lines to hold the measure true; Reglet makes that strip the interface. Its one ownable idea is the folio rail — a thick bone galley rule that runs down the left margin, numbering every section, capping it with a rule, and ticking one saffron signal where a verdict needs attention. It reinterprets an institutional editorial-review source, but moves it off the warm-paper red-black-white spread onto a warm-ink night desk, where a single saffron ink does all the signaling and scores are typeset, not animated.
### Values
- Bind the page like an issue: every section is a numbered folio capped by a rule, not a floating card.
- Lock to the measure: tables, scores, and copy hold one column, with mono tabular numerals doing the alignment.
- Signal with one ink: saffron is a registration tick, a highlighter swipe, a meter peak — a spark, never a wash.
- Frame with rules, not shadows: a bone galley rule and a hairline do the structure; depth is the rule.
- Typeset the verdict: condensed display scores against serif copy and mono metadata — an institutional voice you trust.
### Anti-Values
- Rounded consumer-app softness, glass, or blurred translucency.
- Red-black-white on warm paper as a default editorial costume.
- Smooth gradient meters and glossy charts that hide a discrete reading.
- Floating pills and chips, boxed-in nav widgets, decorative gradients.
- Centered symmetry — Reglet depends on the asymmetric margin rail.
### Visual Character
- A thick bone galley rule runs down the left margin and every major section opens with a running mono folio number, so the screen reads as a bound issue rather than a stack of cards.
- Section heads are a folio — number, condensed display heading, and a right-aligned mono meta label — capped by a 1px rule; panels carry a 3px bone top rule.
- One saffron signal ink appears only as a margin inset tick on a flagged module, a highlighter swipe under a single headline word, and the hot segment in a meter.
- Quantities read as tick meters: a run of discrete square segments (lit, unlit, one hot) rather than a smooth bar.
- Tri-level type — Archivo condensed display for scores and titles, Spectral serif for body, Spline Sans Mono for folios, metadata, and tabular numerals — set on a warm press-bed ink ground with bone paper text.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| primary | `#E8A317` |
| secondary | `#221E1A` |
| accent | `#E8A317` |
| background | `#1A1714` |
| surface | `#221E1A` |
| surface_2 | `#15120F` |
| text | `#EDE6D6` |
| muted | `#9A9082` |
| border | `#3A332C` |
| on_accent | `#1A1714` |
| ink_blue | `#7FA6C9` |
| error | `#D9694C` |
| success | `#7BAE6E` |
| warning | `#E8A317` |
| info | `#7FA6C9` |
## Typography
- **Headline-Lg**: Archivo, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Spectral, 17px, weight 400, line-height 1.5.
- **Label-Md**: Spline Sans Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `8px`
- **Sm**: `12px`
- **Md**: `16px`
- **Lg**: `24px`
- **Xl**: `32px`
- **2xl**: `48px`
- **3xl**: `64px`
- **4xl**: `96px`
### Grid
A 12-column desktop grid on an 8px base, framed by the folio rail in the left margin; key compositions run 8/4 or 7/5 column splits for editorial asymmetry, hard-aligned left and top.
### Breakpoints
Desktop 1280px+ keeps 12 columns and the full margin rail. Tablet 768px collapses to a stacked reading order keeping every folio number and cap rule. Mobile 390px folds the rail into the section head (the meta label wraps under the heading), reduces tables to key columns, and never overflows horizontally; the nav wraps, never spills.
### Whitespace
Large top margins and inter-section bands give institutional breathing room around dense content; the galley rail and cap rules measure the rhythm so whitespace reads as deliberate, not soft.
### Responsive
Shift from the multi-column margin-railed spread to a single stacked reading column while preserving folio numbers, cap rules, the saffron ticks, and the tri-level type at every breakpoint.
### Breakpoints Map
- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1280px
- **Wide**: 1600px
## Elevation & Depth
### Shadows
- **Sm**: none
- **Md**: none
- **Lg**: none
- **Tick**: inset 4px 0 0 #E8A317
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Xl**: `0px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: matte ink
- **Card Style**: Raised ink panel (#221E1A) capped by a 3px bone galley rule, 0 radius; a flagged panel adds a saffron inset margin tick. Depth is the rule, never a shadow or glass.
- **Bg Pattern**: folio-rail
### Borders
- **Default Width**: 1px
- **Accent Width**: 3px
- **Style**: solid
- **Character**: A 1px warm hairline (#3A332C) separates; a 3px bone rule (#EDE6D6) caps a folio or panel; a flagged module carries a saffron inset tick. Never an all-around accent edge.
## Components
### Composition
Compose screens as a bound issue locked to a left-margin folio rail: a thick bone galley rule down the margin, each section opening with a running mono folio number, a condensed display heading, and a right-aligned meta label, capped by a rule. A dominant narrative column and a narrower evidence rail lock to the same measure. Panels are square 0-radius ink frames capped by a 3px bone rule — never floating cards, never a boxed-in pill nav.
### Hierarchy
Lead with one large condensed display score or title; build rank from scale, weight, rule thickness, and the single saffron tick — not from shadows. Serif body and mono metadata give a tri-level institutional voice.
### Density
Medium-dense to dense. Ledgers and evidence blocks may be compact, but every dense zone is buffered by measured whitespace bands and a visible cap rule, so the page reads as a research-journal issue, not a crowded console.
### Signature Patterns
- Run a thick bone galley rule down the left margin and open every major section with a running mono folio number, binding the page like an issue.
- Cap each section head (number / heading / meta) with a rule, and each major panel with a 3px bone top rule; let rules do the framing, never shadows.
- Signal state with one saffron ink only — a margin inset tick on a flagged module, a highlighter swipe on a single word, the hot segment in a meter.
- Render every quantity as a tick meter: a run of discrete square segments where lit cells count the value and one hot segment marks a peak or flag.
- Lock tables and metadata to one strict measure with mono tabular numerals, hairline separators, and alternating ink bands — no pills, no floating chips.
## 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-019efd5b-cb01-7732-af35-b6cf65bed82c/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 Open every section with a folio number on the margin rail and cap it with a rule.
- Do Keep saffron a single signal — a margin tick, one highlighter swipe, a meter peak — never a wash or a background.
- Do Lock tables and scores to one measure with mono tabular numerals so columns of figures line up.
- Do Frame with the bone galley rule and hairlines; keep corners hard at 0 radius and let depth be the rule.
- Do Pair condensed Archivo display with Spectral serif body and Spline Sans Mono metadata for a tri-level voice.
- Don't Do not default to warm paper or red-black-white; Reglet lives on a warm-ink night desk.
- Don't Do not flood areas with saffron — it loses its registration force.
- Don't Do not replace tick meters with smooth gradient bars or glossy charts.
- Don't Do not float pills and chips, box the nav into a widget, or nest cards.
- Don't Do not center everything symmetrically; the margin rail and editorial asymmetry are the point.
### Accessibility
Body text is 17px bone on warm ink for high contrast; verdict state never relies on colour alone — a mono label (pass / hold / re-test) and a discrete tick count carry the reading. Every form control is explicitly styled with a saffron inset focus bar; the saffron and ink-blue accents stay sparks, never low-contrast text-on-text. Motion respects prefers-reduced-motion by showing the settled, fully-set state instantly.
## Imagery Direction
### Pairs With
reglet-letterpress-rule
### Summary
Imagery uses the letterpress relief technique: subjects pressed hard into warm cotton-rag paper, value built from broken-ink dry-press texture and fine engraved hatching, in a strict two-ink registration with one small saffron spot accent. Heroes are full-bleed worked fields with a calm band of bare paper left open for the overlay.
### Subjects
- composing sticks and locked-up metal type on a press bed
- portraits and avatars as engraved relief prints
- single objects and instruments as print specimens
- skylines and architecture pressed into paper
- review-desk still lifes and tools
### Usage
Use full-bleed relief fields for heroes with the ink mass weighted to one side and bare paper left for the overlay; use centered single-subject print specimens for feature and avatar slots; keep empty-states mostly bare paper with one faint impression.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "reglet",
"type": "registry:theme",
"title": "Reglet shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#1A1714",
"foreground": "#EDE6D6",
"card": "#221E1A",
"card-foreground": "#EDE6D6",
"popover": "#221E1A",
"popover-foreground": "#EDE6D6",
"primary": "#E8A317",
"primary-foreground": "#ffffff",
"secondary": "#221E1A",
"secondary-foreground": "#ffffff",
"muted": "#9A9082",
"muted-foreground": "#EDE6D6",
"accent": "#E8A317",
"accent-foreground": "#ffffff",
"destructive": "#D9694C",
"border": "#3A332C",
"input": "#3A332C",
"ring": "#E8A317",
"chart-1": "#E8A317",
"chart-2": "#221E1A",
"chart-3": "#E8A317",
"chart-4": "#7BAE6E",
"chart-5": "#E8A317",
"sidebar": "#221E1A",
"sidebar-foreground": "#EDE6D6",
"sidebar-primary": "#E8A317",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#7FA6C9",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#3A332C",
"sidebar-ring": "#E8A317",
"radius": "0px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#E8A317",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#E8A317",
"accent-foreground": "#ffffff",
"destructive": "#D9694C",
"border": "#303642",
"input": "#303642",
"ring": "#E8A317",
"chart-1": "#E8A317",
"chart-2": "#221E1A",
"chart-3": "#E8A317",
"chart-4": "#7BAE6E",
"chart-5": "#E8A317",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#E8A317",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#E8A317",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#E8A317",
"radius": "0px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efd5b-cb01-7732-af35-b6cf65bed82c",
"slug": "reglet",
"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",
"background",
"border",
"error",
"info",
"ink_blue",
"muted",
"on_accent",
"primary",
"secondary",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm",
"xl"
],
"shadows": [
"lg",
"md",
"sm",
"tick"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"character",
"duration",
"easing"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A generated style is an aggregate of many influences — credit is given to the artists and traditions it draws on, not a claim of authorship.
Agent-generated
produced by opus-4.8 · sourced by opus-4.8 · images by gpt-image-2
Keep Regletand 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: #1A1714;
--foreground: #EDE6D6;
--card: #221E1A;
--card-foreground: #EDE6D6;
--popover: #221E1A;
--popover-foreground: #EDE6D6;
--primary: #E8A317;
--primary-foreground: #ffffff;
--secondary: #221E1A;
--secondary-foreground: #ffffff;
--muted: #9A9082;
--muted-foreground: #EDE6D6;
--accent: #E8A317;
--accent-foreground: #ffffff;
--destructive: #D9694C;
--border: #3A332C;
--input: #3A332C;
--ring: #E8A317;
--chart-1: #E8A317;
--chart-2: #221E1A;
--chart-3: #E8A317;
--chart-4: #7BAE6E;
--chart-5: #E8A317;
--sidebar: #221E1A;
--sidebar-foreground: #EDE6D6;
--sidebar-primary: #E8A317;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #7FA6C9;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #3A332C;
--sidebar-ring: #E8A317;
--radius: 0px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #E8A317;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #E8A317;
--accent-foreground: #ffffff;
--destructive: #D9694C;
--border: #303642;
--input: #303642;
--ring: #E8A317;
--chart-1: #E8A317;
--chart-2: #221E1A;
--chart-3: #E8A317;
--chart-4: #7BAE6E;
--chart-5: #E8A317;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #E8A317;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #E8A317;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #E8A317;
--radius: 0px;
}
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 RegletShadcnKit() {
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">Reglet</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": "reglet",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Spectral, Georgia, serif",
"font-serif": "Spectral, Georgia, serif",
"font-mono": "Spline Sans Mono, ui-monospace, monospace",
"font-display": "Archivo, system-ui, sans-serif",
"radius": "0px"
},
"light": {
"background": "oklch(0.207 0.008 67.4)",
"foreground": "oklch(0.926 0.023 87.2)",
"card": "oklch(0.238 0.010 67.3)",
"card-foreground": "oklch(0.926 0.023 87.2)",
"popover": "oklch(0.238 0.010 67.3)",
"popover-foreground": "oklch(0.926 0.023 87.2)",
"primary": "oklch(0.763 0.155 77.3)",
"primary-foreground": "oklch(0.207 0.008 67.4)",
"secondary": "oklch(0.238 0.010 67.3)",
"secondary-foreground": "oklch(0.926 0.023 87.2)",
"muted": "oklch(0.185 0.008 67.3)",
"muted-foreground": "oklch(0.658 0.023 76.4)",
"accent": "oklch(0.709 0.067 246.0)",
"accent-foreground": "oklch(0.207 0.008 67.4)",
"destructive": "oklch(0.649 0.148 35.6)",
"destructive-foreground": "oklch(0.926 0.023 87.2)",
"border": "oklch(0.326 0.016 67.2)",
"input": "oklch(0.185 0.008 67.3)",
"ring": "oklch(0.763 0.155 77.3)",
"chart-1": "oklch(0.763 0.155 77.3)",
"chart-2": "oklch(0.709 0.067 246.0)",
"chart-3": "oklch(0.926 0.023 87.2)",
"chart-4": "oklch(0.699 0.105 139.4)",
"chart-5": "oklch(0.649 0.148 35.6)"
},
"dark": {
"background": "oklch(0.185 0.008 67.3)",
"foreground": "oklch(0.926 0.023 87.2)",
"card": "oklch(0.207 0.008 67.4)",
"card-foreground": "oklch(0.926 0.023 87.2)",
"popover": "oklch(0.207 0.008 67.4)",
"popover-foreground": "oklch(0.926 0.023 87.2)",
"primary": "oklch(0.763 0.155 77.3)",
"primary-foreground": "oklch(0.185 0.008 67.3)",
"secondary": "oklch(0.238 0.010 67.3)",
"secondary-foreground": "oklch(0.926 0.023 87.2)",
"muted": "oklch(0.207 0.008 67.4)",
"muted-foreground": "oklch(0.658 0.023 76.4)",
"accent": "oklch(0.709 0.067 246.0)",
"accent-foreground": "oklch(0.185 0.008 67.3)",
"destructive": "oklch(0.649 0.148 35.6)",
"destructive-foreground": "oklch(0.926 0.023 87.2)",
"border": "oklch(0.326 0.016 67.2)",
"input": "oklch(0.185 0.008 67.3)",
"ring": "oklch(0.763 0.155 77.3)",
"chart-1": "oklch(0.763 0.155 77.3)",
"chart-2": "oklch(0.709 0.067 246.0)",
"chart-3": "oklch(0.926 0.023 87.2)",
"chart-4": "oklch(0.699 0.105 139.4)",
"chart-5": "oklch(0.649 0.148 35.6)"
}
}
}
# Reglet shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019efd5b-cb01-7732-af35-b6cf65bed82c`
Slug: `reglet`
## Intent
Reglet is the letterpress review-desk language. A reglet is the thin strip a printer locks between lines to hold the measure true; Reglet makes that strip the interface. Its one ownable idea is the folio rail — a thick bone galley rule that runs down the left margin, numbering every section, capping it with a rule, and ticking one saffron signal where a verdict needs attention. It reinterprets an institutional editorial-review source, but moves it off the warm-paper red-black-white spread onto a warm-ink night desk, where a single saffron ink does all the signaling and scores are typeset, not animated.
## 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:
{
"primary": "#E8A317",
"secondary": "#221E1A",
"accent": "#E8A317",
"background": "#1A1714",
"surface": "#221E1A",
"surface_2": "#15120F",
"text": "#EDE6D6",
"muted": "#9A9082",
"border": "#3A332C",
"on_accent": "#1A1714",
"ink_blue": "#7FA6C9",
"error": "#D9694C",
"success": "#7BAE6E",
"warning": "#E8A317",
"info": "#7FA6C9"
}
Typography:
{
"heading_font": "Archivo",
"body_font": "Spectral",
"mono_font": "Spline Sans Mono",
"base_size": "17px",
"scale_ratio": "1.25",
"line_height": "1.6",
"letter_spacing": "-0.02em",
"heading_weight": "800",
"heading_transform": "none",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Spectral:ital,wght@0,400;0,500;1,400&family=Spline+Sans+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- A thick bone galley rule runs down the left margin and every major section opens with a running mono folio number, so the screen reads as a bound issue rather than a stack of cards.
- Section heads are a folio — number, condensed display heading, and a right-aligned mono meta label — capped by a 1px rule; panels carry a 3px bone top rule.
- One saffron signal ink appears only as a margin inset tick on a flagged module, a highlighter swipe under a single headline word, and the hot segment in a meter.
- Quantities read as tick meters: a run of discrete square segments (lit, unlit, one hot) rather than a smooth bar.
- Tri-level type — Archivo condensed display for scores and titles, Spectral serif for body, Spline Sans Mono for folios, metadata, and tabular numerals — set on a warm press-bed ink ground with bone paper text.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"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/reglet/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: Open every section with a folio number on the margin rail and cap it with a rule.; Keep saffron a single signal — a margin tick, one highlighter swipe, a meter peak — never a wash or a background.; Lock tables and scores to one measure with mono tabular numerals so columns of figures line up.; Frame with the bone galley rule and hairlines; keep corners hard at 0 radius and let depth be the rule.; Pair condensed Archivo display with Spectral serif body and Spline Sans Mono metadata for a tri-level voice.
- Do not: Do not default to warm paper or red-black-white; Reglet lives on a warm-ink night desk.; Do not flood areas with saffron — it loses its registration force.; Do not replace tick meters with smooth gradient bars or glossy charts.; Do not float pills and chips, box the nav into a widget, or nest cards.; Do not center everything symmetrically; the margin rail and editorial asymmetry are the point.
## 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 RegletShadcnKit() {
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">Reglet</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": "A 12-column desktop grid on an 8px base, framed by the folio rail in the left margin; key compositions run 8/4 or 7/5 column splits for editorial asymmetry, hard-aligned left and top.",
"breakpoints": "Desktop 1280px+ keeps 12 columns and the full margin rail. Tablet 768px collapses to a stacked reading order keeping every folio number and cap rule. Mobile 390px folds the rail into the section head (the meta label wraps under the heading), reduces tables to key columns, and never overflows horizontally; the nav wraps, never spills.",
"whitespace": "Large top margins and inter-section bands give institutional breathing room around dense content; the galley rail and cap rules measure the rhythm so whitespace reads as deliberate, not soft.",
"responsive": "Shift from the multi-column margin-railed spread to a single stacked reading column while preserving folio numbers, cap rules, the saffron ticks, and the tri-level type at every breakpoint.",
"breakpoints_map": {
"mobile": "390px",
"tablet": "768px",
"desktop": "1280px",
"wide": "1600px"
}
}
{
"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-019efd5b-cb01-7732-af35-b6cf65bed82c",
"name": "Reglet",
"slug": "reglet"
},
"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": [
"A thick bone galley rule runs down the left margin and every major section opens with a running mono folio number, so the screen reads as a bound issue rather than a stack of cards.",
"Section heads are a folio — number, condensed display heading, and a right-aligned mono meta label — capped by a 1px rule; panels carry a 3px bone top rule.",
"One saffron signal ink appears only as a margin inset tick on a flagged module, a highlighter swipe under a single headline word, and the hot segment in a meter.",
"Quantities read as tick meters: a run of discrete square segments (lit, unlit, one hot) rather than a smooth bar.",
"Tri-level type — Archivo condensed display for scores and titles, Spectral serif for body, Spline Sans Mono for folios, metadata, and tabular numerals — set on a warm press-bed ink ground with bone paper text."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"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": "Reglet 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": [
"Open every section with a folio number on the margin rail and cap it with a rule.",
"Keep saffron a single signal — a margin tick, one highlighter swipe, a meter peak — never a wash or a background.",
"Lock tables and scores to one measure with mono tabular numerals so columns of figures line up.",
"Frame with the bone galley rule and hairlines; keep corners hard at 0 radius and let depth be the rule.",
"Pair condensed Archivo display with Spectral serif body and Spline Sans Mono metadata for a tri-level voice."
],
"dont": [
"Do not default to warm paper or red-black-white; Reglet lives on a warm-ink night desk.",
"Do not flood areas with saffron — it loses its registration force.",
"Do not replace tick meters with smooth gradient bars or glossy charts.",
"Do not float pills and chips, box the nav into a widget, or nest cards.",
"Do not center everything symmetrically; the margin rail and editorial asymmetry are the point."
]
}
}