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.
Alternate dense forensic rows and contact strips with 64-96px frosted-milk silence so the system feels deliberate, not filled. Tight clusters may be 4-8px; unrelated modules separate by 48px or more.
12-column contact-sheet grid with 24px gutters and max width 1320px; the recovery stage spans the wide lane (~7 cols), index and control columns occupy 3 and 2 cols, and black manga gutters may cross grid boundaries.
64-96px section gaps around the largest recovery field, 24-32px panel padding, and 4-8px proximity inside terminal labels and checksum rows.
Quiet overall density with deliberate compression only in forensic tables, thumbnail strips, and checksum readouts; the recovery stage stays spacious like a lab bench under glass.
1440 desktop uses a three-zone console; 768 tablet collapses to stage plus stacked evidence strips; 390 mobile becomes a single-column sequence with the contact strip in horizontal scroll. Only the full-bleed hero spans 100vw.
salvage
Subjects rendered as recovered fragments from a damaged optical disc: halftone sector dots, scan-line interlace, sliced black data-loss scars, dropped white sectors, ghosted concentric arcs, and one archival-blue recovery tint on the most-intact regions, on a frosted milk-white ground.
Use for the landing hero and feature imagery; keep imagery as labelled evidence, never heroic characters or decorative cyberpunk scenes.
# Sector Bureau ## Philosophy Sector Bureau is an optical-archive recovery language for consoles that stabilize damaged discs, memory images, and born-digital evidence. It treats the interface as a forensic contact sheet on a frosted bench: milk-translucent material, near-black registration discipline, one archival blue for active recovery, and small corrupted thumbnails that read as recovered fragments rather than decorative media. ### Values - Evidence before expression: every mark clarifies provenance, lock state, checksum, scan depth, or recovery confidence. - Sector recovery is the signature: a large recovery stage, a contact strip of corrupted fragments, and a checksum band, read in sequence. - Silence as tension: large frosted milk fields make the few archival-blue recovery marks feel operational and consequential. - Material restraint: frosted panes, registration ticks, and optical-sector ghosts evoke recovery hardware without gloss, neon, or candy plastic. - Human traces at the edge: cropped hands, reflections, and disc surfaces appear as recovered evidence, never heroic portraits. - Static trust: the system reads correctly in a still screenshot; motion is limited to scan-depth fills and lock-state steps. ### Anti-Values - No green code rain, glowing cyberpunk HUD rings, or generic hacker command centers. - No three equal SaaS KPI cards, growth charts, or decorative analytics widgets. - No pure-white SaaS ground; pure white is reserved as a dropped sector (absence of data). - No ornamental corruption; every glitch is labelled as a sector, offset, timestamp, or checksum exception. - No saturated archival-blue background wash; blue is reserved for active recovery and selection. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#EEF1F0` | | surface | `#F8FAF9` | | surface_2 | `#FFFFFF` | | text | `#0F1417` | | muted | `#5C6B72` | | border | `#0F1417` | | primary | `#1B5D86` | | secondary | `#DCE7ED` | | accent | `#2F78A5` | | accent_deep | `#1B5D86` | | accent_wash | `#DCE7ED` | | on_accent | `#F8FAF9` | | success | `#4E6E63` | | warning | `#B07A32` | | error | `#9A3C31` | | info | `#2F78A5` | ### Typography - **Base Size**: 17px - **Body Font**: Newsreader - **Heading Font**: Archivo Narrow - **Mono Font**: Fragment Mono - **Heading Weight**: 700 - **Heading Transform**: none - **Letter Spacing**: -0.04em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo+Narrow:wght@500;600;700&family=Fragment+Mono:ital@0;1&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&display=swap ### Radii - **None**: 0px - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 0 1px 0 rgba(15,20,23,0.10) - **Md**: 0 18px 50px rgba(27,93,134,0.10) - **Lg**: 0 34px 90px rgba(15,20,23,0.12) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Ground**: Cool frosted milk (#EEF1F0); pure white reserved as a dropped sector. - **Card Style**: Frosted milk-translucent panes with backdrop blur, square interior corners, inset black L-shaped registration ticks at the corners, and a clipped archival-blue state edge on active panes. No boxed borders. - **Bg Pattern**: Faint optical-disc sector map: concentric lines and radial ticks at 3-5% opacity behind the work area. - **Treatment**: Milk-translucent over cool frosted white, sparse optical-sector linework, no decorative gradient fills. ### Borders - **Default Width**: 0px - **Accent Width**: 3px - **Style**: ticks - **Character**: Structure comes from inset black L-shaped registration ticks and thin clipped archival-blue state edges, not boxed borders. Occasional 2px black manga gutters cut the composition. ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(.2,.0,.1,1) - **Philosophy**: Procedural and nearly absent: scan-depth bars fill and locks step between states; the settled state is the default and visible with no JavaScript; respects prefers-reduced-motion. ## Rules ### Composition - Start with a large asymmetric recovery stage occupying at least half the viewport, then subordinate indexes and controls around it. - Use 2px black manga gutters as structural dividers and a sequential reading path, never as normal card borders. - Allow one major field of silence per screen with only coordinate marks or a single evidence caption. - Keep thumbnails in indexed contact strips with inconsistent damage states, never as lifestyle imagery. - Break the grid with one overhanging optical-sector ghost or cropped pane to avoid dashboard regularity. ### Hierarchy - Display hierarchy comes from compressed Archivo Narrow titles set large with -0.04em tracking and tight leading. - Operational text uses Fragment Mono in uppercase micro-labels, evidence IDs, offsets, timestamps, and checksum rows. - Body explanations use Newsreader at 17px with -0.01em tracking. - Archival blue marks active recovery and selection; near-black marks structure; amber and rust are tiny exception indicators only. ### Density Alternate dense forensic rows and contact strips with 64-96px frosted-milk silence so the system feels deliberate, not filled. Tight clusters may be 4-8px; unrelated modules separate by 48px or more. ### Signature - Inset black L-shaped registration ticks at the corners of every important pane, drawn with pseudo-elements; never a boxed border. - Checksum bands: clipped repeating archival-blue / milk-gray strips attached to active recovery panes. - Corrupted thumbnails: halftone radial dots, sliced black scars, dropped white sectors, timestamp scars, and tiny evidence IDs in a contact-sheet rhythm. - Optical-sector ghosts: oversized concentric arcs and radial ticks at very low opacity, cropped by the viewport and panels. - Lock pills: 9999px read-only state controls. ## Layout ### Grid 12-column contact-sheet grid with 24px gutters and max width 1320px; the recovery stage spans the wide lane (~7 cols), index and control columns occupy 3 and 2 cols, and black manga gutters may cross grid boundaries. ### Whitespace 64-96px section gaps around the largest recovery field, 24-32px panel padding, and 4-8px proximity inside terminal labels and checksum rows. ### Density Quiet overall density with deliberate compression only in forensic tables, thumbnail strips, and checksum readouts; the recovery stage stays spacious like a lab bench under glass. ### Responsive 1440 desktop uses a three-zone console; 768 tablet collapses to stage plus stacked evidence strips; 390 mobile becomes a single-column sequence with the contact strip in horizontal scroll. Only the full-bleed hero spans 100vw. ### Breakpoints - **Mobile**: 390px - **Tablet**: 768px - **Desktop**: 1440px - **Ultrawide**: 2560px ## Guidance ### Do - Keep the ground frosted milk; reserve pure white as a dropped sector. - Name objects with IDs, offsets (LBA), timestamps, lock states, and checksum language. - Let contact strips and manga gutters determine composition before adding components. - Make corruption small, labelled, and material: sliced thumbnails, scar lines, dropped sectors, offset values. - Use one archival blue for active recovery and selection; pair every fault colour with a label. - Mark structure with registration ticks and white space; keep radii square or decisively large. ### Don't - Use neon gradients, green matrix rain, glowing circular HUDs, or cyberpunk city motifs. - Build three equal analytics cards or generic SaaS KPI grids. - Show heroic characters; use cropped hands, reflections, or silhouettes as evidence traces only. - Make corruption decorative without provenance, sector, or timestamp labels. - Use saturated blue as a background wash, or box the nav into a floating pill. - Add gloss, candy plastic, or boxed borders where a registration tick and white space can do the work. ### Accessibility Maintain AA contrast with near-black text on frosted milk; mark selection with blue plus a text or border change, never colour alone; keep micro-labels at 11px or larger; preserve keyboard focus outlines; provide reduced-motion behavior for scan-depth animations; the settled page renders fully with no JavaScript. ## Imagery Direction ### Pairs With salvage ### Summary Subjects rendered as recovered fragments from a damaged optical disc: halftone sector dots, scan-line interlace, sliced black data-loss scars, dropped white sectors, ghosted concentric arcs, and one archival-blue recovery tint on the most-intact regions, on a frosted milk-white ground. ### Subjects - damaged optical disc surfaces - cropped hands holding recovered fragments - contact-sheet thumbnails - reflections and silhouettes as evidence traces - concentric optical-sector geometry ### Usage Use for the landing hero and feature imagery; keep imagery as labelled evidence, never heroic characters or decorative cyberpunk scenes.
---
version: "alpha"
name: "Sector Bureau"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#EEF1F0"
surface: "#F8FAF9"
surface_2: "#FFFFFF"
text: "#0F1417"
muted: "#5C6B72"
border: "#0F1417"
primary: "#1B5D86"
secondary: "#DCE7ED"
accent: "#2F78A5"
accent_deep: "#1B5D86"
accent_wash: "#DCE7ED"
on_accent: "#F8FAF9"
success: "#4E6E63"
warning: "#B07A32"
error: "#9A3C31"
info: "#2F78A5"
typography:
headline-lg:
fontFamily: "Archivo Narrow"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.04em"
headline-md:
fontFamily: "Archivo Narrow"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.04em"
body-md:
fontFamily: "Newsreader"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.04em"
label-md:
fontFamily: "Fragment Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_deep:
backgroundColor: "{colors.accent_deep}"
color-reference-accent_wash:
backgroundColor: "{colors.accent_wash}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.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"
---
# Sector Bureau
## Overview
Sector Bureau is an optical-archive recovery language for consoles that stabilize damaged discs, memory images, and born-digital evidence. It treats the interface as a forensic contact sheet on a frosted bench: milk-translucent material, near-black registration discipline, one archival blue for active recovery, and small corrupted thumbnails that read as recovered fragments rather than decorative media.
### Values
- Evidence before expression: every mark clarifies provenance, lock state, checksum, scan depth, or recovery confidence.
- Sector recovery is the signature: a large recovery stage, a contact strip of corrupted fragments, and a checksum band, read in sequence.
- Silence as tension: large frosted milk fields make the few archival-blue recovery marks feel operational and consequential.
- Material restraint: frosted panes, registration ticks, and optical-sector ghosts evoke recovery hardware without gloss, neon, or candy plastic.
- Human traces at the edge: cropped hands, reflections, and disc surfaces appear as recovered evidence, never heroic portraits.
- Static trust: the system reads correctly in a still screenshot; motion is limited to scan-depth fills and lock-state steps.
### Anti-Values
- No green code rain, glowing cyberpunk HUD rings, or generic hacker command centers.
- No three equal SaaS KPI cards, growth charts, or decorative analytics widgets.
- No pure-white SaaS ground; pure white is reserved as a dropped sector (absence of data).
- No ornamental corruption; every glitch is labelled as a sector, offset, timestamp, or checksum exception.
- No saturated archival-blue background wash; blue is reserved for active recovery and selection.
## 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 | `#EEF1F0` |
| surface | `#F8FAF9` |
| surface_2 | `#FFFFFF` |
| text | `#0F1417` |
| muted | `#5C6B72` |
| border | `#0F1417` |
| primary | `#1B5D86` |
| secondary | `#DCE7ED` |
| accent | `#2F78A5` |
| accent_deep | `#1B5D86` |
| accent_wash | `#DCE7ED` |
| on_accent | `#F8FAF9` |
| success | `#4E6E63` |
| warning | `#B07A32` |
| error | `#9A3C31` |
| info | `#2F78A5` |
## Typography
- **Headline-Lg**: Archivo Narrow, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo Narrow, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Newsreader, 17px, weight 400, line-height 1.5.
- **Label-Md**: Fragment Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Grid
12-column contact-sheet grid with 24px gutters and max width 1320px; the recovery stage spans the wide lane (~7 cols), index and control columns occupy 3 and 2 cols, and black manga gutters may cross grid boundaries.
### Whitespace
64-96px section gaps around the largest recovery field, 24-32px panel padding, and 4-8px proximity inside terminal labels and checksum rows.
### Density
Quiet overall density with deliberate compression only in forensic tables, thumbnail strips, and checksum readouts; the recovery stage stays spacious like a lab bench under glass.
### Responsive
1440 desktop uses a three-zone console; 768 tablet collapses to stage plus stacked evidence strips; 390 mobile becomes a single-column sequence with the contact strip in horizontal scroll. Only the full-bleed hero spans 100vw.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1440px
- **Ultrawide**: 2560px
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(15,20,23,0.10)
- **Md**: 0 18px 50px rgba(27,93,134,0.10)
- **Lg**: 0 34px 90px rgba(15,20,23,0.12)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Ground**: Cool frosted milk (#EEF1F0); pure white reserved as a dropped sector.
- **Card Style**: Frosted milk-translucent panes with backdrop blur, square interior corners, inset black L-shaped registration ticks at the corners, and a clipped archival-blue state edge on active panes. No boxed borders.
- **Bg Pattern**: Faint optical-disc sector map: concentric lines and radial ticks at 3-5% opacity behind the work area.
- **Treatment**: Milk-translucent over cool frosted white, sparse optical-sector linework, no decorative gradient fills.
### Borders
- **Default Width**: 0px
- **Accent Width**: 3px
- **Style**: ticks
- **Character**: Structure comes from inset black L-shaped registration ticks and thin clipped archival-blue state edges, not boxed borders. Occasional 2px black manga gutters cut the composition.
## Components
### Composition
- Start with a large asymmetric recovery stage occupying at least half the viewport, then subordinate indexes and controls around it.
- Use 2px black manga gutters as structural dividers and a sequential reading path, never as normal card borders.
- Allow one major field of silence per screen with only coordinate marks or a single evidence caption.
- Keep thumbnails in indexed contact strips with inconsistent damage states, never as lifestyle imagery.
- Break the grid with one overhanging optical-sector ghost or cropped pane to avoid dashboard regularity.
### Hierarchy
- Display hierarchy comes from compressed Archivo Narrow titles set large with -0.04em tracking and tight leading.
- Operational text uses Fragment Mono in uppercase micro-labels, evidence IDs, offsets, timestamps, and checksum rows.
- Body explanations use Newsreader at 17px with -0.01em tracking.
- Archival blue marks active recovery and selection; near-black marks structure; amber and rust are tiny exception indicators only.
### Density
Alternate dense forensic rows and contact strips with 64-96px frosted-milk silence so the system feels deliberate, not filled. Tight clusters may be 4-8px; unrelated modules separate by 48px or more.
### Signature
- Inset black L-shaped registration ticks at the corners of every important pane, drawn with pseudo-elements; never a boxed border.
- Checksum bands: clipped repeating archival-blue / milk-gray strips attached to active recovery panes.
- Corrupted thumbnails: halftone radial dots, sliced black scars, dropped white sectors, timestamp scars, and tiny evidence IDs in a contact-sheet rhythm.
- Optical-sector ghosts: oversized concentric arcs and radial ticks at very low opacity, cropped by the viewport and panels.
- Lock pills: 9999px read-only state controls.
## 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-019ef81c-9c55-7713-8cfc-eef0ecfa4e44/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 Keep the ground frosted milk; reserve pure white as a dropped sector.
- Do Name objects with IDs, offsets (LBA), timestamps, lock states, and checksum language.
- Do Let contact strips and manga gutters determine composition before adding components.
- Do Make corruption small, labelled, and material: sliced thumbnails, scar lines, dropped sectors, offset values.
- Do Use one archival blue for active recovery and selection; pair every fault colour with a label.
- Do Mark structure with registration ticks and white space; keep radii square or decisively large.
- Don't Use neon gradients, green matrix rain, glowing circular HUDs, or cyberpunk city motifs.
- Don't Build three equal analytics cards or generic SaaS KPI grids.
- Don't Show heroic characters; use cropped hands, reflections, or silhouettes as evidence traces only.
- Don't Make corruption decorative without provenance, sector, or timestamp labels.
- Don't Use saturated blue as a background wash, or box the nav into a floating pill.
- Don't Add gloss, candy plastic, or boxed borders where a registration tick and white space can do the work.
### Accessibility
Maintain AA contrast with near-black text on frosted milk; mark selection with blue plus a text or border change, never colour alone; keep micro-labels at 11px or larger; preserve keyboard focus outlines; provide reduced-motion behavior for scan-depth animations; the settled page renders fully with no JavaScript.
## Imagery Direction
### Pairs With
salvage
### Summary
Subjects rendered as recovered fragments from a damaged optical disc: halftone sector dots, scan-line interlace, sliced black data-loss scars, dropped white sectors, ghosted concentric arcs, and one archival-blue recovery tint on the most-intact regions, on a frosted milk-white ground.
### Subjects
- damaged optical disc surfaces
- cropped hands holding recovered fragments
- contact-sheet thumbnails
- reflections and silhouettes as evidence traces
- concentric optical-sector geometry
### Usage
Use for the landing hero and feature imagery; keep imagery as labelled evidence, never heroic characters or decorative cyberpunk scenes.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "sector-bureau",
"type": "registry:theme",
"title": "Sector Bureau shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#EEF1F0",
"foreground": "#0F1417",
"card": "#F8FAF9",
"card-foreground": "#0F1417",
"popover": "#F8FAF9",
"popover-foreground": "#0F1417",
"primary": "#1B5D86",
"primary-foreground": "#ffffff",
"secondary": "#DCE7ED",
"secondary-foreground": "#111111",
"muted": "#5C6B72",
"muted-foreground": "#0F1417",
"accent": "#2F78A5",
"accent-foreground": "#ffffff",
"destructive": "#9A3C31",
"border": "#0F1417",
"input": "#0F1417",
"ring": "#2F78A5",
"chart-1": "#1B5D86",
"chart-2": "#DCE7ED",
"chart-3": "#2F78A5",
"chart-4": "#4E6E63",
"chart-5": "#B07A32",
"sidebar": "#F8FAF9",
"sidebar-foreground": "#0F1417",
"sidebar-primary": "#1B5D86",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2F78A5",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#0F1417",
"sidebar-ring": "#2F78A5",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1B5D86",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#2F78A5",
"accent-foreground": "#ffffff",
"destructive": "#9A3C31",
"border": "#303642",
"input": "#303642",
"ring": "#2F78A5",
"chart-1": "#1B5D86",
"chart-2": "#DCE7ED",
"chart-3": "#2F78A5",
"chart-4": "#4E6E63",
"chart-5": "#B07A32",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1B5D86",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2F78A5",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#2F78A5",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef81c-9c55-7713-8cfc-eef0ecfa4e44",
"slug": "sector-bureau",
"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_deep",
"accent_wash",
"bg",
"border",
"error",
"info",
"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",
"mono_font"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"ground",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Sector Bureauand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Agent-authored scenes, component recipes, and visual profile rendered on local shadcn-style primitives.
Eleven discs from a born-digital exhibit, read read-only, sector by sector, until the fragments come back.
A form proving mono labels, an invalid end-offset state, a hash-on-write toggle, a pass-count slider, and an acquisition confirm.
A compact queue with rows, menus, tooltips, recovery-state badges, and a queued affordance.
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: #EEF1F0;
--foreground: #0F1417;
--card: #F8FAF9;
--card-foreground: #0F1417;
--popover: #F8FAF9;
--popover-foreground: #0F1417;
--primary: #1B5D86;
--primary-foreground: #ffffff;
--secondary: #DCE7ED;
--secondary-foreground: #111111;
--muted: #5C6B72;
--muted-foreground: #0F1417;
--accent: #2F78A5;
--accent-foreground: #ffffff;
--destructive: #9A3C31;
--border: #0F1417;
--input: #0F1417;
--ring: #2F78A5;
--chart-1: #1B5D86;
--chart-2: #DCE7ED;
--chart-3: #2F78A5;
--chart-4: #4E6E63;
--chart-5: #B07A32;
--sidebar: #F8FAF9;
--sidebar-foreground: #0F1417;
--sidebar-primary: #1B5D86;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2F78A5;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #0F1417;
--sidebar-ring: #2F78A5;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #1B5D86;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #2F78A5;
--accent-foreground: #ffffff;
--destructive: #9A3C31;
--border: #303642;
--input: #303642;
--ring: #2F78A5;
--chart-1: #1B5D86;
--chart-2: #DCE7ED;
--chart-3: #2F78A5;
--chart-4: #4E6E63;
--chart-5: #B07A32;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #1B5D86;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #2F78A5;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #2F78A5;
--radius: 16px;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function SectorBureauShadcnKit() {
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">Sector Bureau</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": "sector-bureau",
"type": "registry:theme",
"title": "Sector Bureau",
"description": "Optical-archive recovery interface. Frosted milk ground (never pure white), near-black registration ink, one archival blue for active recovery and selection. Compressed Archivo Narrow display, Newsreader body, Fragment Mono for IDs/offsets/checksums. Square interior corners, large device glass, 9999px lock pills. No boxed borders — structure comes from inset L-shaped registration ticks, thin clipped blue state edges, and checksum bands.",
"cssVars": {
"theme": {
"font-sans": "Newsreader, Georgia, serif",
"font-mono": "Fragment Mono, ui-monospace, monospace",
"font-display": "Archivo Narrow, Arial Narrow, sans-serif",
"font-heading": "Archivo Narrow, Arial Narrow, sans-serif",
"radius": "0px"
},
"light": {
"background": "#EEF1F0",
"foreground": "#0F1417",
"card": "#F8FAF9",
"card-foreground": "#0F1417",
"popover": "#F8FAF9",
"popover-foreground": "#0F1417",
"primary": "#1B5D86",
"primary-foreground": "#F8FAF9",
"secondary": "#DCE7ED",
"secondary-foreground": "#1B5D86",
"accent": "#2F78A5",
"accent-foreground": "#F8FAF9",
"muted": "#E3E8E7",
"muted-foreground": "#5C6B72",
"destructive": "#9A3C31",
"destructive-foreground": "#F8FAF9",
"success": "#4E6E63",
"warning": "#B07A32",
"info": "#2F78A5",
"border": "transparent",
"input": "#E7ECEB",
"ring": "#2F78A5",
"radius": "0px"
}
}
}
# Sector Bureau shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-agent`
Slug: `sector-bureau`
## Intent
Sector Bureau is an optical-archive recovery language. Through shadcn/ui its one governing idea —
**sector recovery on a forensic contact sheet** — must survive: a frosted milk bench, near-black
registration discipline, one archival blue for what is actively being recovered, and corrupted
fragments that read as salvaged evidence. The ground is frosted milk (`#EEF1F0`), never pure
white; pure white is reserved as a *dropped sector* (the absence of data). Type is compressed
Archivo Narrow display, Newsreader body, and Fragment Mono for IDs, offsets (LBA), checksums and
timestamps. There are **no boxed borders** — structure comes from inset black L-shaped
**registration ticks** at pane corners, thin clipped archival-blue state edges, checksum bands,
and white space. Interior corners are square; device glass is large (16/24px); read-only state
controls are 9999px lock pills. Light mode is the point.
## 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:
```json
{ "primary": "#1B5D86", "accent": "#2F78A5", "background": "#EEF1F0", "surface": "#F8FAF9", "text": "#0F1417", "muted": "#5C6B72", "recess": "#E7ECEB", "secondary": "#DCE7ED", "success": "#4E6E63", "warning": "#B07A32", "error": "#9A3C31", "info": "#2F78A5", "ink": "#0F1417" }
```
Typography:
```json
{ "heading_font": "Archivo Narrow", "body_font": "Newsreader", "mono_font": "Fragment Mono", "letter_spacing": "-0.04em (display) / -0.01em (body)", "base_size": "17px" }
```
## Visual character to preserve
- **The recovery contact sheet**: a large asymmetric recovery stage with an optical-sector ghost
and an archival-blue scan-depth bar, surrounded by a contact strip of corrupted thumbnails and
an evidence ledger.
- **No boxed borders.** Panes are frosted milk, square, lifted by a soft cold shadow; structure
comes from inset black L-shaped registration ticks at the corners and a clipped archival-blue
state edge on active panes. Pure white is a dropped sector, not a surface.
- **Square, not rounded** interior (radius 0); device glass 16/24px; lock pills 9999px. Archival
blue is the active-recovery + selection mark, never a saturated background wash.
- Mono voice for every ID, offset, checksum and timestamp; Archivo Narrow for compressed
display titles; Newsreader for body.
## ShadSync visual profile
```json
{ "family": "console", "material": "frosted-glass", "contour": "registration-ticks", "border": "none", "underlay": true, "grain": true, "stickerBadges": false, "motion": "still", "density": "balanced", "accents": ["accent", "warning", "error"] }
```
## Signature component recipes
### Button
Primary `Button` = deep-recovery `#1B5D86` on frosted milk — the one emphasis; a secondary
variant sits on the quiet recess fill; link is archival blue; a 9999px lock pill carries
read-only state. No `border`; square corners; mono uppercase label; buttons in a set share one
height and shape, label centred. Disabled is a flat recess plaque.
### Card
`Card` is a frosted milk, square, shadow-lifted pane — no boxed border, no top rule. Inset black
L-shaped registration ticks sit at the corners; an active card adds a clipped archival-blue state
edge. Pure white is reserved as a dropped sector, never a card ground. Never nest cards.
### Input and Textarea
`Input` / `Textarea` sit on the cool recess fill (no border); focus draws an archival-blue inset
underline; an invalid field draws a rust inset underline with a labelled fault hint. Mono labels
above; real forensic values (LBA offsets, case IDs) inside.
### Select, Tabs, and Table
`Select` chooses read strategy; `Tabs` switch Recovery / Contact sheet / Ledger with an
archival-blue state edge (not a generic underline); `Table` is the evidence ledger — mono header,
object names in serif, mono offsets and checksums, a quiet blue-tinted zebra surface, a
recovery-state `Badge` per row, and a "queued" empty state. No rule-lines between rows.
### Dialog and Sheet
`Dialog` is a formal notice ("Begin acquisition on DISC-04?") — centered, square, frosted,
generous, with registration ticks and no boxed border; `Sheet` is the disc / chain-of-custody
side rail. Both frosted/ink.
### Badge, Switch, Slider, Tooltip, Separator, Checkbox, Dropdown-menu
`Badge` is a flat recovery-state chip on a faint tint with a leading dot (recovering / stable /
fault / sealed / queued); colour is always paired with a label. `Switch` "on" is archival blue.
`Slider` is an archival-blue track with a square thumb. `Tooltip` is concise serif, frosted.
`Separator` is a 2px black manga gutter or open frosted space — never a hairline rule inside a
card. `Checkbox` and `dropdown-menu` carry an archival-blue checked / origin state and a clear
focus ring; the dropdown's destructive item is "discard read".
## Preview shots
- `application-shell`: the recovery bench — open rail, recovery stage with sector ghost + scan-depth bar, contact strip, evidence ledger.
- `detail-editor`: open a case — labelled fields, an invalid (rust) end-offset state, a hash-on-write switch, a pass-count slider, an acquisition confirm.
- `data-operations`: the disc queue — rows, dropdown actions, recovery-state badges, a queued state.
- Each preview shot carries a renderable `scene` (headline, description, actions, rows/fields/stats).
## Implementation contract
- Start from the local `@/components/ui/*` shadcn primitives; do not create a second component system.
- Apply `/katagami/shadcn/sector-bureau/registry-theme.json` variables first, then compose with these recipes.
- Keep Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: keep the ground frosted milk; mark structure with registration ticks and white space;
reserve archival blue for active recovery; pair fault colours with labels; set IDs/offsets in mono.
- Do not: box cards in borders, top rules, or accent edges; default to pure-white grounds; round
interior corners; build three equal SaaS KPI cards; use a saturated blue background wash.
## Copy-paste component example
```tsx
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
// An evidence card: frosted milk, square, shadow-lifted, no boxed border. Inset L-shaped
// registration ticks mark the corners; a clipped archival-blue edge marks active recovery;
// mono caption carries the offset + checksum.
export function EvidenceCard() {
return (
<Card className="relative overflow-hidden rounded-none border-0 bg-card text-card-foreground shadow-lg
before:absolute before:left-2 before:top-2 before:h-3 before:w-3 before:border-l before:border-t before:border-foreground
after:absolute after:bottom-2 after:right-2 after:h-3 after:w-3 after:border-b after:border-r after:border-foreground">
<div className="absolute inset-y-3 left-0 w-[3px] bg-[var(--accent)]" aria-hidden />
<div className="p-6">
<CardHeader className="p-0">
<Badge className="w-fit gap-1.5 rounded-full bg-[#DCE7ED] text-[#1B5D86]">Recovering</Badge>
<CardTitle className="mt-2 font-[var(--font-display)] text-2xl tracking-tight">
Photograph, harbour dredge
</CardTitle>
<CardDescription className="font-mono text-xs uppercase tracking-wider">
DISC-04 · LBA 0x00 2F1A · checksum a4f9…01c
</CardDescription>
</CardHeader>
<CardContent className="px-0 pt-3">
<p className="text-base text-muted-foreground">Outer-ring delamination; read read-only, 18,902 passes.</p>
</CardContent>
<CardFooter className="justify-between px-0">
<span className="font-mono text-xs text-muted-foreground">73.4% recovered</span>
<Button className="rounded-none">Reseat & re-read</Button>
</CardFooter>
</div>
</Card>
);
}
```
## Layout notes
```json
{ "grid": "contact-sheet 12-col; a wide recovery-stage lane (~7 cols) with narrow index/control columns (3/2)", "density": "balanced; spacious stage, compressed forensic tables and checksum rows", "radii": "0 (square interior) / 16-24 (device glass) / 9999 (lock pills)", "no_borders": true, "separators": "inset registration ticks, white space, 2px black manga gutters, a clipped archival-blue state edge" }
```
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"author": "katagami-agent",
"generatedBy": "katagami-agent",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": { "id": "", "name": "Sector Bureau", "slug": "sector-bureau" },
"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": [
"Frosted milk ground (#EEF1F0), never pure white; pure white is reserved as a dropped sector (absence of data).",
"No boxed borders: panes carry inset black L-shaped registration ticks at the corners and thin clipped archival-blue state edges; structure is ticks + white space, not rules.",
"One archival blue (#2F78A5) for active recovery and selection only; near-black ink for structure; amber and rust are tiny exception indicators. Mono (Fragment Mono) carries IDs, offsets, checksums and timestamps."
],
"visualProfile": {
"family": "console",
"material": "frosted-glass",
"contour": "registration-ticks",
"border": "none",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "still",
"density": "balanced",
"accents": ["accent", "warning", "error"]
},
"shots": [
{
"id": "application-shell",
"title": "The recovery bench",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "An optical-archive recovery console: an open compositor rail, a large recovery stage card with an optical-sector ghost and an archival-blue scan-depth bar, a contact strip of corrupted thumbnails, and an evidence ledger table with recovery state badges.",
"mustShow": ["deep-recovery primary action vs quiet recess secondary action", "frosted milk cards with inset registration ticks and a clipped blue state edge (no boxed borders)", "archival-blue / amber / rust state badges with a label, never colour alone", "mono evidence IDs, offsets and checksums on a frosted ledger"],
"avoid": ["boxed borders, divider hairlines, or accent edges around whole cards", "pure-white card grounds", "three equal SaaS KPI cards", "neon, glow, or saturated blue background washes"],
"scene": {
"eyebrow": "the bench",
"headline": "Recovery bench — case BR-2291",
"description": "Eleven discs from a born-digital exhibit, read read-only, sector by sector, until the fragments come back.",
"primaryAction": "Reseat & re-read",
"secondaryAction": "Map bad sectors",
"stats": [
{ "label": "sectors recovered", "value": "73.4%", "tone": "accent" },
{ "label": "read passes", "value": "18,902", "tone": "default" },
{ "label": "sector faults", "value": "3", "tone": "error" }
],
"rows": [
{ "label": "Photograph, harbour dredge", "value": "0x00 2F1A · 1999-08-14", "status": "recovering" },
{ "label": "Voice memo, slip 12", "value": "0x00 7B40 · 2001-03-02", "status": "stable" },
{ "label": "Scan, manifest page 3", "value": "0x01 0C88 · fault", "status": "fault" },
{ "label": "Photograph, crew, fore deck", "value": "0x01 9E20 · sealed", "status": "sealed" }
],
"statuses": ["Recovering", "Stable", "Fault", "Sealed"]
}
},
{
"id": "detail-editor",
"title": "Open a recovery case",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "An acquisition form: mono-labelled fields on a recess fill, an invalid (rust underline) end-offset state, a read-strategy select, a hash-on-write switch, a pass-count slider, and a 'begin acquisition' confirm dialog.",
"mustShow": ["archival-blue focus underline on inputs", "an invalid (rust) underline state with a labelled fault hint", "begin-acquisition confirm dialog as a formal notice (frosted, square, no boxed border)", "real forensic values (LBA offsets, case IDs)"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "rounded inputs", "pure-white grounds"],
"scene": {
"eyebrow": "the bench",
"headline": "Open a case — mount DISC-04 read-only",
"description": "A form proving mono labels, an invalid end-offset state, a hash-on-write toggle, a pass-count slider, and an acquisition confirm.",
"primaryAction": "Begin acquisition",
"secondaryAction": "Dry-run index",
"fields": [
{ "label": "Case identifier", "value": "BR-2291", "type": "text" },
{ "label": "End offset (LBA)", "value": "0x00 0000 — precedes start; range is empty", "type": "invalid" },
{ "label": "Read strategy", "value": "Conservative, 64 passes", "type": "select" },
{ "label": "Hash on write", "value": "on", "type": "switch" }
],
"statuses": ["Recovering", "Invalid", "Hashed"]
}
},
{
"id": "data-operations",
"title": "Disc queue",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow disc queue: stacked mono rows, per-row dropdown actions (remap, reseat, seal), recovery-state badges, tooltips, and a queued empty state.",
"mustShow": ["responsive reflow to a single column", "mono disc rows with offsets", "row action menu with an archival-blue origin marker and a destructive 'discard read' item", "recovery-state badges", "a queued empty state"],
"avoid": ["desktop-only tables", "text overflow", "generic shadcn spacing without Sector Bureau registration ticks"],
"scene": {
"eyebrow": "queue",
"headline": "Disc queue",
"description": "A compact queue with rows, menus, tooltips, recovery-state badges, and a queued affordance.",
"primaryAction": "Reseat",
"secondaryAction": "Filter",
"rows": [
{ "label": "DISC-04 · outer", "value": "73%", "status": "recovering" },
{ "label": "DISC-03 · core", "value": "100%", "status": "stable" },
{ "label": "DISC-08 · rim", "value": "fault", "status": "fault" },
{ "label": "DISC-06 · rim", "value": "queued", "status": "queued" }
],
"statuses": ["Recovering", "Stable", "Fault", "Queued"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Hierarchy: deep-recovery (#1B5D86) primary = the one emphasis; quiet recess-grey secondary; archival-blue link; a 9999px lock pill for read-only state. Square corners, no border, mono uppercase label, one shared height." },
{ "primitive": "card", "intent": "Frosted milk pane (never pure white), lifted by a soft cold shadow, no boxed border; inset black L-shaped registration ticks at the corners; an active card adds a clipped archival-blue state edge. Never nest cards." },
{ "primitive": "input", "intent": "Recess fill, no border; archival-blue inset underline on focus, rust inset underline when invalid; square corners; mono label above; real LBA offsets and case IDs inside." },
{ "primitive": "textarea", "intent": "Custodian notes with the same focus + invalid rhythm; serif body, generous, square." },
{ "primitive": "select", "intent": "Read-strategy / desk filtering with a square trigger and a clear archival-blue selection." },
{ "primitive": "dialog", "intent": "A formal 'Begin acquisition on DISC-04?' notice — centered, square, frosted, generous; registration ticks, no boxed border." },
{ "primitive": "sheet", "intent": "The disc / chain-of-custody side rail for contextual review." },
{ "primitive": "tabs", "intent": "Switch Recovery / Contact sheet / Ledger; the active tab carries an archival-blue state edge, not a generic underline rule." },
{ "primitive": "badge", "intent": "Flat recovery-state chip on a faint tint with a leading dot: recovering / stable / fault / sealed / queued (blue / green / rust / ink). Colour is always paired with a label." },
{ "primitive": "separator", "intent": "A 2px black manga gutter or open frosted space — never a hairline rule trapped inside a card." },
{ "primitive": "checkbox", "intent": "Custody opt-ins with an archival-blue checked state and a clear focus ring." },
{ "primitive": "switch", "intent": "Hash-on-write / carry-to-custody toggle; on is archival blue, off is a flat recess track." },
{ "primitive": "slider", "intent": "Pass count / scan depth with an archival-blue track and a square thumb." },
{ "primitive": "tooltip", "intent": "Concise serif notes above compact controls; frosted, square." },
{ "primitive": "dropdown-menu", "intent": "Per-disc actions (remap, reseat, seal) with an archival-blue origin marker and a destructive 'discard read' item." },
{ "primitive": "table", "intent": "The evidence ledger: mono header, object names in serif, mono offsets and checksums, a quiet blue-tinted zebra surface, a recovery-state badge per row, a 'queued' empty state. No rule-lines between rows." }
],
"qualityRules": {
"do": [
"Keep the ground frosted milk; reserve pure white as a dropped sector.",
"Mark structure with inset registration ticks and white space, not boxed borders.",
"Reserve archival blue for active recovery and selection; pair every fault colour with a label.",
"Set IDs, offsets, checksums and timestamps in Fragment Mono; everything else in Newsreader / Archivo Narrow."
],
"dont": [
"Box whole cards in borders, divider hairlines, top rules, or accent edges.",
"Default to pure-white grounds or round the interior corners.",
"Build three equal SaaS KPI cards or use a saturated blue background wash.",
"Make corruption decorative without a sector, offset, or timestamp label."
]
}
}