Typography
headline-lgArchivo · 33px · 700
The quick brown fox jumps
headline-mdArchivo · 27px · 600
The quick brown fox jumps
body-mdSpace Grotesk · 17px · 400
The quick brown fox jumps
label-mdSpace Mono · 12px · 600
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
A deep ink-navy press-room ground carries the page; flat ink plates butt edge to edge across an asymmetric twelve-column mosaic, separated only by blunt 3pt black keylines — a broadsheet contact sheet, not floating cards. The landing opens on a full-viewport Decal Bloom hero whose art bleeds the full frame while a single solid ink band on the left carries the masthead headline overprinted directly onto it, no card. Below, sections never repeat a family: a split lead, a three-channel feature row, a full-bleed deep step band on a dot field, a two-up plate-pricing row, a centred candy CTA. Halftone dots and registration crosses fill the gaps.
Hierarchy from spot colour, ink weight, and a blocky type scale; one tangerine primary action leads each view while cyan, ghost, and muted controls recede. Section heads carry a Space Mono run tag; loud full-width spot ribbons and ink counter chips separate major zones, and the registration cross marks bullets and stats.
High-density but controlled: ornament and halftone dot fields are active structure, but every reading surface is a clean ink-bordered plate with generous internal spacing and AA-legible copy.
The misregistered overprint — two flat ink plates offset until their overlap multiplies into a darker bloom band the palette never declares — plus the recurring registration cross (concentric circle bisected by a plus, centred dot) that signs the masthead, bullets lists, marks stats, and stamps every plate.
12-column max-1180px contained content on a full-bleed ink-navy ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main. Tiles butt edge to edge with zero gutter.
Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with the halftone dot field and registration crosses, never a blank neutral stretch.
medium-to-high
Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.
decal-bloom
Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric registration crosshair targets, screen-print squeegee shapes, stacked die-cut sheets, stars, and halftone dot fields packed edge to edge against a deep ink-navy ground.
One full-bleed Decal Bloom hero per landing; the masthead headline overprints a solid ink band on the left third while the art bleeds the full frame. Below the hero, return to flat CSS ink plates. End every prompt with: NO text, NO letters, NO logos.
# Repère ## Philosophy Repère is a superflat spot-color press for the screen. It reads the same brief that produced Superflat Pop Graphics — flat candy chroma, blunt ink contours, deliberate two-dimensional depthlessness — and answers it as a print shop rather than a sticker sheet. The interface is set up like a four-colour screen run: flat ink plates butted edge to edge across a deep ink-navy press room, bounded by blunt black keylines, with three spot colours offset just enough that a fourth colour blooms where two plates multiply. The registration cross is the system's grammar. ### Values - The misregistered overprint: depth is not shadow but deliberate registration error — two flat plates offset until a third colour blooms in the overlap, a thing no gradient can fake. - Ink-navy ground: a deep press-room ground carries the page and makes spot colour read like wet ink; white is reserved for reading copy, never the ground. - The registration cross as grammar: the concentric circle-and-plus alignment mark is the masthead glyph, the bullet, the divider, and the stamp that signs every plate. - Three spots like highlighters: tangerine, cyan, and lime used like highlighters; ink is the structural neutral and semantic colour stays a small supporting part. - Plates, not panels: hard tiles butt edge to edge separated only by ink keylines, with halftone dots filling quiet air, so the page reads like a broadsheet contact sheet, never a field of floating cards. ### Anti-Values - Defaulting to a white or pale ground, or floating soft rounded cards on a wash. - Gradients, glow, ambient shadow, or any cue of physical depth. - More than three spot colours, or muting them into pastel SaaS tones. - Boxing the nav into a floating pill bar, nesting cards, or putting an accent edge on a plate. - Emoji or symbol glyphs in copy or buttons; large empty neutral stretches that break the poster compression. ### Visual Character - Flat ink plates bounded by a uniform 3pt black keyline on a deep ink-navy ground; two plates offset until their overlap multiplies into a darker bloom band — separation by ink and offset, never by blur. - Concentric registration crosshairs (a circle bisected by a plus, centred dot) drawn as flat inline SVG repeat as the system glyph: masthead mark, bullet, divider, stat marker, and avatar fallback. - Content stacks into hard vertical channels like ink running top to bottom through a screen; tiles butt edge to edge with zero gutter across an asymmetric twelve-column mosaic. - A fine halftone dot field carries the quiet zones and full-bleed deep bands so the page stays packed and poster-like; loud full-width spot ribbons and ink counter chips replace thin dividers; controls are squared ink-bordered spot capsules with Space Mono micro-labels. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#15131F` | | bg_deep | `#100E18` | | surface | `#1E1B2A` | | surface_2 | `#272336` | | ink | `#000000` | | text | `#F4F1E8` | | muted | `#9A93A8` | | on_ground | `#F4F1E8` | | on_ground_muted | `#9A93A8` | | accent | `#FF5A1F` | | accent_2 | `#19C3E6` | | accent_3 | `#B6E021` | | overlap | `#7A3A12` | | on_accent | `#15131F` | | border | `#000000` | | success | `#B6E021` | | warning | `#FFB21A` | | error | `#FF4D5E` | | info | `#19C3E6` | ### Typography - **Base Size**: 17px - **Body Font**: Space Grotesk - **Heading Font**: Archivo - **Display Font**: Archivo Expanded - **Mono Font**: Space Mono - **Heading Weight**: 900 - **Heading Transform**: uppercase - **Letter Spacing**: -0.02em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&family=Archivo+Expanded:wght@700;800;900&family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap ### Radii - **None**: 0 - **Sm**: 0 - **Md**: 0 - **Lg**: 0 - **Full**: 9999px ### Shadows - **None**: none - **Press**: translate(-2px,-2px) on hover; no drop shadow ### Spacing - **Base**: 6px - **Scale**: ["6px","12px","18px","28px","44px","68px","104px"] ### Surfaces - **Ground**: deep ink-navy press room (#15131F), quiet zones carry a fine halftone dot field - **Card**: flat ink plate, 3pt black keyline, 0 radius, no shadow; tiles butt edge to edge - **Rail**: deepest ink (#100E18) for the dashboard rail and full-bleed bands ### Borders - **Default Width**: 3px - **Accent Width**: 3px - **Style**: solid - **Character**: blunt uniform black ink contour on every major plate, like manga line work; never hairline, grey, or an accent edge ### Motion - **Duration**: 150ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: snappy press feel: buttons translate -2px on hover; landing reveals are scroll-triggered on top of a fully-settled no-JS state; respects prefers-reduced-motion ## Rules ### Composition A deep ink-navy press-room ground carries the page; flat ink plates butt edge to edge across an asymmetric twelve-column mosaic, separated only by blunt 3pt black keylines — a broadsheet contact sheet, not floating cards. The landing opens on a full-viewport Decal Bloom hero whose art bleeds the full frame while a single solid ink band on the left carries the masthead headline overprinted directly onto it, no card. Below, sections never repeat a family: a split lead, a three-channel feature row, a full-bleed deep step band on a dot field, a two-up plate-pricing row, a centred candy CTA. Halftone dots and registration crosses fill the gaps. ### Hierarchy Hierarchy from spot colour, ink weight, and a blocky type scale; one tangerine primary action leads each view while cyan, ghost, and muted controls recede. Section heads carry a Space Mono run tag; loud full-width spot ribbons and ink counter chips separate major zones, and the registration cross marks bullets and stats. ### Density High-density but controlled: ornament and halftone dot fields are active structure, but every reading surface is a clean ink-bordered plate with generous internal spacing and AA-legible copy. ### Signature The misregistered overprint — two flat ink plates offset until their overlap multiplies into a darker bloom band the palette never declares — plus the recurring registration cross (concentric circle bisected by a plus, centred dot) that signs the masthead, bullets lists, marks stats, and stamps every plate. ## Layout ### Grid 12-column max-1180px contained content on a full-bleed ink-navy ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main. Tiles butt edge to edge with zero gutter. ### Whitespace Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with the halftone dot field and registration crosses, never a blank neutral stretch. ### Density medium-to-high ### Responsive Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard. ### Breakpoints - **Mobile**: 390px - **Tablet**: 760px - **Desktop**: 1024px - **Wide**: 1700px ## Guidance ### Do - Start from the deep ink-navy ground; let spot colour read like wet ink and white carry the reading. - Give every plate a 3pt ink keyline and a deliberate offset; let two plates bloom a third colour in the overlap. - Use the registration cross as the system's grammar — bullet, divider, stamp, and mark. - Use the three spots like highlighters; keep semantic colour a small supporting part. - Butt tiles edge to edge separated only by ink keylines; fill quiet air with halftone dots; style every form control explicitly. ### Don't - Don't default to a white or pale ground, or float soft rounded cards on a wash. - Don't add gradients, glow, or ambient shadow as a depth cue. - Don't exceed three spot colours or mute them into pastel SaaS tones. - Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a plate. - Don't use emoji or symbol glyphs in copy or buttons — draw inline SVG primitives. ### Accessibility Maintain WCAG AA: paper-white #F4F1E8 on the ink-navy ground, ink-dark #15131F on the spot fills. Spot colour, run tags, and dots never carry information alone — always paired with a text label. Targets at least 44px tall; focus uses a 3px cyan ring; reduced-motion users get instant state changes and no entrance reveal. ## Imagery Direction ### Pairs With decal-bloom ### Summary Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric registration crosshair targets, screen-print squeegee shapes, stacked die-cut sheets, stars, and halftone dot fields packed edge to edge against a deep ink-navy ground. ### Subjects - registration crosshair targets - overlapping misregistered spot-color ink planes - screen-print squeegees and die-cut sheets - halftone dot fields and stars - press-room poster collages ### Usage One full-bleed Decal Bloom hero per landing; the masthead headline overprints a solid ink band on the left third while the art bleeds the full frame. Below the hero, return to flat CSS ink plates. End every prompt with: NO text, NO letters, NO logos.
---
version: "alpha"
name: "Repère"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#15131F"
bg_deep: "#100E18"
surface: "#1E1B2A"
surface_2: "#272336"
ink: "#000000"
text: "#F4F1E8"
muted: "#9A93A8"
on_ground: "#F4F1E8"
on_ground_muted: "#9A93A8"
accent: "#FF5A1F"
accent_2: "#19C3E6"
accent_3: "#B6E021"
overlap: "#7A3A12"
on_accent: "#15131F"
border: "#000000"
success: "#B6E021"
warning: "#FFB21A"
error: "#FF4D5E"
info: "#19C3E6"
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: "Space Grotesk"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Space Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "0px"
lg: "0px"
full: "9999px"
spacing:
base: "6px"
xs: "6px"
sm: "12px"
md: "18px"
lg: "28px"
xl: "44px"
2xl: "68px"
3xl: "104px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-bg_deep:
backgroundColor: "{colors.bg_deep}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-ink:
backgroundColor: "{colors.ink}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-on_ground:
backgroundColor: "{colors.on_ground}"
color-reference-on_ground_muted:
backgroundColor: "{colors.on_ground_muted}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
color-reference-overlap:
backgroundColor: "{colors.overlap}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.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"
---
# Repère
## Overview
Repère is a superflat spot-color press for the screen. It reads the same brief that produced Superflat Pop Graphics — flat candy chroma, blunt ink contours, deliberate two-dimensional depthlessness — and answers it as a print shop rather than a sticker sheet. The interface is set up like a four-colour screen run: flat ink plates butted edge to edge across a deep ink-navy press room, bounded by blunt black keylines, with three spot colours offset just enough that a fourth colour blooms where two plates multiply. The registration cross is the system's grammar.
### Values
- The misregistered overprint: depth is not shadow but deliberate registration error — two flat plates offset until a third colour blooms in the overlap, a thing no gradient can fake.
- Ink-navy ground: a deep press-room ground carries the page and makes spot colour read like wet ink; white is reserved for reading copy, never the ground.
- The registration cross as grammar: the concentric circle-and-plus alignment mark is the masthead glyph, the bullet, the divider, and the stamp that signs every plate.
- Three spots like highlighters: tangerine, cyan, and lime used like highlighters; ink is the structural neutral and semantic colour stays a small supporting part.
- Plates, not panels: hard tiles butt edge to edge separated only by ink keylines, with halftone dots filling quiet air, so the page reads like a broadsheet contact sheet, never a field of floating cards.
### Anti-Values
- Defaulting to a white or pale ground, or floating soft rounded cards on a wash.
- Gradients, glow, ambient shadow, or any cue of physical depth.
- More than three spot colours, or muting them into pastel SaaS tones.
- Boxing the nav into a floating pill bar, nesting cards, or putting an accent edge on a plate.
- Emoji or symbol glyphs in copy or buttons; large empty neutral stretches that break the poster compression.
### Visual Character
- Flat ink plates bounded by a uniform 3pt black keyline on a deep ink-navy ground; two plates offset until their overlap multiplies into a darker bloom band — separation by ink and offset, never by blur.
- Concentric registration crosshairs (a circle bisected by a plus, centred dot) drawn as flat inline SVG repeat as the system glyph: masthead mark, bullet, divider, stat marker, and avatar fallback.
- Content stacks into hard vertical channels like ink running top to bottom through a screen; tiles butt edge to edge with zero gutter across an asymmetric twelve-column mosaic.
- A fine halftone dot field carries the quiet zones and full-bleed deep bands so the page stays packed and poster-like; loud full-width spot ribbons and ink counter chips replace thin dividers; controls are squared ink-bordered spot capsules with Space Mono micro-labels.
## 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 | `#15131F` |
| bg_deep | `#100E18` |
| surface | `#1E1B2A` |
| surface_2 | `#272336` |
| ink | `#000000` |
| text | `#F4F1E8` |
| muted | `#9A93A8` |
| on_ground | `#F4F1E8` |
| on_ground_muted | `#9A93A8` |
| accent | `#FF5A1F` |
| accent_2 | `#19C3E6` |
| accent_3 | `#B6E021` |
| overlap | `#7A3A12` |
| on_accent | `#15131F` |
| border | `#000000` |
| success | `#B6E021` |
| warning | `#FFB21A` |
| error | `#FF4D5E` |
| info | `#19C3E6` |
## 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**: Space Grotesk, 17px, weight 400, line-height 1.5.
- **Label-Md**: Space Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `6px`
- **Xs**: `6px`
- **Sm**: `12px`
- **Md**: `18px`
- **Lg**: `28px`
- **Xl**: `44px`
- **2xl**: `68px`
- **3xl**: `104px`
### Grid
12-column max-1180px contained content on a full-bleed ink-navy ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main. Tiles butt edge to edge with zero gutter.
### Whitespace
Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with the halftone dot field and registration crosses, never a blank neutral stretch.
### Density
medium-to-high
### Responsive
Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 760px
- **Desktop**: 1024px
- **Wide**: 1700px
## Elevation & Depth
### Shadows
- **None**: none
- **Press**: translate(-2px,-2px) on hover; no drop shadow
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`
### Surfaces
- **Ground**: deep ink-navy press room (#15131F), quiet zones carry a fine halftone dot field
- **Card**: flat ink plate, 3pt black keyline, 0 radius, no shadow; tiles butt edge to edge
- **Rail**: deepest ink (#100E18) for the dashboard rail and full-bleed bands
### Borders
- **Default Width**: 3px
- **Accent Width**: 3px
- **Style**: solid
- **Character**: blunt uniform black ink contour on every major plate, like manga line work; never hairline, grey, or an accent edge
## Components
### Composition
A deep ink-navy press-room ground carries the page; flat ink plates butt edge to edge across an asymmetric twelve-column mosaic, separated only by blunt 3pt black keylines — a broadsheet contact sheet, not floating cards. The landing opens on a full-viewport Decal Bloom hero whose art bleeds the full frame while a single solid ink band on the left carries the masthead headline overprinted directly onto it, no card. Below, sections never repeat a family: a split lead, a three-channel feature row, a full-bleed deep step band on a dot field, a two-up plate-pricing row, a centred candy CTA. Halftone dots and registration crosses fill the gaps.
### Hierarchy
Hierarchy from spot colour, ink weight, and a blocky type scale; one tangerine primary action leads each view while cyan, ghost, and muted controls recede. Section heads carry a Space Mono run tag; loud full-width spot ribbons and ink counter chips separate major zones, and the registration cross marks bullets and stats.
### Density
High-density but controlled: ornament and halftone dot fields are active structure, but every reading surface is a clean ink-bordered plate with generous internal spacing and AA-legible copy.
### Signature
The misregistered overprint — two flat ink plates offset until their overlap multiplies into a darker bloom band the palette never declares — plus the recurring registration cross (concentric circle bisected by a plus, centred dot) that signs the masthead, bullets lists, marks stats, and stamps every plate.
## 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-019ef8fb-0221-7550-8d1f-18674d020f49/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 Start from the deep ink-navy ground; let spot colour read like wet ink and white carry the reading.
- Do Give every plate a 3pt ink keyline and a deliberate offset; let two plates bloom a third colour in the overlap.
- Do Use the registration cross as the system's grammar — bullet, divider, stamp, and mark.
- Do Use the three spots like highlighters; keep semantic colour a small supporting part.
- Do Butt tiles edge to edge separated only by ink keylines; fill quiet air with halftone dots; style every form control explicitly.
- Don't Don't default to a white or pale ground, or float soft rounded cards on a wash.
- Don't Don't add gradients, glow, or ambient shadow as a depth cue.
- Don't Don't exceed three spot colours or mute them into pastel SaaS tones.
- Don't Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a plate.
- Don't Don't use emoji or symbol glyphs in copy or buttons — draw inline SVG primitives.
### Accessibility
Maintain WCAG AA: paper-white #F4F1E8 on the ink-navy ground, ink-dark #15131F on the spot fills. Spot colour, run tags, and dots never carry information alone — always paired with a text label. Targets at least 44px tall; focus uses a 3px cyan ring; reduced-motion users get instant state changes and no entrance reveal.
## Imagery Direction
### Pairs With
decal-bloom
### Summary
Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric registration crosshair targets, screen-print squeegee shapes, stacked die-cut sheets, stars, and halftone dot fields packed edge to edge against a deep ink-navy ground.
### Subjects
- registration crosshair targets
- overlapping misregistered spot-color ink planes
- screen-print squeegees and die-cut sheets
- halftone dot fields and stars
- press-room poster collages
### Usage
One full-bleed Decal Bloom hero per landing; the masthead headline overprints a solid ink band on the left third while the art bleeds the full frame. Below the hero, return to flat CSS ink plates. End every prompt with: NO text, NO letters, NO logos.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "repere",
"type": "registry:theme",
"title": "Repère shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#15131F",
"foreground": "#F4F1E8",
"card": "#1E1B2A",
"card-foreground": "#F4F1E8",
"popover": "#1E1B2A",
"popover-foreground": "#F4F1E8",
"primary": "#F4F1E8",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#9A93A8",
"muted-foreground": "#F4F1E8",
"accent": "#FF5A1F",
"accent-foreground": "#ffffff",
"destructive": "#FF4D5E",
"border": "#000000",
"input": "#000000",
"ring": "#FF5A1F",
"chart-1": "#F4F1E8",
"chart-2": "#f4f4f5",
"chart-3": "#FF5A1F",
"chart-4": "#B6E021",
"chart-5": "#FFB21A",
"sidebar": "#1E1B2A",
"sidebar-foreground": "#F4F1E8",
"sidebar-primary": "#F4F1E8",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#19C3E6",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#000000",
"sidebar-ring": "#FF5A1F",
"radius": "0"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#F4F1E8",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#FF5A1F",
"accent-foreground": "#ffffff",
"destructive": "#FF4D5E",
"border": "#303642",
"input": "#303642",
"ring": "#FF5A1F",
"chart-1": "#F4F1E8",
"chart-2": "#f4f4f5",
"chart-3": "#FF5A1F",
"chart-4": "#B6E021",
"chart-5": "#FFB21A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#F4F1E8",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#FF5A1F",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#FF5A1F",
"radius": "0"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef8fb-0221-7550-8d1f-18674d020f49",
"slug": "repere",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"bg_deep",
"border",
"error",
"info",
"ink",
"muted",
"on_accent",
"on_ground",
"on_ground_muted",
"overlap",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"display_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"mono_font"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"none",
"press"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"card",
"ground",
"rail"
],
"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 Repèreand 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: #15131F;
--foreground: #F4F1E8;
--card: #1E1B2A;
--card-foreground: #F4F1E8;
--popover: #1E1B2A;
--popover-foreground: #F4F1E8;
--primary: #F4F1E8;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #9A93A8;
--muted-foreground: #F4F1E8;
--accent: #FF5A1F;
--accent-foreground: #ffffff;
--destructive: #FF4D5E;
--border: #000000;
--input: #000000;
--ring: #FF5A1F;
--chart-1: #F4F1E8;
--chart-2: #f4f4f5;
--chart-3: #FF5A1F;
--chart-4: #B6E021;
--chart-5: #FFB21A;
--sidebar: #1E1B2A;
--sidebar-foreground: #F4F1E8;
--sidebar-primary: #F4F1E8;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #19C3E6;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #000000;
--sidebar-ring: #FF5A1F;
--radius: 0;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #F4F1E8;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #FF5A1F;
--accent-foreground: #ffffff;
--destructive: #FF4D5E;
--border: #303642;
--input: #303642;
--ring: #FF5A1F;
--chart-1: #F4F1E8;
--chart-2: #f4f4f5;
--chart-3: #FF5A1F;
--chart-4: #B6E021;
--chart-5: #FFB21A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #F4F1E8;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #FF5A1F;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #FF5A1F;
--radius: 0;
}
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 RepReShadcnKit() {
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">Repère</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": "repere",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Space Grotesk, sans-serif",
"font-heading": "Archivo, sans-serif",
"font-display": "Archivo Expanded, Archivo, sans-serif",
"font-mono": "Space Mono, monospace",
"radius": "0px"
},
"dark": {
"background": "#15131F",
"foreground": "#F4F1E8",
"card": "#1E1B2A",
"card-foreground": "#F4F1E8",
"popover": "#1E1B2A",
"popover-foreground": "#F4F1E8",
"primary": "#FF5A1F",
"primary-foreground": "#15131F",
"secondary": "#19C3E6",
"secondary-foreground": "#15131F",
"accent": "#B6E021",
"accent-foreground": "#15131F",
"muted": "#272336",
"muted-foreground": "#9A93A8",
"destructive": "#FF4D5E",
"destructive-foreground": "#15131F",
"border": "#000000",
"input": "#000000",
"ring": "#19C3E6",
"chart-1": "#FF5A1F",
"chart-2": "#19C3E6",
"chart-3": "#B6E021",
"chart-4": "#7A3A12",
"chart-5": "#FFB21A"
}
},
"visualProfile": {
"mode": "dark",
"ground": "#15131F",
"surfaceTreatment": "flat ink plate, 3px black keyline, 0 radius, no shadow",
"radius": 0,
"borderWidth": 3,
"borderColor": "#000000",
"shadow": "none",
"accentUsage": "three spot colours used like highlighters; one tangerine primary per view",
"signature": "misregistered overprint bloom + registration-cross glyph",
"ornament": "registration crosshairs and halftone dot fields",
"typography": {
"display": "Archivo Expanded",
"heading": "Archivo",
"body": "Space Grotesk",
"mono": "Space Mono",
"displayTransform": "uppercase",
"letterSpacing": "-0.02em"
}
}
}
# Repère shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef8fb-0221-7550-8d1f-18674d020f49`
Slug: `repere`
## Intent
Repère is a superflat spot-color press for the screen. It reads the same brief that produced Superflat Pop Graphics — flat candy chroma, blunt ink contours, deliberate two-dimensional depthlessness — and answers it as a print shop rather than a sticker sheet. The interface is set up like a four-colour screen run: flat ink plates butted edge to edge across a deep ink-navy press room, bounded by blunt black keylines, with three spot colours offset just enough that a fourth colour blooms where two plates multiply. The registration cross is the system's grammar.
## 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": "#15131F",
"bg_deep": "#100E18",
"surface": "#1E1B2A",
"surface_2": "#272336",
"ink": "#000000",
"text": "#F4F1E8",
"muted": "#9A93A8",
"on_ground": "#F4F1E8",
"on_ground_muted": "#9A93A8",
"accent": "#FF5A1F",
"accent_2": "#19C3E6",
"accent_3": "#B6E021",
"overlap": "#7A3A12",
"on_accent": "#15131F",
"border": "#000000",
"success": "#B6E021",
"warning": "#FFB21A",
"error": "#FF4D5E",
"info": "#19C3E6"
}
Typography:
{
"base_size": "17px",
"body_font": "Space Grotesk",
"heading_font": "Archivo",
"display_font": "Archivo Expanded",
"mono_font": "Space Mono",
"heading_weight": "900",
"heading_transform": "uppercase",
"letter_spacing": "-0.02em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&family=Archivo+Expanded:wght@700;800;900&family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap"
}
## Visual character to preserve
- Flat ink plates bounded by a uniform 3pt black keyline on a deep ink-navy ground; two plates offset until their overlap multiplies into a darker bloom band — separation by ink and offset, never by blur.
- Concentric registration crosshairs (a circle bisected by a plus, centred dot) drawn as flat inline SVG repeat as the system glyph: masthead mark, bullet, divider, stat marker, and avatar fallback.
- Content stacks into hard vertical channels like ink running top to bottom through a screen; tiles butt edge to edge with zero gutter across an asymmetric twelve-column mosaic.
- A fine halftone dot field carries the quiet zones and full-bleed deep bands so the page stays packed and poster-like; loud full-width spot ribbons and ink counter chips replace thin dividers; controls are squared ink-bordered spot capsules with Space Mono micro-labels.
## ShadSync visual profile
{
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/repere/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: Start from the deep ink-navy ground; let spot colour read like wet ink and white carry the reading.; Give every plate a 3pt ink keyline and a deliberate offset; let two plates bloom a third colour in the overlap.; Use the registration cross as the system's grammar — bullet, divider, stamp, and mark.; Use the three spots like highlighters; keep semantic colour a small supporting part.; Butt tiles edge to edge separated only by ink keylines; fill quiet air with halftone dots; style every form control explicitly.
- Do not: Don't default to a white or pale ground, or float soft rounded cards on a wash.; Don't add gradients, glow, or ambient shadow as a depth cue.; Don't exceed three spot colours or mute them into pastel SaaS tones.; Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a plate.; Don't use emoji or symbol glyphs in copy or buttons — draw inline SVG primitives.
## 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 RepReShadcnKit() {
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">Repère</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": "12-column max-1180px contained content on a full-bleed ink-navy ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main. Tiles butt edge to edge with zero gutter.",
"whitespace": "Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with the halftone dot field and registration crosses, never a blank neutral stretch.",
"density": "medium-to-high",
"responsive": "Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.",
"breakpoints": {
"mobile": "390px",
"tablet": "760px",
"desktop": "1024px",
"wide": "1700px"
}
}
{
"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-019ef8fb-0221-7550-8d1f-18674d020f49",
"name": "Repère",
"slug": "repere"
},
"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": [
"Flat ink plates bounded by a uniform 3pt black keyline on a deep ink-navy ground; two plates offset until their overlap multiplies into a darker bloom band — separation by ink and offset, never by blur.",
"Concentric registration crosshairs (a circle bisected by a plus, centred dot) drawn as flat inline SVG repeat as the system glyph: masthead mark, bullet, divider, stat marker, and avatar fallback.",
"Content stacks into hard vertical channels like ink running top to bottom through a screen; tiles butt edge to edge with zero gutter across an asymmetric twelve-column mosaic.",
"A fine halftone dot field carries the quiet zones and full-bleed deep bands so the page stays packed and poster-like; loud full-width spot ribbons and ink counter chips replace thin dividers; controls are squared ink-bordered spot capsules with Space Mono micro-labels."
],
"visualProfile": {
"family": "system",
"material": "flat",
"contour": "default",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Repère 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": [
"Start from the deep ink-navy ground; let spot colour read like wet ink and white carry the reading.",
"Give every plate a 3pt ink keyline and a deliberate offset; let two plates bloom a third colour in the overlap.",
"Use the registration cross as the system's grammar — bullet, divider, stamp, and mark.",
"Use the three spots like highlighters; keep semantic colour a small supporting part.",
"Butt tiles edge to edge separated only by ink keylines; fill quiet air with halftone dots; style every form control explicitly."
],
"dont": [
"Don't default to a white or pale ground, or float soft rounded cards on a wash.",
"Don't add gradients, glow, or ambient shadow as a depth cue.",
"Don't exceed three spot colours or mute them into pastel SaaS tones.",
"Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a plate.",
"Don't use emoji or symbol glyphs in copy or buttons — draw inline SVG primitives."
]
}
}