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.
Keep the interface scene-specific — a fictional bungu buying workspace, not a dashboard or component inventory. Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows. Limit brand accents to tag red, shelf blue, and warm ochre; place category colour on tabs, rails, and tiny tags, never as a large background field. Use the warm paper floor and clipped paper-tag shapes as structural identity so the system survives palette swaps.
Fraunces display headings carry shop-sign presence at tight tracking; IBM Plex Sans body copy holds precise retail legibility at 17px; IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata. Aisle-marker rails and active tabs provide wayfinding before colour-filled buttons do. Tables are compact and ruled like inventory sheets while cards stay airy like shelves.
Comfortable browsing by default with one dense inventory ledger; related label clusters sit at 4-8px while sections breathe at 64-96px.
Paper price-tag badges built with a clip-path notch plus a ::before punch hole, using mono numerals; a detached 3px aisle-marker rail under section titles; an asymmetric shelf grid with a featured card; a faint paper-dot floor repeated behind every surface; and a 180ms retail-pickup lift/press across cards and controls.
12 columns desktop, max-width 1320px; a featured shelf card spans two columns to break even rows; 24px gutters desktop, 16px mobile.
Outer margins generous like store aisles; tag clusters tight like labels attached to products. Card padding 24-32px; major scene bands separated by 64px+.
comfortable
Desktop is a full shelf workspace with a side control rail; tablet drops to a two-column shelf; mobile is a single-column product flow that hides the aisle/par columns and secondary nav, never overflowing horizontally.
tagboard
Tagboard tagged flat-lay product photography: the subject shot top-down or in clean front elevation on a warm off-white paper ground with a faint paper-dot grain, soft crisp studio light, annotated with clipped paper price-tags (notched corner, round punched hole) and round stickers carrying terse mono labels, accent reserved to the tags like aisle markers, the subject and its tags filling the frame.
One full-bleed tagged flat-lay hero per landing (warm paper, paper price-tags in muted red/blue/ochre), composed so a paper overlay panel can sit over the lower-left; smaller subjects as feature splits and spot product shots.
# Manila ## Philosophy Manila translates the bright order of a bungu (stationery) shop floor into product software: white shelf cards lifted off a warm paper floor, gridded browsing, and prices and SKUs riding on tactile paper price-tags, with a little category colour used like an aisle marker rather than decoration. Cheerful but never childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry. ### Values - Shelf order: products and controls line up like stock on a clean retail fixture, with browsing rhythm made of rows, gutters, and consistent sightlines. - Tactile labeling: metadata appears as paper price-tags, stickers, and small slips rather than generic SaaS chips. - Bright restraint: a warm paper floor and warm-white shelves dominate while a few desaturated category colours punctuate wayfinding and state. - Retail clarity: prices, counts, availability, and actions read at a glance without decorative clutter. - Snappy handling: hover and focus feel like lifting a product from a shelf, quick and tactile. - Friendly precision: forms, tables, and filters stay exact but use approachable shapes and paper-store details. ### Anti-Values - Generic analytics dashboards or component-catalog layouts with abstract cards. - Rainbow maximalism where every control competes for attention. - Dark dramatic surfaces that contradict a well-lit shop floor. - Browser-default form elements or unstyled commerce controls. - Flat white SaaS grounds and grey utilitarian borders that lose the warm paper character. ### Visual Character - A warm paper floor (#F4EFE6) with a faint paper-dot grain sits behind warm-white shelf cards lifted by soft shadow, so surfaces read as bright paper displays rather than grey panels. - Section headers carry a separate flat 3px aisle-marker rail under the title, never a one-sided border on a rounded card, building visible wayfinding in CSS. - Metadata badges use paper price-tag geometry — a clip-path notch and a circular punch made by pseudo-elements — pairing IBM Plex Mono numerals with warm paper colours. - Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards lock to even rows, preserving retail order without equal-card monotony. - Interactions lift translateY(-2px) and press translateY(1px) on one 180ms retail snap, so cards and buttons feel physically picked up from the shelf. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#F4EFE6` | | surface | `#FFFFFF` | | surface_2 | `#FBF8F1` | | text | `#211D1A` | | muted | `#6F6860` | | border | `#E7DFD4` | | accent | `#D94F45` | | accent_2 | `#3F6FA8` | | accent_3 | `#D8A529` | | on_accent | `#FFFFFF` | | red_tint | `#FBE9E7` | | blue_tint | `#E9F0F7` | | ochre_tint | `#FAF1DC` | | success | `#3F7A55` | | warning | `#B87922` | | error | `#B8423D` | | info | `#3F6FA8` | ### Typography - **Base Size**: 17px - **Body Font**: IBM Plex Sans - **Heading Font**: Fraunces - **Mono Font**: IBM Plex Mono - **Heading Weight**: 600 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0px - **Sm**: 0px - **Md**: 16px - **Lg**: 24px - **Default**: 16px - **Full**: 9999px ### Shadows - **Sm**: 0 1px 2px rgba(33,29,26,0.05) - **Md**: 0 8px 24px rgba(33,29,26,0.08) - **Lg**: 0 18px 42px rgba(33,29,26,0.10) ### Spacing - **Base**: 4px - **Scale**: [4,8,12,16,24,32,48,64,96] ### Surfaces - **Treatment**: warm paper floor with flat warm-white shelf cards, a faint paper-dot grain, and no gradients - **Card Style**: warm-white 16px shelf cards lifted by a restrained shadow, no border - **Bg Pattern**: faint 22px radial paper-dot grain on the warm floor ### Borders - **Default Width**: 0 - **Accent Width**: 3px - **Style**: none - **Character**: No borders on cards — separation is soft shadow, warm surface zebra, and the warm floor. The only colour edge is the detached 3px aisle-marker rail under a section title, never a one-sided edge on a rounded component. ### Motion - **Duration**: 180ms - **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1) - **Philosophy**: snappy retail handling: cards lift 2px, buttons press 1px, no bounce ## Rules ### Composition Keep the interface scene-specific — a fictional bungu buying workspace, not a dashboard or component inventory. Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows. Limit brand accents to tag red, shelf blue, and warm ochre; place category colour on tabs, rails, and tiny tags, never as a large background field. Use the warm paper floor and clipped paper-tag shapes as structural identity so the system survives palette swaps. ### Hierarchy Fraunces display headings carry shop-sign presence at tight tracking; IBM Plex Sans body copy holds precise retail legibility at 17px; IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata. Aisle-marker rails and active tabs provide wayfinding before colour-filled buttons do. Tables are compact and ruled like inventory sheets while cards stay airy like shelves. ### Density Comfortable browsing by default with one dense inventory ledger; related label clusters sit at 4-8px while sections breathe at 64-96px. ### Signature Paper price-tag badges built with a clip-path notch plus a ::before punch hole, using mono numerals; a detached 3px aisle-marker rail under section titles; an asymmetric shelf grid with a featured card; a faint paper-dot floor repeated behind every surface; and a 180ms retail-pickup lift/press across cards and controls. ## Layout ### Grid 12 columns desktop, max-width 1320px; a featured shelf card spans two columns to break even rows; 24px gutters desktop, 16px mobile. ### Whitespace Outer margins generous like store aisles; tag clusters tight like labels attached to products. Card padding 24-32px; major scene bands separated by 64px+. ### Density comfortable ### Responsive Desktop is a full shelf workspace with a side control rail; tablet drops to a two-column shelf; mobile is a single-column product flow that hides the aisle/par columns and secondary nav, never overflowing horizontally. ### Breakpoints - **Desktop**: 1440 - **Tablet**: 900 - **Mobile**: 560 ## Guidance ### Do - Lift warm-white shelf cards off the warm paper floor with soft shadow and near-invisible separation. - Keep category colours attached to tabs, rails, and tags rather than broad panels. - Use Fraunces for display signage and IBM Plex Sans for all transactional text. - Build price and SKU metadata as notched paper tags with mono numerals. - Break a repeated grid with one featured shelf product or inset panel. - Style every input, select, checkbox, switch, slider, tab, and pagination control explicitly. ### Don't - Default to a flat white SaaS ground or grey utilitarian borders. - Pour an accent across a panel, or give a card a single accent edge. - Use a one-sided border to do the aisle rail's job. - Use saturated rainbow fills or more than three brand accent colours. - Create a generic analytics dashboard, CRM view, or component catalog. - Leave native browser select, checkbox, or radio styling visible. ### Accessibility AA contrast for body text and controls; category labels always carry text, never colour alone; focus draws a 2px shelf-blue ring; prefers-reduced-motion disables every transform and the fully-settled page renders with no JavaScript. ## Imagery Direction ### Pairs With tagboard ### Summary Tagboard tagged flat-lay product photography: the subject shot top-down or in clean front elevation on a warm off-white paper ground with a faint paper-dot grain, soft crisp studio light, annotated with clipped paper price-tags (notched corner, round punched hole) and round stickers carrying terse mono labels, accent reserved to the tags like aisle markers, the subject and its tags filling the frame. ### Subjects - a tidy bungu stationery flat-lay - a teapot - a reader in profile - a city block - a potted plant ### Usage One full-bleed tagged flat-lay hero per landing (warm paper, paper price-tags in muted red/blue/ochre), composed so a paper overlay panel can sit over the lower-left; smaller subjects as feature splits and spot product shots.
---
version: "alpha"
name: "Manila"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#F4EFE6"
surface: "#FFFFFF"
surface_2: "#FBF8F1"
text: "#211D1A"
muted: "#6F6860"
border: "#E7DFD4"
accent: "#D94F45"
accent_2: "#3F6FA8"
accent_3: "#D8A529"
on_accent: "#FFFFFF"
red_tint: "#FBE9E7"
blue_tint: "#E9F0F7"
ochre_tint: "#FAF1DC"
success: "#3F7A55"
warning: "#B87922"
error: "#B8423D"
info: "#3F6FA8"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "0px"
md: "16px"
lg: "24px"
default: "16px"
full: "9999px"
spacing:
base: "4px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-red_tint:
backgroundColor: "{colors.red_tint}"
color-reference-blue_tint:
backgroundColor: "{colors.blue_tint}"
color-reference-ochre_tint:
backgroundColor: "{colors.ochre_tint}"
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"
---
# Manila
## Overview
Manila translates the bright order of a bungu (stationery) shop floor into product software: white shelf cards lifted off a warm paper floor, gridded browsing, and prices and SKUs riding on tactile paper price-tags, with a little category colour used like an aisle marker rather than decoration. Cheerful but never childish; its restraint comes from commercial display logic, price-tag utility, and repeated shelf geometry.
### Values
- Shelf order: products and controls line up like stock on a clean retail fixture, with browsing rhythm made of rows, gutters, and consistent sightlines.
- Tactile labeling: metadata appears as paper price-tags, stickers, and small slips rather than generic SaaS chips.
- Bright restraint: a warm paper floor and warm-white shelves dominate while a few desaturated category colours punctuate wayfinding and state.
- Retail clarity: prices, counts, availability, and actions read at a glance without decorative clutter.
- Snappy handling: hover and focus feel like lifting a product from a shelf, quick and tactile.
- Friendly precision: forms, tables, and filters stay exact but use approachable shapes and paper-store details.
### Anti-Values
- Generic analytics dashboards or component-catalog layouts with abstract cards.
- Rainbow maximalism where every control competes for attention.
- Dark dramatic surfaces that contradict a well-lit shop floor.
- Browser-default form elements or unstyled commerce controls.
- Flat white SaaS grounds and grey utilitarian borders that lose the warm paper character.
### Visual Character
- A warm paper floor (#F4EFE6) with a faint paper-dot grain sits behind warm-white shelf cards lifted by soft shadow, so surfaces read as bright paper displays rather than grey panels.
- Section headers carry a separate flat 3px aisle-marker rail under the title, never a one-sided border on a rounded card, building visible wayfinding in CSS.
- Metadata badges use paper price-tag geometry — a clip-path notch and a circular punch made by pseudo-elements — pairing IBM Plex Mono numerals with warm paper colours.
- Product cards form an asymmetric shelf: one featured wide card interrupts the grid while smaller cards lock to even rows, preserving retail order without equal-card monotony.
- Interactions lift translateY(-2px) and press translateY(1px) on one 180ms retail snap, so cards and buttons feel physically picked up from the shelf.
## 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 | `#F4EFE6` |
| surface | `#FFFFFF` |
| surface_2 | `#FBF8F1` |
| text | `#211D1A` |
| muted | `#6F6860` |
| border | `#E7DFD4` |
| accent | `#D94F45` |
| accent_2 | `#3F6FA8` |
| accent_3 | `#D8A529` |
| on_accent | `#FFFFFF` |
| red_tint | `#FBE9E7` |
| blue_tint | `#E9F0F7` |
| ochre_tint | `#FAF1DC` |
| success | `#3F7A55` |
| warning | `#B87922` |
| error | `#B8423D` |
| info | `#3F6FA8` |
## Typography
- **Headline-Lg**: Fraunces, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `4px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Grid
12 columns desktop, max-width 1320px; a featured shelf card spans two columns to break even rows; 24px gutters desktop, 16px mobile.
### Whitespace
Outer margins generous like store aisles; tag clusters tight like labels attached to products. Card padding 24-32px; major scene bands separated by 64px+.
### Density
comfortable
### Responsive
Desktop is a full shelf workspace with a side control rail; tablet drops to a two-column shelf; mobile is a single-column product flow that hides the aisle/par columns and secondary nav, never overflowing horizontally.
### Breakpoints
- **Desktop**: 1440
- **Tablet**: 900
- **Mobile**: 560
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 2px rgba(33,29,26,0.05)
- **Md**: 0 8px 24px rgba(33,29,26,0.08)
- **Lg**: 0 18px 42px rgba(33,29,26,0.10)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Default**: `16px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: warm paper floor with flat warm-white shelf cards, a faint paper-dot grain, and no gradients
- **Card Style**: warm-white 16px shelf cards lifted by a restrained shadow, no border
- **Bg Pattern**: faint 22px radial paper-dot grain on the warm floor
### Borders
- **Default Width**: 0
- **Accent Width**: 3px
- **Style**: none
- **Character**: No borders on cards — separation is soft shadow, warm surface zebra, and the warm floor. The only colour edge is the detached 3px aisle-marker rail under a section title, never a one-sided edge on a rounded component.
## Components
### Composition
Keep the interface scene-specific — a fictional bungu buying workspace, not a dashboard or component inventory. Use an asymmetric shelf grid with one featured product card spanning two columns and smaller cards locked to even rows. Limit brand accents to tag red, shelf blue, and warm ochre; place category colour on tabs, rails, and tiny tags, never as a large background field. Use the warm paper floor and clipped paper-tag shapes as structural identity so the system survives palette swaps.
### Hierarchy
Fraunces display headings carry shop-sign presence at tight tracking; IBM Plex Sans body copy holds precise retail legibility at 17px; IBM Plex Mono appears only for SKUs, prices, pagination, and tag metadata. Aisle-marker rails and active tabs provide wayfinding before colour-filled buttons do. Tables are compact and ruled like inventory sheets while cards stay airy like shelves.
### Density
Comfortable browsing by default with one dense inventory ledger; related label clusters sit at 4-8px while sections breathe at 64-96px.
### Signature
Paper price-tag badges built with a clip-path notch plus a ::before punch hole, using mono numerals; a detached 3px aisle-marker rail under section titles; an asymmetric shelf grid with a featured card; a faint paper-dot floor repeated behind every surface; and a 180ms retail-pickup lift/press across cards and 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-019ef9b2-0f80-7742-8d14-4d735d03e80e/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 Lift warm-white shelf cards off the warm paper floor with soft shadow and near-invisible separation.
- Do Keep category colours attached to tabs, rails, and tags rather than broad panels.
- Do Use Fraunces for display signage and IBM Plex Sans for all transactional text.
- Do Build price and SKU metadata as notched paper tags with mono numerals.
- Do Break a repeated grid with one featured shelf product or inset panel.
- Do Style every input, select, checkbox, switch, slider, tab, and pagination control explicitly.
- Don't Default to a flat white SaaS ground or grey utilitarian borders.
- Don't Pour an accent across a panel, or give a card a single accent edge.
- Don't Use a one-sided border to do the aisle rail's job.
- Don't Use saturated rainbow fills or more than three brand accent colours.
- Don't Create a generic analytics dashboard, CRM view, or component catalog.
- Don't Leave native browser select, checkbox, or radio styling visible.
### Accessibility
AA contrast for body text and controls; category labels always carry text, never colour alone; focus draws a 2px shelf-blue ring; prefers-reduced-motion disables every transform and the fully-settled page renders with no JavaScript.
## Imagery Direction
### Pairs With
tagboard
### Summary
Tagboard tagged flat-lay product photography: the subject shot top-down or in clean front elevation on a warm off-white paper ground with a faint paper-dot grain, soft crisp studio light, annotated with clipped paper price-tags (notched corner, round punched hole) and round stickers carrying terse mono labels, accent reserved to the tags like aisle markers, the subject and its tags filling the frame.
### Subjects
- a tidy bungu stationery flat-lay
- a teapot
- a reader in profile
- a city block
- a potted plant
### Usage
One full-bleed tagged flat-lay hero per landing (warm paper, paper price-tags in muted red/blue/ochre), composed so a paper overlay panel can sit over the lower-left; smaller subjects as feature splits and spot product shots.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "manila",
"type": "registry:theme",
"title": "Manila shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE6",
"foreground": "#211D1A",
"card": "#FFFFFF",
"card-foreground": "#211D1A",
"popover": "#FFFFFF",
"popover-foreground": "#211D1A",
"primary": "#211D1A",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6F6860",
"muted-foreground": "#211D1A",
"accent": "#D94F45",
"accent-foreground": "#ffffff",
"destructive": "#B8423D",
"border": "#E7DFD4",
"input": "#E7DFD4",
"ring": "#D94F45",
"chart-1": "#211D1A",
"chart-2": "#f4f4f5",
"chart-3": "#D94F45",
"chart-4": "#3F7A55",
"chart-5": "#B87922",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#211D1A",
"sidebar-primary": "#211D1A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#3F6FA8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#E7DFD4",
"sidebar-ring": "#D94F45",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#211D1A",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D94F45",
"accent-foreground": "#ffffff",
"destructive": "#B8423D",
"border": "#303642",
"input": "#303642",
"ring": "#D94F45",
"chart-1": "#211D1A",
"chart-2": "#f4f4f5",
"chart-3": "#D94F45",
"chart-4": "#3F7A55",
"chart-5": "#B87922",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#211D1A",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D94F45",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D94F45",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef9b2-0f80-7742-8d14-4d735d03e80e",
"slug": "manila",
"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",
"blue_tint",
"border",
"error",
"info",
"muted",
"ochre_tint",
"on_accent",
"red_tint",
"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": [
"default",
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Manilaand 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.
A bungu shop floor that counts itself: SKUs on the floor, lines above par, lines running low, and open reorder value.
A slip form proving labels, an invalid quantity state, a print-a-tag checkbox, a notify toggle, a par-level slider, and a send confirm.
A compact ledger with rows, menus, tooltips, status chips, and a no-backorders 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: #F4EFE6;
--foreground: #211D1A;
--card: #FFFFFF;
--card-foreground: #211D1A;
--popover: #FFFFFF;
--popover-foreground: #211D1A;
--primary: #211D1A;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6F6860;
--muted-foreground: #211D1A;
--accent: #D94F45;
--accent-foreground: #ffffff;
--destructive: #B8423D;
--border: #E7DFD4;
--input: #E7DFD4;
--ring: #D94F45;
--chart-1: #211D1A;
--chart-2: #f4f4f5;
--chart-3: #D94F45;
--chart-4: #3F7A55;
--chart-5: #B87922;
--sidebar: #FFFFFF;
--sidebar-foreground: #211D1A;
--sidebar-primary: #211D1A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #3F6FA8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #E7DFD4;
--sidebar-ring: #D94F45;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #211D1A;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #D94F45;
--accent-foreground: #ffffff;
--destructive: #B8423D;
--border: #303642;
--input: #303642;
--ring: #D94F45;
--chart-1: #211D1A;
--chart-2: #f4f4f5;
--chart-3: #D94F45;
--chart-4: #3F7A55;
--chart-5: #B87922;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #211D1A;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #D94F45;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #D94F45;
--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 ManilaShadcnKit() {
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">Manila</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": "manila",
"type": "registry:theme",
"title": "Manila",
"description": "The bright order of a stationery shop floor, as software. Warm paper floor (#F4EFE6) with a faint paper-dot grain; pure-white shelf cards lifted by soft shadow, no borders. Three desaturated tag accents — tag red, shelf blue, warm ochre — used like aisle markers on price-tags, rails, and tabs. Fraunces display + IBM Plex Sans body + IBM Plex Mono metadata; radii 16/24/9999; retail-pickup motion.",
"cssVars": {
"theme": {
"font-sans": "IBM Plex Sans, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"font-display": "Fraunces, Iowan Old Style, Georgia, serif",
"font-heading": "Fraunces, Iowan Old Style, Georgia, serif",
"radius": "16px"
},
"light": {
"background": "#F4EFE6",
"foreground": "#211D1A",
"card": "#FFFFFF",
"card-foreground": "#211D1A",
"popover": "#FFFFFF",
"popover-foreground": "#211D1A",
"primary": "#D94F45",
"primary-foreground": "#FFFFFF",
"secondary": "#FBF8F1",
"secondary-foreground": "#211D1A",
"accent": "#3F6FA8",
"accent-foreground": "#FFFFFF",
"muted": "#FBF8F1",
"muted-foreground": "#6F6860",
"destructive": "#B8423D",
"destructive-foreground": "#FFFFFF",
"success": "#3F7A55",
"warning": "#D8A529",
"info": "#3F6FA8",
"border": "transparent",
"input": "#FBF8F1",
"ring": "#3F6FA8",
"radius": "16px"
}
}
}
# Manila shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-agent`
Slug: `manila`
## Intent
Manila is a stationery-shop-floor interface language. Through shadcn/ui its one governing idea —
**the bungu aisle, as software** — must survive: white shelf cards lifted off a warm paper floor by
soft shadow (never a border), metadata riding on **paper price-tags** (a notched, punched tag with
mono numerals), and a **detached aisle-marker rail** (a flat 3px colour bar under a title) doing the
wayfinding. The ground is warm paper `#F4EFE6` with a faint paper-dot grain; type is Fraunces
display + IBM Plex Sans body + IBM Plex Mono metadata. Accents — tag red, shelf blue, warm ochre —
stay on tags, rails, tabs, and small blocks, never poured across a panel. Light mode, warm and
tactile, 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": "#D94F45", "accent": "#3F6FA8", "ochre": "#D8A529", "background": "#F4EFE6", "surface": "#FFFFFF", "surface2": "#FBF8F1", "text": "#211D1A", "muted": "#6F6860", "redTint": "#FBE9E7", "blueTint": "#E9F0F7", "ochreTint": "#FAF1DC", "success": "#3F7A55", "warning": "#B87922", "error": "#B8423D", "info": "#3F6FA8" }
```
Typography:
```json
{ "heading_font": "Fraunces", "body_font": "IBM Plex Sans", "mono_font": "IBM Plex Mono", "letter_spacing": "-0.02em", "base_size": "17px" }
```
## Visual character to preserve
- **Paper price-tag** badges: a `clip-path` notch on the left, a `::before` punched hole ringed in
the accent, mono numerals — the one piece of ornament, and it is the tag itself.
- **Aisle-marker rail**: a detached flat 3px colour bar under a section title; recolours per role.
Wayfinding comes before any colour-filled button. Never a one-sided border on a rounded card.
- **No borders.** Cards are warm-white, 16px radius, lifted by a soft shadow on the paper floor.
Never nest cards; let the top nav sit open across the header.
- **Paper-dot floor**: a faint radial-dot grain on the warm `#F4EFE6` ground, repeated behind
surfaces so it reads as paper, never flat fill.
- **Retail pickup motion**: hover lifts `translateY(-2px)`, press `translateY(1px)`, one 180ms snap.
- Fraunces display headings (shop-sign), IBM Plex Sans body, IBM Plex Mono for SKUs, prices, counts,
page numbers, and every tag label.
## ShadSync visual profile
```json
{ "family": "editorial", "material": "paper", "contour": "rounded", "border": "none", "underlay": false, "grain": true, "stickerBadges": true, "motion": "soft", "density": "comfortable", "accents": ["primary", "accent", "warning"] }
```
## Signature component recipes
### Button
Primary `Button` = tag red `--primary` on warm-white — the one emphasis; a secondary variant sits on
the white shelf surface with a soft shadow; a quiet variant is transparent muted. Pill shape
(9999px), mono uppercase label centred, one shared height. No border. Hover lifts 2px, press 1px.
### Card
`Card` is a warm-white shelf panel, 16px radius, lifted by a soft shadow — no border, no top rule. A
section header places a detached `.aisle-rail` 3px bar under the title (red / blue / ochre per
aisle). A featured product card spans two columns to break the shelf grid. Never nest cards.
### Input, Textarea, Select
`Input` / `Textarea` / `Select` sit on the warm `--surface-2` fill (no border), 16px radius; focus
draws a 2px shelf-blue ring, an invalid field a tag-red ring. Mono uppercase label above. `Select`
ships a custom chevron — no native control is left visible.
### Badge (price-tag)
`Badge` is the **paper price-tag**: a notched, punched tag carrying mono metadata (SKU, price), plus
flat status chips on faint tints — OK (pine), Low (ochre), Reorder (red). Status always carries a
text label, never colour alone.
### Tabs, Table
`Tabs` switch aisles; the active tab carries a flat tag-red underline rail, not a boxed pill.
`Table` is the inventory ledger — mono header, sans item names, warm surface zebra (never grey), a
status chip per row, and a ruled inventory-sheet rhythm. The empty state is a single blank paper tag.
### Dialog, Sheet
`Dialog` is a formal counter notice ("Send this slip to the supplier?") — centered, 24px radius,
generous, no border. `Sheet` is the reorder-slip side rail.
### Checkbox, Switch, Slider, Tooltip, Separator, Dropdown-menu
`Checkbox` checked is tag-red with a white tick; `Switch` on is shelf-blue; `Slider` is a tag-red
track with a round thumb; `Tooltip` is concise sans; `Separator` is open space or a faint hairline
inside a list, never a heavy rule across a card; `dropdown-menu` carries a shelf-blue focus and a
destructive "discard" item.
## Preview shots
- `application-shell`: the stock control deck — open sidebar, KPI cards with price-tag badges, a
stock-by-aisle bar chart, the inventory ledger, and a reorder queue.
- `detail-editor`: write a reorder slip — labelled fields, an invalid (red) quantity state, a
print-a-tag checkbox, a notify toggle, a par-level slider, and a send-confirm dialog.
- `data-operations`: the inventory ledger on mobile — stacked rows, dropdown actions, status chips,
and a no-backorders empty state.
## Implementation contract
- Start from the local `@/components/ui/*` shadcn primitives; do not create a second component system.
- Apply `/katagami/shadcn/manila/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: lift white cards off the warm floor with shadow; put SKU/price metadata on paper tags; rail the
section headers; reserve colour for tags, rails, and tabs.
- Do not: add borders or one-sided accent edges; default to a flat white ground; pour an accent across
a panel; nest cards; leave a native control visible.
## 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";
// A shelf product card: warm-white, 16px radius, lifted by shadow, no border;
// a paper price-tag badge carries the SKU + price in mono; an aisle rail under the title.
export function ShelfCard() {
return (
<Card className="rounded-2xl border-0 bg-card text-card-foreground shadow-md transition hover:-translate-y-0.5 hover:shadow-lg">
<CardHeader>
<Badge
className="w-fit rounded-full bg-[#FBF8F1] pl-6 font-mono text-xs text-foreground shadow-sm
[clip-path:polygon(0_50%,12px_0,100%_0,100%_100%,12px_100%)]"
>
BUNGU·01 ¥1,280
</Badge>
<CardTitle className="mt-3 font-[var(--font-display)] text-xl tracking-tight">
Tomoe River loose-leaf, A5
</CardTitle>
<div className="mt-2 h-[3px] w-16 rounded-full bg-[var(--primary)]" aria-hidden />
<CardDescription className="mt-2 font-mono text-xs uppercase tracking-wide">
SKU TR-A5-068 · case of 100
</CardDescription>
</CardHeader>
<CardContent>
<p className="text-base text-muted-foreground">214 on hand · above par.</p>
</CardContent>
<CardFooter className="justify-between">
<span className="font-mono text-lg font-semibold">¥1,280</span>
<Button className="rounded-full">Add to cart</Button>
</CardFooter>
</Card>
);
}
```
## Layout notes
```json
{ "grid": "asymmetric shelf grid; one featured wide card breaks even rows; 12-col desktop, max 1320px", "density": "comfortable browsing with one dense inventory ledger", "radii": "16 (cards) / 24 (panels) / 9999 (tags + buttons)", "no_borders": true, "separators": "soft shadow, warm surface zebra, and a detached aisle-marker rail — never a one-sided card edge", "ground": "warm paper #F4EFE6 with a faint paper-dot grain" }
```
{
"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": "Manila", "slug": "manila" },
"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": [
"The bungu aisle, as software: warm-white shelf cards lifted off a warm paper floor by soft shadow, never a border.",
"Metadata rides on paper price-tags — a notched, punched tag with mono numerals; a detached aisle-marker rail (flat 3px bar under a title) does the wayfinding.",
"Three desaturated accents — tag red (primary), shelf blue (action/focus), warm ochre — stay on tags, rails, and tabs, never poured across a panel. Fraunces display + IBM Plex Sans + IBM Plex Mono. Light, warm, tactile."
],
"visualProfile": {
"family": "editorial",
"material": "paper",
"contour": "rounded",
"border": "none",
"underlay": false,
"grain": true,
"stickerBadges": true,
"motion": "soft",
"density": "comfortable",
"accents": ["primary", "accent", "warning"]
},
"shots": [
{
"id": "application-shell",
"title": "The stock control deck",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "A stationery shop-floor control deck on a warm paper floor: an open sidebar, KPI cards each headed by a paper price-tag badge, a stock-by-aisle bar chart in the accent palette, a reorder queue, and the inventory ledger with warm surface zebra.",
"mustShow": ["tag-red primary action vs warm-white secondary action", "white shelf cards lifted by shadow with a paper price-tag badge (no borders)", "OK / Low / Reorder status chips on faint tints", "an aisle-marker rail under a section title", "mono SKUs and prices on a warm-zebra ledger"],
"avoid": ["borders, one-sided accent edges, or grey utilitarian rules", "a flat white SaaS ground", "an accent poured across a panel", "nested cards"],
"scene": {
"eyebrow": "stock control",
"headline": "Floor at a glance",
"description": "A bungu shop floor that counts itself: SKUs on the floor, lines above par, lines running low, and open reorder value.",
"primaryAction": "File reorders",
"secondaryAction": "Export sheet",
"stats": [
{ "label": "SKUs on the floor", "value": "248", "tone": "accent" },
{ "label": "above par level", "value": "94%", "tone": "info" },
{ "label": "lines running low", "value": "9", "tone": "warning" }
],
"rows": [
{ "label": "Penco clip board", "value": "PC-CB-01 · aisle 31 · 0 on hand", "status": "reorder" },
{ "label": "Kuretake brush pen", "value": "KB-FN-22 · aisle 12 · 6 on hand", "status": "low" },
{ "label": "Tomoe River A5 ruled", "value": "TR-A5-068 · aisle 01 · 214 on hand", "status": "ok" },
{ "label": "Washi roll, warm three", "value": "WS-03 · aisle 07 · 58 on hand", "status": "ok" }
],
"statuses": ["OK", "Low", "Reorder"]
}
},
{
"id": "detail-editor",
"title": "Write a reorder slip",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A reorder-slip form: labelled mono fields on warm fills, an invalid (tag-red) quantity state, a print-a-paper-tag checkbox, a notify-on-arrival toggle, a par-level slider, and a send-confirm dialog styled as a counter notice.",
"mustShow": ["shelf-blue focus ring on inputs", "an invalid (tag-red) quantity state with a text error", "a custom checkbox and toggle (no native controls)", "a send-confirm dialog as a formal counter notice", "real bungu values"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "an accent poured as a background field"],
"scene": {
"eyebrow": "ordering",
"headline": "Write a reorder slip — Penco clip board",
"description": "A slip form proving labels, an invalid quantity state, a print-a-tag checkbox, a notify toggle, a par-level slider, and a send confirm.",
"primaryAction": "Send slip to supplier",
"secondaryAction": "Save draft",
"fields": [
{ "label": "SKU", "value": "PC-CB-01", "type": "text" },
{ "label": "Quantity", "value": "— set a quantity before sending the slip", "type": "invalid" },
{ "label": "Aisle", "value": "31 · desk", "type": "select" },
{ "label": "Notify on arrival", "value": "on", "type": "switch" }
],
"statuses": ["Print a tag", "Invalid", "Notify on"]
}
},
{
"id": "data-operations",
"title": "Inventory ledger",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator"],
"composition": "A narrow inventory ledger: stacked rows on a warm floor, per-row dropdown actions, status chips, tooltips, paper-tag SKUs, and a no-backorders empty state with a blank paper tag.",
"mustShow": ["responsive reflow to a single column", "mono SKU rows with status chips", "a row action menu with a discard item", "a no-backorders empty state (a blank paper tag)"],
"avoid": ["desktop-only tables", "horizontal overflow", "generic shadcn spacing without Manila character"],
"scene": {
"eyebrow": "stockroom",
"headline": "Inventory ledger",
"description": "A compact ledger with rows, menus, tooltips, status chips, and a no-backorders affordance.",
"primaryAction": "File slip",
"secondaryAction": "Filter",
"rows": [
{ "label": "Penco clip board", "value": "aisle 31", "status": "reorder" },
{ "label": "Kuretake brush pen", "value": "aisle 12", "status": "low" },
{ "label": "Round paper sticker sheet", "value": "aisle 09", "status": "ok" }
],
"statuses": ["Reorder", "Low", "OK"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Tag-red primary = the one emphasis; warm-white shelf secondary; transparent muted quiet. Pill (9999px), mono uppercase label, one shared height, no border; hover lifts 2px." },
{ "primitive": "card", "intent": "Warm-white shelf panel, 16px radius, lifted by soft shadow, no border/top rule; a detached aisle-marker rail under the title; a featured card spans two columns; never nest." },
{ "primitive": "input", "intent": "Warm surface-2 fill, no border, 16px radius; 2px shelf-blue focus ring, tag-red ring when invalid; mono uppercase label above." },
{ "primitive": "textarea", "intent": "Longer supplier notes with the same focus + invalid rhythm; warm fill, generous, 16px radius." },
{ "primitive": "select", "intent": "Aisle / supplier filtering with a custom chevron — no native control visible; warm fill, shelf-blue focus." },
{ "primitive": "dialog", "intent": "A formal counter notice ('Send this slip to the supplier?') — centered, 24px radius, generous, no border." },
{ "primitive": "sheet", "intent": "The reorder-slip side rail for contextual editing." },
{ "primitive": "tabs", "intent": "Switch aisles (All stock / Reorder / Backorder); active carries a flat tag-red underline rail, not a boxed pill." },
{ "primitive": "badge", "intent": "The paper price-tag: a notched, punched tag with mono SKU + price; plus flat status chips on faint tints (OK pine / Low ochre / Reorder red), text always present." },
{ "primitive": "separator", "intent": "Open space or a faint hairline inside a list — never a heavy rule across a card." },
{ "primitive": "checkbox", "intent": "Print-a-tag / rush opt-ins; checked is tag-red with a white tick, clear focus." },
{ "primitive": "switch", "intent": "Notify / settings toggle; on is shelf-blue, off a flat warm track." },
{ "primitive": "slider", "intent": "Par-level / quantity with a tag-red track and a round thumb." },
{ "primitive": "tooltip", "intent": "Concise sans notes above compact controls." },
{ "primitive": "dropdown-menu", "intent": "Per-row stock actions with shelf-blue focus and a destructive 'discard slip' item." },
{ "primitive": "table", "intent": "The inventory ledger: mono header, sans item names, warm surface zebra (never grey), a status chip per row, a no-backorders empty state (a blank paper tag), no rule-lines." }
],
"qualityRules": {
"do": [
"Lift white shelf cards off the warm paper floor with soft shadow; reserve colour for tags, rails, and tabs.",
"Build SKU / price / page metadata as notched paper price-tags with mono numerals.",
"Rail the section headers; break a repeated grid with one featured shelf product.",
"Style every form control explicitly and keep status colour text-labelled."
],
"dont": [
"Add borders, one-sided accent edges, or grey utilitarian rules.",
"Default to a flat white SaaS ground or pour an accent across a panel.",
"Nest cards or leave a native browser control visible.",
"Solve hierarchy with many accent colours when a tag, a rail, and the shelf grid can do the work."
]
}
}