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.
A saturated bubblegum ground carries the page; flat white sticker cards float on it, each dropped onto a hard candy color-block. The landing opens on a full-viewport Decal Bloom hero with a white ink-bordered card anchoring the copy. Below, sections alternate families — a split lead, a three-up feature row, a full-bleed deep step band, a two-up pricing row, a centred candy CTA — never a repeating grid of equal cards. Halftone dots and bloom medallions fill the gaps.
Hierarchy from candy colour, ink weight, and type scale; one cyan primary action leads each view while quiet white and yellow-ghost controls recede. Section heads carry an ink-bordered mono tag; loud candy ribbons and ink counter chips separate major zones.
High-density but controlled: ornament and dot fields are welcome as active structure, but every content zone is a clean ink-bordered white surface with generous internal spacing and AA-legible reading.
The offset ink-sticker — a flat white surface with a 3pt ink contour dropped 6px onto a solid candy color-block (cyan / yellow / magenta), never blurred — plus the recurring smiling flower-bloom medallion that anchors the brand mark, fills corners, and tips the bar-chart leader.
12-column max-1180px contained content on a full-bleed bubblegum ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main.
Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with candy and dots, never with a blank neutral stretch.
medium-to-high
Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.
decal-bloom
Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric smiling flower-bloom medallions, smile badges, stars, and halftone dot fields packed edge to edge with no empty whitespace.
One full-bleed Decal Bloom hero per landing; the white ink-bordered hero card overlays the lower third for legible copy. Below the hero, return to flat CSS sticker planes. End every prompt with: NO text, NO letters, NO logos.
# Florette ## Philosophy Florette is a superflat sticker press for the screen. It dresses an interface like a sheet of die-cut vinyl decals: every surface is a flat white sticker bounded by a thick ink contour and dropped one notch onto a single hard candy color-block, packed across a hot bubblegum ground that never goes empty or white. It is the faithful glow-up of Superflat Pop Graphics — same depthless poster idea, same candy chroma, brought up to standard: three accents used like highlighters, disciplined geometry, an open masthead, and a saturated ground in place of the source's near-white default. ### Values - The offset ink-sticker: every surface is a white decal with a 3pt ink contour and one hard color-block offset; depth from ink and colour, never gradients or soft shadow. - Candy as ground: a saturated bubblegum field carries the page, white carries the reading; the candy is the page, not a wash on a blank sheet. - Ornament as structure: the smiling flower-bloom medallion and halftone dot fields fill gaps and anchor corners so the page reads packed and poster-like. - Three highlighters: cyan, yellow, and bubblegum used like highlighters; ink is the structural neutral, semantic colour stays a small supporting part. - Joyful but disciplined: bright and clean, never muddy — collectible-badge controls and loud ribbons, but everything fits, aligns, and stays legible. ### Anti-Values - Defaulting to a white or pale ground — the near-white default this language deliberately reverses. - Gradients, glow, ambient shadow, or any cue of physical depth. - More than three candy accents, or muting them into pastel SaaS tones. - Boxing the nav into a floating pill bar, nesting cards, or putting an accent edge on a card. - Emoji or symbol glyphs in copy or buttons; large empty neutral stretches that break the poster compression. ### Visual Character - Flat white sticker cards bounded by a uniform 3pt ink contour, each dropped one notch onto a hard 6px candy color-block — separation by ink and colour, never by blur. - Concentric smiling flower-bloom medallions and smile-face badges, drawn as flat inline SVG, repeat across panels, avatars, and the bar-chart leader as the system's grammar. - A fine halftone dot field carries the bubblegum ground and the deep full-bleed bands so the page stays packed and poster-like, never an empty neutral stretch. - Loud full-width candy ribbons with ink counter chips replace thin dividers; tabs, chips, and stat pills are ink-contoured candy capsules with all-caps mono micro-labels that read like collectible badges. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#FF2D86` | | bg_deep | `#E01E70` | | surface | `#FFFFFF` | | surface_2 | `#FFF3D6` | | ink | `#111014` | | text | `#131019` | | muted | `#6B6478` | | on_ground | `#FFFFFF` | | on_ground_muted | `#FFE0EF` | | accent | `#1FC8E8` | | accent_2 | `#FFD23F` | | accent_3 | `#FF2D86` | | on_accent | `#111014` | | border | `#111014` | | success | `#18C47D` | | warning | `#FFB21A` | | error | `#FF4D6D` | | info | `#1FC8E8` | ### Typography - **Base Size**: 17px - **Body Font**: Nunito - **Heading Font**: Baloo 2 - **Mono Font**: IBM Plex Mono - **Heading Weight**: 800 - **Heading Transform**: none - **Letter Spacing**: -0.01em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700;800&family=Nunito:wght@400;600;700;800&family=IBM+Plex+Mono:wght@500;600&display=swap ### Radii - **None**: 0 - **Sm**: 16px - **Md**: 24px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 4px 4px 0 #111014 - **Md**: 6px 6px 0 #111014 - **Cyan**: 6px 6px 0 #1FC8E8 - **Yellow**: 6px 6px 0 #FFD23F - **Magenta**: 6px 6px 0 #FF2D86 ### Spacing - **Base**: 6px - **Scale**: ["6px","12px","18px","28px","44px","68px","104px"] ### Surfaces - **Ground**: hot bubblegum magenta carried by a fine halftone dot field — the page itself - **Card**: flat white sticker, 3pt ink contour, 24px radius, dropped one notch onto a hard candy color-block - **Rail**: deep magenta for the dashboard rail and full-bleed bands ### Borders - **Default Width**: 3px - **Accent Width**: 5px - **Style**: solid - **Character**: thick uniform ink contour on every major shape, like manga line work; never hairline, grey, or an accent edge ### Motion - **Duration**: 170ms - **Easing**: cubic-bezier(.2,.8,.2,1) - **Philosophy**: snappy press feel: buttons translate 3px on active and the offset shadow shrinks; landing reveals are scroll-triggered on top of a fully-settled no-JS state; respects prefers-reduced-motion ## Rules ### Composition A saturated bubblegum ground carries the page; flat white sticker cards float on it, each dropped onto a hard candy color-block. The landing opens on a full-viewport Decal Bloom hero with a white ink-bordered card anchoring the copy. Below, sections alternate families — a split lead, a three-up feature row, a full-bleed deep step band, a two-up pricing row, a centred candy CTA — never a repeating grid of equal cards. Halftone dots and bloom medallions fill the gaps. ### Hierarchy Hierarchy from candy colour, ink weight, and type scale; one cyan primary action leads each view while quiet white and yellow-ghost controls recede. Section heads carry an ink-bordered mono tag; loud candy ribbons and ink counter chips separate major zones. ### Density High-density but controlled: ornament and dot fields are welcome as active structure, but every content zone is a clean ink-bordered white surface with generous internal spacing and AA-legible reading. ### Signature The offset ink-sticker — a flat white surface with a 3pt ink contour dropped 6px onto a solid candy color-block (cyan / yellow / magenta), never blurred — plus the recurring smiling flower-bloom medallion that anchors the brand mark, fills corners, and tips the bar-chart leader. ## Layout ### Grid 12-column max-1180px contained content on a full-bleed bubblegum ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main. ### Whitespace Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with candy and dots, never with a blank neutral stretch. ### Density medium-to-high ### Responsive Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard. ### Breakpoints - **Mobile**: 390px - **Tablet**: 760px - **Desktop**: 1024px - **Wide**: 1700px ## Guidance ### Do - Start from the saturated bubblegum ground; let candy carry the page and white carry the reading. - Give every surface the 3pt ink contour and one hard candy color-block offset — never a soft shadow. - Use the three candy accents like highlighters; keep semantic colour a small supporting part. - Style every form control explicitly — selects, switch knobs, ranges, focus rings; never browser defaults. - Keep all body text on solid white surfaces at AA contrast and always pad above titles. ### Don't - Don't default to a white or pale ground — the look this language deliberately reverses. - Don't add gradients, glow, ambient shadow, or any cue of physical depth. - Don't exceed three candy accents or mute them into pastel SaaS tones. - Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a card. - Don't use emoji or symbol glyphs (arrows, triangles) in copy or buttons — use inline SVG primitives. ### Accessibility Maintain WCAG AA: #131019 on white surfaces, #FFFFFF on the bubblegum ground. Candy colour, pills, and dots never carry information alone — always paired with a text label. Targets at least 44px tall; focus uses a 4px cyan ring; reduced-motion users get instant state changes and no entrance reveal. ## Imagery Direction ### Pairs With decal-bloom ### Summary Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric smiling flower-bloom medallions, smile badges, stars, and halftone dot fields packed edge to edge with no empty whitespace. ### Subjects - smiling flower-bloom medallions - smile-face badges and avatars - stars and halftone dot fields - die-cut sticker sheets and decals - candy-colour poster collages ### Usage One full-bleed Decal Bloom hero per landing; the white ink-bordered hero card overlays the lower third for legible copy. Below the hero, return to flat CSS sticker planes. End every prompt with: NO text, NO letters, NO logos.
---
version: "alpha"
name: "Florette"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#FF2D86"
bg_deep: "#E01E70"
surface: "#FFFFFF"
surface_2: "#FFF3D6"
ink: "#111014"
text: "#131019"
muted: "#6B6478"
on_ground: "#FFFFFF"
on_ground_muted: "#FFE0EF"
accent: "#1FC8E8"
accent_2: "#FFD23F"
accent_3: "#FF2D86"
on_accent: "#111014"
border: "#111014"
success: "#18C47D"
warning: "#FFB21A"
error: "#FF4D6D"
info: "#1FC8E8"
typography:
headline-lg:
fontFamily: "Baloo 2"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.01em"
headline-md:
fontFamily: "Baloo 2"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.01em"
body-md:
fontFamily: "Nunito"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.01em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "16px"
md: "24px"
lg: "24px"
full: "9999px"
spacing:
base: "6px"
xs: "6px"
sm: "12px"
md: "18px"
lg: "28px"
xl: "44px"
2xl: "68px"
3xl: "104px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-bg_deep:
backgroundColor: "{colors.bg_deep}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_2:
backgroundColor: "{colors.surface_2}"
color-reference-ink:
backgroundColor: "{colors.ink}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-on_ground:
backgroundColor: "{colors.on_ground}"
color-reference-on_ground_muted:
backgroundColor: "{colors.on_ground_muted}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Florette
## Overview
Florette is a superflat sticker press for the screen. It dresses an interface like a sheet of die-cut vinyl decals: every surface is a flat white sticker bounded by a thick ink contour and dropped one notch onto a single hard candy color-block, packed across a hot bubblegum ground that never goes empty or white. It is the faithful glow-up of Superflat Pop Graphics — same depthless poster idea, same candy chroma, brought up to standard: three accents used like highlighters, disciplined geometry, an open masthead, and a saturated ground in place of the source's near-white default.
### Values
- The offset ink-sticker: every surface is a white decal with a 3pt ink contour and one hard color-block offset; depth from ink and colour, never gradients or soft shadow.
- Candy as ground: a saturated bubblegum field carries the page, white carries the reading; the candy is the page, not a wash on a blank sheet.
- Ornament as structure: the smiling flower-bloom medallion and halftone dot fields fill gaps and anchor corners so the page reads packed and poster-like.
- Three highlighters: cyan, yellow, and bubblegum used like highlighters; ink is the structural neutral, semantic colour stays a small supporting part.
- Joyful but disciplined: bright and clean, never muddy — collectible-badge controls and loud ribbons, but everything fits, aligns, and stays legible.
### Anti-Values
- Defaulting to a white or pale ground — the near-white default this language deliberately reverses.
- Gradients, glow, ambient shadow, or any cue of physical depth.
- More than three candy accents, or muting them into pastel SaaS tones.
- Boxing the nav into a floating pill bar, nesting cards, or putting an accent edge on a card.
- Emoji or symbol glyphs in copy or buttons; large empty neutral stretches that break the poster compression.
### Visual Character
- Flat white sticker cards bounded by a uniform 3pt ink contour, each dropped one notch onto a hard 6px candy color-block — separation by ink and colour, never by blur.
- Concentric smiling flower-bloom medallions and smile-face badges, drawn as flat inline SVG, repeat across panels, avatars, and the bar-chart leader as the system's grammar.
- A fine halftone dot field carries the bubblegum ground and the deep full-bleed bands so the page stays packed and poster-like, never an empty neutral stretch.
- Loud full-width candy ribbons with ink counter chips replace thin dividers; tabs, chips, and stat pills are ink-contoured candy capsules with all-caps mono micro-labels that read like collectible badges.
## 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 | `#FF2D86` |
| bg_deep | `#E01E70` |
| surface | `#FFFFFF` |
| surface_2 | `#FFF3D6` |
| ink | `#111014` |
| text | `#131019` |
| muted | `#6B6478` |
| on_ground | `#FFFFFF` |
| on_ground_muted | `#FFE0EF` |
| accent | `#1FC8E8` |
| accent_2 | `#FFD23F` |
| accent_3 | `#FF2D86` |
| on_accent | `#111014` |
| border | `#111014` |
| success | `#18C47D` |
| warning | `#FFB21A` |
| error | `#FF4D6D` |
| info | `#1FC8E8` |
## Typography
- **Headline-Lg**: Baloo 2, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Baloo 2, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Nunito, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `6px`
- **Xs**: `6px`
- **Sm**: `12px`
- **Md**: `18px`
- **Lg**: `28px`
- **Xl**: `44px`
- **2xl**: `68px`
- **3xl**: `104px`
### Grid
12-column max-1180px contained content on a full-bleed bubblegum ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main.
### Whitespace
Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with candy and dots, never with a blank neutral stretch.
### Density
medium-to-high
### Responsive
Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 760px
- **Desktop**: 1024px
- **Wide**: 1700px
## Elevation & Depth
### Shadows
- **Sm**: 4px 4px 0 #111014
- **Md**: 6px 6px 0 #111014
- **Cyan**: 6px 6px 0 #1FC8E8
- **Yellow**: 6px 6px 0 #FFD23F
- **Magenta**: 6px 6px 0 #FF2D86
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `16px`
- **Md**: `24px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Ground**: hot bubblegum magenta carried by a fine halftone dot field — the page itself
- **Card**: flat white sticker, 3pt ink contour, 24px radius, dropped one notch onto a hard candy color-block
- **Rail**: deep magenta for the dashboard rail and full-bleed bands
### Borders
- **Default Width**: 3px
- **Accent Width**: 5px
- **Style**: solid
- **Character**: thick uniform ink contour on every major shape, like manga line work; never hairline, grey, or an accent edge
## Components
### Composition
A saturated bubblegum ground carries the page; flat white sticker cards float on it, each dropped onto a hard candy color-block. The landing opens on a full-viewport Decal Bloom hero with a white ink-bordered card anchoring the copy. Below, sections alternate families — a split lead, a three-up feature row, a full-bleed deep step band, a two-up pricing row, a centred candy CTA — never a repeating grid of equal cards. Halftone dots and bloom medallions fill the gaps.
### Hierarchy
Hierarchy from candy colour, ink weight, and type scale; one cyan primary action leads each view while quiet white and yellow-ghost controls recede. Section heads carry an ink-bordered mono tag; loud candy ribbons and ink counter chips separate major zones.
### Density
High-density but controlled: ornament and dot fields are welcome as active structure, but every content zone is a clean ink-bordered white surface with generous internal spacing and AA-legible reading.
### Signature
The offset ink-sticker — a flat white surface with a 3pt ink contour dropped 6px onto a solid candy color-block (cyan / yellow / magenta), never blurred — plus the recurring smiling flower-bloom medallion that anchors the brand mark, fills corners, and tips the bar-chart leader.
## 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-019ef8ea-3e59-7b90-9152-523e98787633/DESIGN.with-shadcn.md`.
The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.
Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.
## Do's and Don'ts
- Do Start from the saturated bubblegum ground; let candy carry the page and white carry the reading.
- Do Give every surface the 3pt ink contour and one hard candy color-block offset — never a soft shadow.
- Do Use the three candy accents like highlighters; keep semantic colour a small supporting part.
- Do Style every form control explicitly — selects, switch knobs, ranges, focus rings; never browser defaults.
- Do Keep all body text on solid white surfaces at AA contrast and always pad above titles.
- Don't Don't default to a white or pale ground — the look this language deliberately reverses.
- Don't Don't add gradients, glow, ambient shadow, or any cue of physical depth.
- Don't Don't exceed three candy accents or mute them into pastel SaaS tones.
- Don't Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a card.
- Don't Don't use emoji or symbol glyphs (arrows, triangles) in copy or buttons — use inline SVG primitives.
### Accessibility
Maintain WCAG AA: #131019 on white surfaces, #FFFFFF on the bubblegum ground. Candy colour, pills, and dots never carry information alone — always paired with a text label. Targets at least 44px tall; focus uses a 4px cyan ring; reduced-motion users get instant state changes and no entrance reveal.
## Imagery Direction
### Pairs With
decal-bloom
### Summary
Flat superflat pop-graphic vector: bold flat fills bounded by thick uniform black ink contours, candy chroma used like highlighters, absolutely no gradients or shading, depthless and two-dimensional, with concentric smiling flower-bloom medallions, smile badges, stars, and halftone dot fields packed edge to edge with no empty whitespace.
### Subjects
- smiling flower-bloom medallions
- smile-face badges and avatars
- stars and halftone dot fields
- die-cut sticker sheets and decals
- candy-colour poster collages
### Usage
One full-bleed Decal Bloom hero per landing; the white ink-bordered hero card overlays the lower third for legible copy. Below the hero, return to flat CSS sticker planes. End every prompt with: NO text, NO letters, NO logos.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "florette",
"type": "registry:theme",
"title": "Florette shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FF2D86",
"foreground": "#131019",
"card": "#FFFFFF",
"card-foreground": "#131019",
"popover": "#FFFFFF",
"popover-foreground": "#131019",
"primary": "#131019",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6B6478",
"muted-foreground": "#131019",
"accent": "#1FC8E8",
"accent-foreground": "#ffffff",
"destructive": "#FF4D6D",
"border": "#111014",
"input": "#111014",
"ring": "#1FC8E8",
"chart-1": "#131019",
"chart-2": "#f4f4f5",
"chart-3": "#1FC8E8",
"chart-4": "#18C47D",
"chart-5": "#FFB21A",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#131019",
"sidebar-primary": "#131019",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#1FC8E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#111014",
"sidebar-ring": "#1FC8E8",
"radius": "24px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#131019",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#1FC8E8",
"accent-foreground": "#ffffff",
"destructive": "#FF4D6D",
"border": "#303642",
"input": "#303642",
"ring": "#1FC8E8",
"chart-1": "#131019",
"chart-2": "#f4f4f5",
"chart-3": "#1FC8E8",
"chart-4": "#18C47D",
"chart-5": "#FFB21A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#131019",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#1FC8E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#1FC8E8",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef8ea-3e59-7b90-9152-523e98787633",
"slug": "florette",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"bg_deep",
"border",
"error",
"info",
"ink",
"muted",
"on_accent",
"on_ground",
"on_ground_muted",
"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",
"sm"
],
"shadows": [
"cyan",
"magenta",
"md",
"sm",
"yellow"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"card",
"ground",
"rail"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Floretteand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #FF2D86;
--foreground: #131019;
--card: #FFFFFF;
--card-foreground: #131019;
--popover: #FFFFFF;
--popover-foreground: #131019;
--primary: #131019;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6B6478;
--muted-foreground: #131019;
--accent: #1FC8E8;
--accent-foreground: #ffffff;
--destructive: #FF4D6D;
--border: #111014;
--input: #111014;
--ring: #1FC8E8;
--chart-1: #131019;
--chart-2: #f4f4f5;
--chart-3: #1FC8E8;
--chart-4: #18C47D;
--chart-5: #FFB21A;
--sidebar: #FFFFFF;
--sidebar-foreground: #131019;
--sidebar-primary: #131019;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #1FC8E8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #111014;
--sidebar-ring: #1FC8E8;
--radius: 24px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #131019;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #1FC8E8;
--accent-foreground: #ffffff;
--destructive: #FF4D6D;
--border: #303642;
--input: #303642;
--ring: #1FC8E8;
--chart-1: #131019;
--chart-2: #f4f4f5;
--chart-3: #1FC8E8;
--chart-4: #18C47D;
--chart-5: #FFB21A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #131019;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #1FC8E8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #1FC8E8;
--radius: 24px;
}
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 FloretteShadcnKit() {
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">Florette</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": "florette",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Nunito, system-ui, sans-serif",
"font-display": "Baloo 2, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"radius": "24px"
},
"light": {
"background": "#FF2D86",
"foreground": "#FFFFFF",
"card": "#FFFFFF",
"card-foreground": "#131019",
"popover": "#FFFFFF",
"popover-foreground": "#131019",
"primary": "#1FC8E8",
"primary-foreground": "#111014",
"secondary": "#FFF3D6",
"secondary-foreground": "#131019",
"muted": "#FFF3D6",
"muted-foreground": "#6B6478",
"accent": "#FFD23F",
"accent-foreground": "#111014",
"destructive": "#FF4D6D",
"destructive-foreground": "#FFFFFF",
"border": "#111014",
"input": "#111014",
"ring": "#1FC8E8",
"chart-1": "#FF2D86",
"chart-2": "#1FC8E8",
"chart-3": "#FFD23F",
"chart-4": "#18C47D",
"chart-5": "#FFB21A",
"sidebar": "#E01E70",
"sidebar-foreground": "#FFFFFF",
"sidebar-primary": "#FFD23F",
"sidebar-primary-foreground": "#111014",
"sidebar-accent": "#FFFFFF",
"sidebar-accent-foreground": "#111014",
"sidebar-border": "#111014",
"sidebar-ring": "#FFD23F"
},
"dark": {
"background": "#1A0410",
"foreground": "#FFE0EF",
"card": "#2A0A1C",
"card-foreground": "#FFE0EF",
"popover": "#2A0A1C",
"popover-foreground": "#FFE0EF",
"primary": "#1FC8E8",
"primary-foreground": "#111014",
"secondary": "#3A1228",
"secondary-foreground": "#FFE0EF",
"muted": "#3A1228",
"muted-foreground": "#C99BB4",
"accent": "#FFD23F",
"accent-foreground": "#111014",
"destructive": "#FF4D6D",
"destructive-foreground": "#111014",
"border": "#000000",
"input": "#000000",
"ring": "#1FC8E8",
"chart-1": "#FF2D86",
"chart-2": "#1FC8E8",
"chart-3": "#FFD23F",
"chart-4": "#18C47D",
"chart-5": "#FFB21A",
"sidebar": "#120209",
"sidebar-foreground": "#FFE0EF",
"sidebar-primary": "#FFD23F",
"sidebar-primary-foreground": "#111014",
"sidebar-accent": "#2A0A1C",
"sidebar-accent-foreground": "#FFE0EF",
"sidebar-border": "#000000",
"sidebar-ring": "#FFD23F"
}
},
"visualProfile": {
"id": "florette",
"material": "flat",
"borders": {
"width": "3px",
"style": "solid",
"color": "#111014",
"character": "thick uniform ink contour on every surface, like manga line work"
},
"radius": { "card": "24px", "control": "16px", "pill": "9999px" },
"shadow": {
"kind": "hard-offset",
"spec": "6px 6px 0 — a solid candy color-block (cyan, yellow, or magenta), never blurred",
"blur": "none"
},
"elevation": "depth read through ink contour and a hard offset color-block, never soft shadow or gradient",
"accentUsage": "three candy accents used like highlighters; ink is the structural neutral",
"motion": "snappy 170ms; buttons translate 3px on press",
"ornament": "concentric smiling flower-bloom medallions and halftone dot fields fill gaps as active structure"
}
}
# Florette shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ef8ea-3e59-7b90-9152-523e98787633`
Slug: `florette`
## Intent
Florette is a superflat sticker press for the screen. It dresses an interface like a sheet of die-cut vinyl decals: every surface is a flat white sticker bounded by a thick ink contour and dropped one notch onto a single hard candy color-block, packed across a hot bubblegum ground that never goes empty or white. It is the faithful glow-up of Superflat Pop Graphics — same depthless poster idea, same candy chroma, brought up to standard: three accents used like highlighters, disciplined geometry, an open masthead, and a saturated ground in place of the source's near-white default.
## Required primitives
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table
Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.
## Token cues
Colors:
{
"bg": "#FF2D86",
"bg_deep": "#E01E70",
"surface": "#FFFFFF",
"surface_2": "#FFF3D6",
"ink": "#111014",
"text": "#131019",
"muted": "#6B6478",
"on_ground": "#FFFFFF",
"on_ground_muted": "#FFE0EF",
"accent": "#1FC8E8",
"accent_2": "#FFD23F",
"accent_3": "#FF2D86",
"on_accent": "#111014",
"border": "#111014",
"success": "#18C47D",
"warning": "#FFB21A",
"error": "#FF4D6D",
"info": "#1FC8E8"
}
Typography:
{
"base_size": "17px",
"body_font": "Nunito",
"heading_font": "Baloo 2",
"mono_font": "IBM Plex Mono",
"heading_weight": "800",
"heading_transform": "none",
"letter_spacing": "-0.01em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700;800&family=Nunito:wght@400;600;700;800&family=IBM+Plex+Mono:wght@500;600&display=swap"
}
## Visual character to preserve
- Flat white sticker cards bounded by a uniform 3pt ink contour, each dropped one notch onto a hard 6px candy color-block — separation by ink and colour, never by blur.
- Concentric smiling flower-bloom medallions and smile-face badges, drawn as flat inline SVG, repeat across panels, avatars, and the bar-chart leader as the system's grammar.
- A fine halftone dot field carries the bubblegum ground and the deep full-bleed bands so the page stays packed and poster-like, never an empty neutral stretch.
- Loud full-width candy ribbons with ink counter chips replace thin dividers; tabs, chips, and stat pills are ink-contoured candy capsules with all-caps mono micro-labels that read like collectible badges.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "solid",
"underlay": true,
"grain": false,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/florette/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Start from the saturated bubblegum ground; let candy carry the page and white carry the reading.; Give every surface the 3pt ink contour and one hard candy color-block offset — never a soft shadow.; Use the three candy accents like highlighters; keep semantic colour a small supporting part.; Style every form control explicitly — selects, switch knobs, ranges, focus rings; never browser defaults.; Keep all body text on solid white surfaces at AA contrast and always pad above titles.
- Do not: Don't default to a white or pale ground — the look this language deliberately reverses.; Don't add gradients, glow, ambient shadow, or any cue of physical depth.; Don't exceed three candy accents or mute them into pastel SaaS tones.; Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a card.; Don't use emoji or symbol glyphs (arrows, triangles) in copy or buttons — use inline SVG primitives.
## Copy-paste component example
This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.
```tsx
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function FloretteShadcnKit() {
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">Florette</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
```
## Layout notes
{
"grid": "12-column max-1180px contained content on a full-bleed bubblegum ground; the landing hero spans 100vw x 100svh, full-bleed deep bands and the candy CTA span 100vw; the dashboard is a 248px deep rail + fluid main.",
"whitespace": "Compressed-but-controlled poster rhythm; always pad above titles; fill empty air with candy and dots, never with a blank neutral stretch.",
"density": "medium-to-high",
"responsive": "Stack to a single column on mobile, hide the masthead nav and non-essential table columns, never overflow horizontally; cap and centre on ultra-wide while only the hero and full-bleed bands span 100vw. minmax(0,1fr) columns and min-width:0 children everywhere; overflow-x hidden as a guard.",
"breakpoints": {
"mobile": "390px",
"tablet": "760px",
"desktop": "1024px",
"wide": "1700px"
}
}
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-ui-compatibility-projection",
"generatedBy": "katagami-ui-projection",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "en-019ef8ea-3e59-7b90-9152-523e98787633",
"name": "Florette",
"slug": "florette"
},
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Flat white sticker cards bounded by a uniform 3pt ink contour, each dropped one notch onto a hard 6px candy color-block — separation by ink and colour, never by blur.",
"Concentric smiling flower-bloom medallions and smile-face badges, drawn as flat inline SVG, repeat across panels, avatars, and the bar-chart leader as the system's grammar.",
"A fine halftone dot field carries the bubblegum ground and the deep full-bleed bands so the page stays packed and poster-like, never an empty neutral stretch.",
"Loud full-width candy ribbons with ink counter chips replace thin dividers; tabs, chips, and stat pills are ink-contoured candy capsules with all-caps mono micro-labels that read like collectible badges."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "solid",
"underlay": false,
"grain": false,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Florette launch room",
"description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
"primaryAction": "Apply theme",
"secondaryAction": "Review states",
"stats": [
{
"label": "components",
"value": "16",
"tone": "accent"
},
{
"label": "states",
"value": "ready"
},
{
"label": "density",
"value": "balanced",
"tone": "warning"
}
],
"rows": [
{
"label": "Primary flow",
"value": "mapped",
"status": "active"
},
{
"label": "Token coverage",
"value": "semantic",
"status": "synced"
},
{
"label": "Responsive proof",
"value": "queued",
"status": "review"
}
],
"statuses": [
"Active",
"Synced",
"Draft"
]
}
},
{
"id": "detail-editor",
"title": "Detail editor",
"viewport": "tablet",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"sheet"
],
"composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
"mustShow": [
"focus ring",
"error or destructive state",
"dialog or sheet treatment",
"written guidance content"
],
"avoid": [
"unstyled browser controls",
"floating cards inside cards",
"missing labels"
],
"scene": {
"eyebrow": "editing flow",
"headline": "Language recipe editor",
"description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
"primaryAction": "Save recipe",
"secondaryAction": "Open sheet",
"fields": [
{
"label": "Component family",
"value": "Narrative cards"
},
{
"label": "State treatment",
"value": "Visible focus + validation"
},
{
"label": "Motion",
"value": "Small lift, no opacity-only fade"
}
],
"statuses": [
"Focus",
"Invalid",
"Confirmed"
]
}
},
{
"id": "data-operations",
"title": "Data operations",
"viewport": "mobile",
"primitives": [
"button",
"tabs",
"badge",
"dropdown-menu",
"table",
"tooltip",
"separator"
],
"composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
"mustShow": [
"responsive reflow",
"dense row styling",
"menu affordance",
"status badge system"
],
"avoid": [
"desktop-only tables",
"text overflow",
"default shadcn spacing without Katagami character"
],
"scene": {
"eyebrow": "operations",
"headline": "Compact review queue",
"description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
"primaryAction": "Resolve",
"secondaryAction": "Filter",
"rows": [
{
"label": "Button hierarchy",
"value": "approved",
"status": "ok"
},
{
"label": "Table rhythm",
"value": "needs pass",
"status": "watch"
},
{
"label": "Empty state",
"value": "designed",
"status": "done"
}
],
"statuses": [
"Queued",
"Blocked",
"Done"
]
}
}
],
"componentRecipes": [
{
"primitive": "button",
"intent": "Prove action hierarchy, focus, disabled, and destructive states."
},
{
"primitive": "card",
"intent": "Carry the language surface, border, elevation, and density rules."
},
{
"primitive": "input",
"intent": "Show labels, focus rings, validation, and spacing rhythm."
},
{
"primitive": "textarea",
"intent": "Show longer guidance, validation copy, and writing density."
},
{
"primitive": "select",
"intent": "Show filtering, selection contrast, and menu trigger styling."
},
{
"primitive": "dialog",
"intent": "Show centered decision states and overlay treatment."
},
{
"primitive": "sheet",
"intent": "Show contextual side panels and responsive editing."
},
{
"primitive": "tabs",
"intent": "Show navigational structure and active/inactive contrast."
},
{
"primitive": "badge",
"intent": "Show compact status vocabulary and semantic colors."
},
{
"primitive": "separator",
"intent": "Show section rhythm without generic gray dividers."
},
{
"primitive": "checkbox",
"intent": "Show binary selection with visible focus and checked states."
},
{
"primitive": "switch",
"intent": "Show settings toggles and on/off contrast."
},
{
"primitive": "slider",
"intent": "Show numeric adjustment with track/thumb styling."
},
{
"primitive": "tooltip",
"intent": "Show concise explanation styling above compact controls."
},
{
"primitive": "dropdown-menu",
"intent": "Show action menus, destructive items, and grouped choices."
},
{
"primitive": "table",
"intent": "Show dense operational data, separators, row states, and responsive behavior."
}
],
"qualityRules": {
"do": [
"Start from the saturated bubblegum ground; let candy carry the page and white carry the reading.",
"Give every surface the 3pt ink contour and one hard candy color-block offset — never a soft shadow.",
"Use the three candy accents like highlighters; keep semantic colour a small supporting part.",
"Style every form control explicitly — selects, switch knobs, ranges, focus rings; never browser defaults.",
"Keep all body text on solid white surfaces at AA contrast and always pad above titles."
],
"dont": [
"Don't default to a white or pale ground — the look this language deliberately reverses.",
"Don't add gradients, glow, ambient shadow, or any cue of physical depth.",
"Don't exceed three candy accents or mute them into pastel SaaS tones.",
"Don't box the nav into a floating pill bar, nest cards, or put an accent edge on a card.",
"Don't use emoji or symbol glyphs (arrows, triangles) in copy or buttons — use inline SVG primitives."
]
}
}