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.
comfortable
Renders ~390px to 2560px+: single column on mobile with non-essential nav links hidden, contained content capped and centred on ultra-wide, only the landing hero spanning full 100vw; grids use minmax(0,1fr) and min-width:0 so they never overflow.
kisscut
Glossy die-cut peel-off kawaii stickers with thick uniform white kiss-cut borders, a soft top sheen, gentle soft cel shading and a thin lavender contour, candy pastels on a cream dot-grid stationery sheet with washi-tape strips and small dot/star/sparkle ornaments. Hero is one full-bleed sticker sheet of a smiling planner-notebook character and its companion stationery stickers.
Use kisscut for the landing hero and decorative sticker accents; never use generated art for the embodiment thumbnail (that screenshots the embodiment).
# Furoku
## Philosophy
A faithful glow-up of the kawaii-stationery planner idea: the week becomes a warm cream sheet of die-cut peel-off stickers. Every page is a sticker you place, colour-code with a pastel dot, and peel with a small bouncy spring when it's done. Cute is always functional here — the sticker is the card, the dot is the category, the rainbow rail is the streak. Soft, rounded and cheerful without being childish.
### Values
- Cute-functional duality — every decorative element also does a job: stickers are surfaces, pastel dots are a category code, the rainbow rail is a progress meter.
- Softness as invitation — rounded geometry, pastel-tinted lift shadows and a warm cream sheet lower the barrier to opening the app.
- Colour as organisation — a five-dot pastel code (family, work, health, plans, someday) is systematic, never noisy decoration.
- Bouncy optimism — spring-eased motion rewards finishing a task and settles, never sluggish.
- Stationery tactility — UI reads like peel-off deco stickers, washi tape and a dot-grid notebook sheet.
- Playful without patronising — clarity and 17px high-contrast reading respect adult users.
### Anti-Values
- Pure-white or grey SaaS surfaces that kill the warm stationery feel
- Sharp corners, hard edges, or arbitrary in-between radii
- Grey drop shadows and grey or heavy borders
- Pure-black text and colour-alone status with no label
- A single accent edge on a card, nested cards, or a boxed-in floating nav
### Visual Character
- Die-cut sticker cards: white fill, a thick uniform white kiss-cut border (5px solid #fff) with a 1.5px dashed warm inset, a soft top sheen, 24px radius, lifted off a cream sheet by a pastel-tinted shadow — never a single accent edge.
- Pill geometry on every control (radius 9999) with one clearly-primary rose-gradient action; sticker cards 24px, compact chips 16px — no arbitrary radii.
- 9px pastel category dots beside every label make colour functional and are always paired with text.
- A 90deg five-stop rainbow progress rail clipped inside a pill rail with aria semantics tracks days and streaks.
- Bouncy spring motion (cubic-bezier(0.34,1.56,0.64,1)) lifts cards on hover and peels the checklist; the settled state renders with no JS and respects prefers-reduced-motion.
## Tokens
### Colors
| Name | Value |
|------|-------|
| bg | `#fdf6ec` |
| surface | `#ffffff` |
| surface_2 | `#fbeef4` |
| text | `#3d2c4a` |
| muted | `#8b7a99` |
| border | `#efe2d4` |
| accent | `#e76fa5` |
| on_accent | `#ffffff` |
| accent_2 | `#d8941f` |
| accent_3 | `#6fb6cf` |
| mint | `#5ba872` |
| lavender | `#7d69ad` |
| primary | `#e76fa5` |
| secondary | `#6fb6cf` |
| success | `#4f9d59` |
| warning | `#b98223` |
| error | `#d95252` |
| info | `#6fb6cf` |
### Typography
- **Base Size**: 17px
- **Body Font**: Nunito
- **Heading Font**: Quicksand
- **Mono Font**: Fira Code
- **Heading Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.02em
- **Line Height**: 1.6
- **Scale Ratio**: 1.2
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Quicksand:wght@500;600;700&family=Nunito:wght@400;600;700;800&family=Fira+Code:wght@400;500&display=swap
### Radii
- **None**: 0px
- **Chip**: 16px
- **Card**: 24px
- **Full**: 9999px
### Shadows
- **Sm**: 0 2px 8px rgba(231,111,165,0.10)
- **Md**: 0 6px 18px rgba(231,111,165,0.14)
- **Lg**: 0 14px 40px rgba(111,182,207,0.18)
### Spacing
- **Base**: 4px
- **Scale**: ["0","4px","8px","12px","16px","24px","32px","48px","64px","96px","128px"]
### Surfaces
- **Card Style**: white die-cut sticker card: 24px radius, 5px solid #fff kiss-cut border, 1.5px dashed warm inset, top sheen, pastel-tinted lift shadow
- **Bg Pattern**: warm cream sheet with a tiny low-opacity dot grid; washi-tape strips used sparingly as card tabs
- **Primary Gradient**: linear-gradient(135deg, #e76fa5, #f4a14d)
- **Cool Gradient**: linear-gradient(135deg, #6fb6cf, #8ccf9d)
- **Rainbow Gradient**: linear-gradient(90deg, #e76fa5, #d8941f, #5ba872, #6fb6cf, #7d69ad)
- **Treatment**: candy pastels used like highlighters on a warm cream ground, two-stop gradients on decorative rails and large fills only
### Borders
- **Default Color**: #efe2d4
- **Default Width**: 1.5px
- **Style**: dashed
- **Character**: soft warm perforated notebook-label outlines; rounded cards use full uniform borders only, never one-sided accent edges
### Motion
- **Duration**: 350ms
- **Easing**: cubic-bezier(0.34, 1.56, 0.64, 1)
- **Philosophy**: bouncy sticker lift and peel; hover translates upward and scales very slightly; settled state is the default and renders with no JS; reduced to 100ms ease with no overshoot for prefers-reduced-motion
## Rules
### Composition
- **Max Colors Per View**: 5
- **Gradient Direction**: 135deg for card/fill gradients, 90deg for the horizontal rainbow rail
- **Rounding Rule**: Every interactive element is a pill (9999px); sticker cards 24px; compact chips 16px. Never sharp corners or arbitrary radii.
- **Contrast Ratio Minimum**: 4.5:1 for body text on the cream/white surface, 3:1 for large headings and UI components
### Hierarchy
- **Levels**: 4
- **Primary Signal**: Pill button with the rose→honey gradient fill and a pastel-tinted shadow for the highest-priority action
- **Secondary Signal**: Rose-outlined pill button on white for secondary actions
- **Tertiary Signal**: Quiet pill on the rose recess, then muted-text ghost links for tertiary navigation
- **Background Signal**: White die-cut sticker cards on the cream sheet for ambient content containers
### Density
- **Default**: comfortable
- **Options**: ["compact","comfortable","spacious"]
- **Comfortable Cell Padding**: 13px 14px
- **Compact Cell Padding**: 8px 12px
### Signature
- Die-cut sticker cards with a thick uniform white kiss-cut border, a soft top sheen, a dashed warm inset and a pastel-tinted lift shadow read as peel-off stickers on a cream sheet.
- Pill buttons, inputs, tabs and badges use the 9999px radius with restrained two-stop pastel gradient fills that lift and shift shadow tint on hover.
- Pastel category dots (9px) sit beside labels, rows, tabs and checklist items so colour is a functional five-dot code, never colour-alone status.
- A 90deg five-stop rainbow progress rail is clipped inside a pill rail with aria progress semantics for days and streaks.
- Bouncy spring motion (translateY + slight scale, cubic-bezier(0.34,1.56,0.64,1)) lifts cards and peels the checklist; the fully-settled state shows with no JS.
## Layout
### Grid
- **Type**: 12-column
- **Max Width**: 1160px
- **Gutter**: 20px
- **Margin**: 40px desktop / 24px tablet / 16px mobile
- **Column Behavior**: Fluid minmax(0,1fr) columns with min-width:0 rounded children that keep 16–24px interior padding
### Whitespace
- **Approach**: Generous padding so rounded sticker elements never feel cramped — the softness needs room to breathe
- **Card Gap**: 20px
- **Content Padding**: 20–26px inside cards
- **Section Gap**: 48px desktop / 36px tablet / 24px mobile
### Density
comfortable
### Responsive
Renders ~390px to 2560px+: single column on mobile with non-essential nav links hidden, contained content capped and centred on ultra-wide, only the landing hero spanning full 100vw; grids use minmax(0,1fr) and min-width:0 so they never overflow.
### Breakpoints
- **Mobile**: {"min_width":"390px","columns":4,"sidebar":"Hidden — only brand + the primary pill remain in the header"}
- **Tablet**: {"min_width":"768px","columns":8,"sidebar":"Collapsed to an icon rail"}
- **Desktop**: {"min_width":"1160px","columns":12,"sidebar":"248px open sticker-card rail"}
## Guidance
### Do
- Render on the warm cream sheet; reserve white for the sticker cards so the kiss-cut border reads.
- Pill every interactive control; use 24px only for sticker cards and 16px for compact chips — never an in-between radius.
- Use pastel-tinted shadows (rgba of the parent's pastel) instead of grey, so cards lift like peel-off stationery.
- Pair every colour status with a 9px category dot and a text label.
- Keep three highlighter leads (rose, honey, sky); let mint, lavender and the semantic colours stay quieter.
- Pair Quicksand headings with Nunito body; keep body 17px+ and text in soft plum, never pure black.
- Add bouncy spring easing on hover and the checklist peel; keep the settled state visible with no JS.
- Let the masthead nav sit openly across the header; keep the dashboard sidebar an open rail, never a boxed widget.
### Don't
- Don't render on pure white or use grey shadows, grey borders, or pure-black text.
- Don't give a sticker card a single accent edge, and never nest cards.
- Don't box the nav into a floating pill/bar or trap it in a widget.
- Don't spread more than three lead accents at once or let warning/error read as primary.
- Don't use sharp corners or arbitrary radii; don't put small text on gradient fills.
- Don't leave any section in a hidden start-state when JavaScript is off.
### Accessibility
- **Contrast Targets**: WCAG AA — 4.5:1 body text on cream/white, 3:1 for large headings and UI components
- **Color Independence**: Never use colour alone for status — pair pastel category dots with text labels and badges.
- **Focus Indicators**: 3px sky (#6fb6cf) focus ring with offset, clearly visible on the light ground; inputs draw a sky inset on focus.
- **Motion Sensitivity**: Respect prefers-reduced-motion: drop the bounce overshoot, cut transitions to 100ms ease, and disable scale; the settled state stays visible.
- **Screen Reader**: Decorative sticker, sheen and tape elements are aria-hidden; progress rails expose aria-valuenow/min/max.
## Imagery Direction
### Pairs With
kisscut
### Summary
Glossy die-cut peel-off kawaii stickers with thick uniform white kiss-cut borders, a soft top sheen, gentle soft cel shading and a thin lavender contour, candy pastels on a cream dot-grid stationery sheet with washi-tape strips and small dot/star/sparkle ornaments. Hero is one full-bleed sticker sheet of a smiling planner-notebook character and its companion stationery stickers.
### Subjects
- smiling planner-notebook character
- checklist clipboard with a checkmark
- sleepy alarm clock
- calendar page
- paper clip
- stars, dots and sparkle ornaments
- washi-tape strips
### Usage
Use kisscut for the landing hero and decorative sticker accents; never use generated art for the embodiment thumbnail (that screenshots the embodiment).
---
version: "alpha"
name: "Furoku"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#fdf6ec"
surface: "#ffffff"
surface_2: "#fbeef4"
text: "#3d2c4a"
muted: "#8b7a99"
border: "#efe2d4"
accent: "#e76fa5"
on_accent: "#ffffff"
accent_2: "#d8941f"
accent_3: "#6fb6cf"
mint: "#5ba872"
lavender: "#7d69ad"
primary: "#e76fa5"
secondary: "#6fb6cf"
success: "#4f9d59"
warning: "#b98223"
error: "#d95252"
info: "#6fb6cf"
typography:
headline-lg:
fontFamily: "Quicksand"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Quicksand"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Nunito"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Fira Code"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
chip: "16px"
card: "24px"
full: "9999px"
spacing:
base: "4px"
xs: "0px"
sm: "4px"
md: "8px"
lg: "12px"
xl: "16px"
2xl: "24px"
3xl: "32px"
4xl: "48px"
step-8: "64px"
step-9: "96px"
step-10: "128px"
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-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
color-reference-mint:
backgroundColor: "{colors.mint}"
color-reference-lavender:
backgroundColor: "{colors.lavender}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#000000"
typography: "{typography.label-md}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.none}"
height: "44px"
---
# Furoku
## Overview
A faithful glow-up of the kawaii-stationery planner idea: the week becomes a warm cream sheet of die-cut peel-off stickers. Every page is a sticker you place, colour-code with a pastel dot, and peel with a small bouncy spring when it's done. Cute is always functional here — the sticker is the card, the dot is the category, the rainbow rail is the streak. Soft, rounded and cheerful without being childish.
### Values
- Cute-functional duality — every decorative element also does a job: stickers are surfaces, pastel dots are a category code, the rainbow rail is a progress meter.
- Softness as invitation — rounded geometry, pastel-tinted lift shadows and a warm cream sheet lower the barrier to opening the app.
- Colour as organisation — a five-dot pastel code (family, work, health, plans, someday) is systematic, never noisy decoration.
- Bouncy optimism — spring-eased motion rewards finishing a task and settles, never sluggish.
- Stationery tactility — UI reads like peel-off deco stickers, washi tape and a dot-grid notebook sheet.
- Playful without patronising — clarity and 17px high-contrast reading respect adult users.
### Anti-Values
- Pure-white or grey SaaS surfaces that kill the warm stationery feel
- Sharp corners, hard edges, or arbitrary in-between radii
- Grey drop shadows and grey or heavy borders
- Pure-black text and colour-alone status with no label
- A single accent edge on a card, nested cards, or a boxed-in floating nav
### Visual Character
- Die-cut sticker cards: white fill, a thick uniform white kiss-cut border (5px solid #fff) with a 1.5px dashed warm inset, a soft top sheen, 24px radius, lifted off a cream sheet by a pastel-tinted shadow — never a single accent edge.
- Pill geometry on every control (radius 9999) with one clearly-primary rose-gradient action; sticker cards 24px, compact chips 16px — no arbitrary radii.
- 9px pastel category dots beside every label make colour functional and are always paired with text.
- A 90deg five-stop rainbow progress rail clipped inside a pill rail with aria semantics tracks days and streaks.
- Bouncy spring motion (cubic-bezier(0.34,1.56,0.64,1)) lifts cards on hover and peels the checklist; the settled state renders with no JS and respects prefers-reduced-motion.
## 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 | `#fdf6ec` |
| surface | `#ffffff` |
| surface_2 | `#fbeef4` |
| text | `#3d2c4a` |
| muted | `#8b7a99` |
| border | `#efe2d4` |
| accent | `#e76fa5` |
| on_accent | `#ffffff` |
| accent_2 | `#d8941f` |
| accent_3 | `#6fb6cf` |
| mint | `#5ba872` |
| lavender | `#7d69ad` |
| primary | `#e76fa5` |
| secondary | `#6fb6cf` |
| success | `#4f9d59` |
| warning | `#b98223` |
| error | `#d95252` |
| info | `#6fb6cf` |
## Typography
- **Headline-Lg**: Quicksand, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Quicksand, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Nunito, 17px, weight 400, line-height 1.5.
- **Label-Md**: Fira Code, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `4px`
- **Xs**: `0px`
- **Sm**: `4px`
- **Md**: `8px`
- **Lg**: `12px`
- **Xl**: `16px`
- **2xl**: `24px`
- **3xl**: `32px`
- **4xl**: `48px`
- **Step-8**: `64px`
- **Step-9**: `96px`
- **Step-10**: `128px`
### Grid
- **Type**: 12-column
- **Max Width**: 1160px
- **Gutter**: 20px
- **Margin**: 40px desktop / 24px tablet / 16px mobile
- **Column Behavior**: Fluid minmax(0,1fr) columns with min-width:0 rounded children that keep 16–24px interior padding
### Whitespace
- **Approach**: Generous padding so rounded sticker elements never feel cramped — the softness needs room to breathe
- **Card Gap**: 20px
- **Content Padding**: 20–26px inside cards
- **Section Gap**: 48px desktop / 36px tablet / 24px mobile
### Density
comfortable
### Responsive
Renders ~390px to 2560px+: single column on mobile with non-essential nav links hidden, contained content capped and centred on ultra-wide, only the landing hero spanning full 100vw; grids use minmax(0,1fr) and min-width:0 so they never overflow.
### Breakpoints
- **Mobile**: {"min_width":"390px","columns":4,"sidebar":"Hidden — only brand + the primary pill remain in the header"}
- **Tablet**: {"min_width":"768px","columns":8,"sidebar":"Collapsed to an icon rail"}
- **Desktop**: {"min_width":"1160px","columns":12,"sidebar":"248px open sticker-card rail"}
## Elevation & Depth
### Shadows
- **Sm**: 0 2px 8px rgba(231,111,165,0.10)
- **Md**: 0 6px 18px rgba(231,111,165,0.14)
- **Lg**: 0 14px 40px rgba(111,182,207,0.18)
## Shapes
### Rounded
- **None**: `0px`
- **Chip**: `16px`
- **Card**: `24px`
- **Full**: `9999px`
### Surfaces
- **Card Style**: white die-cut sticker card: 24px radius, 5px solid #fff kiss-cut border, 1.5px dashed warm inset, top sheen, pastel-tinted lift shadow
- **Bg Pattern**: warm cream sheet with a tiny low-opacity dot grid; washi-tape strips used sparingly as card tabs
- **Primary Gradient**: linear-gradient(135deg, #e76fa5, #f4a14d)
- **Cool Gradient**: linear-gradient(135deg, #6fb6cf, #8ccf9d)
- **Rainbow Gradient**: linear-gradient(90deg, #e76fa5, #d8941f, #5ba872, #6fb6cf, #7d69ad)
- **Treatment**: candy pastels used like highlighters on a warm cream ground, two-stop gradients on decorative rails and large fills only
### Borders
- **Default Color**: #efe2d4
- **Default Width**: 1.5px
- **Style**: dashed
- **Character**: soft warm perforated notebook-label outlines; rounded cards use full uniform borders only, never one-sided accent edges
## Components
### Composition
- **Max Colors Per View**: 5
- **Gradient Direction**: 135deg for card/fill gradients, 90deg for the horizontal rainbow rail
- **Rounding Rule**: Every interactive element is a pill (9999px); sticker cards 24px; compact chips 16px. Never sharp corners or arbitrary radii.
- **Contrast Ratio Minimum**: 4.5:1 for body text on the cream/white surface, 3:1 for large headings and UI components
### Hierarchy
- **Levels**: 4
- **Primary Signal**: Pill button with the rose→honey gradient fill and a pastel-tinted shadow for the highest-priority action
- **Secondary Signal**: Rose-outlined pill button on white for secondary actions
- **Tertiary Signal**: Quiet pill on the rose recess, then muted-text ghost links for tertiary navigation
- **Background Signal**: White die-cut sticker cards on the cream sheet for ambient content containers
### Density
- **Default**: comfortable
- **Options**: ["compact","comfortable","spacious"]
- **Comfortable Cell Padding**: 13px 14px
- **Compact Cell Padding**: 8px 12px
### Signature
- Die-cut sticker cards with a thick uniform white kiss-cut border, a soft top sheen, a dashed warm inset and a pastel-tinted lift shadow read as peel-off stickers on a cream sheet.
- Pill buttons, inputs, tabs and badges use the 9999px radius with restrained two-stop pastel gradient fills that lift and shift shadow tint on hover.
- Pastel category dots (9px) sit beside labels, rows, tabs and checklist items so colour is a functional five-dot code, never colour-alone status.
- A 90deg five-stop rainbow progress rail is clipped inside a pill rail with aria progress semantics for days and streaks.
- Bouncy spring motion (translateY + slight scale, cubic-bezier(0.34,1.56,0.64,1)) lifts cards and peels the checklist; the fully-settled state shows with no JS.
## 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-019ef917-8344-79d0-ab33-f34f9e455243/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 Render on the warm cream sheet; reserve white for the sticker cards so the kiss-cut border reads.
- Do Pill every interactive control; use 24px only for sticker cards and 16px for compact chips — never an in-between radius.
- Do Use pastel-tinted shadows (rgba of the parent's pastel) instead of grey, so cards lift like peel-off stationery.
- Do Pair every colour status with a 9px category dot and a text label.
- Do Keep three highlighter leads (rose, honey, sky); let mint, lavender and the semantic colours stay quieter.
- Do Pair Quicksand headings with Nunito body; keep body 17px+ and text in soft plum, never pure black.
- Do Add bouncy spring easing on hover and the checklist peel; keep the settled state visible with no JS.
- Do Let the masthead nav sit openly across the header; keep the dashboard sidebar an open rail, never a boxed widget.
- Don't Don't render on pure white or use grey shadows, grey borders, or pure-black text.
- Don't Don't give a sticker card a single accent edge, and never nest cards.
- Don't Don't box the nav into a floating pill/bar or trap it in a widget.
- Don't Don't spread more than three lead accents at once or let warning/error read as primary.
- Don't Don't use sharp corners or arbitrary radii; don't put small text on gradient fills.
- Don't Don't leave any section in a hidden start-state when JavaScript is off.
### Accessibility
- **Contrast Targets**: WCAG AA — 4.5:1 body text on cream/white, 3:1 for large headings and UI components
- **Color Independence**: Never use colour alone for status — pair pastel category dots with text labels and badges.
- **Focus Indicators**: 3px sky (#6fb6cf) focus ring with offset, clearly visible on the light ground; inputs draw a sky inset on focus.
- **Motion Sensitivity**: Respect prefers-reduced-motion: drop the bounce overshoot, cut transitions to 100ms ease, and disable scale; the settled state stays visible.
- **Screen Reader**: Decorative sticker, sheen and tape elements are aria-hidden; progress rails expose aria-valuenow/min/max.
## Imagery Direction
### Pairs With
kisscut
### Summary
Glossy die-cut peel-off kawaii stickers with thick uniform white kiss-cut borders, a soft top sheen, gentle soft cel shading and a thin lavender contour, candy pastels on a cream dot-grid stationery sheet with washi-tape strips and small dot/star/sparkle ornaments. Hero is one full-bleed sticker sheet of a smiling planner-notebook character and its companion stationery stickers.
### Subjects
- smiling planner-notebook character
- checklist clipboard with a checkmark
- sleepy alarm clock
- calendar page
- paper clip
- stars, dots and sparkle ornaments
- washi-tape strips
### Usage
Use kisscut for the landing hero and decorative sticker accents; never use generated art for the embodiment thumbnail (that screenshots the embodiment).
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "furoku",
"type": "registry:theme",
"title": "Furoku shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#fdf6ec",
"foreground": "#3d2c4a",
"card": "#ffffff",
"card-foreground": "#3d2c4a",
"popover": "#ffffff",
"popover-foreground": "#3d2c4a",
"primary": "#e76fa5",
"primary-foreground": "#ffffff",
"secondary": "#6fb6cf",
"secondary-foreground": "#ffffff",
"muted": "#8b7a99",
"muted-foreground": "#3d2c4a",
"accent": "#e76fa5",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#efe2d4",
"input": "#efe2d4",
"ring": "#e76fa5",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#e76fa5",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#ffffff",
"sidebar-foreground": "#3d2c4a",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#6fb6cf",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#efe2d4",
"sidebar-ring": "#e76fa5",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#e76fa5",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#e76fa5",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#303642",
"input": "#303642",
"ring": "#e76fa5",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#e76fa5",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#e76fa5",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#e76fa5",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019ef917-8344-79d0-ab33-f34f9e455243",
"slug": "furoku",
"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",
"border",
"error",
"info",
"lavender",
"mint",
"muted",
"on_accent",
"primary",
"secondary",
"success",
"surface",
"surface_2",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"card",
"chip",
"full",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"cool_gradient",
"primary_gradient",
"rainbow_gradient",
"treatment"
],
"borders": [
"character",
"default_color",
"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 Furokuand 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 gentle day planner where every page peels off like a sticker; colour-code it with a dot and peel it when it's done.
A page form proving pill inputs, sky focus, an invalid reminder state, a repeat toggle, a lead-time slider, and a peel-it-on confirm.
A compact list with sticker rows, menus, tooltips, status badges, and a tap-to-peel checklist.
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: #fdf6ec;
--foreground: #3d2c4a;
--card: #ffffff;
--card-foreground: #3d2c4a;
--popover: #ffffff;
--popover-foreground: #3d2c4a;
--primary: #e76fa5;
--primary-foreground: #ffffff;
--secondary: #6fb6cf;
--secondary-foreground: #ffffff;
--muted: #8b7a99;
--muted-foreground: #3d2c4a;
--accent: #e76fa5;
--accent-foreground: #ffffff;
--destructive: #d95252;
--border: #efe2d4;
--input: #efe2d4;
--ring: #e76fa5;
--chart-1: #e76fa5;
--chart-2: #6fb6cf;
--chart-3: #e76fa5;
--chart-4: #4f9d59;
--chart-5: #b98223;
--sidebar: #ffffff;
--sidebar-foreground: #3d2c4a;
--sidebar-primary: #e76fa5;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #6fb6cf;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #efe2d4;
--sidebar-ring: #e76fa5;
--radius: 0.625rem;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #e76fa5;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #e76fa5;
--accent-foreground: #ffffff;
--destructive: #d95252;
--border: #303642;
--input: #303642;
--ring: #e76fa5;
--chart-1: #e76fa5;
--chart-2: #6fb6cf;
--chart-3: #e76fa5;
--chart-4: #4f9d59;
--chart-5: #b98223;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #e76fa5;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #e76fa5;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #e76fa5;
--radius: 0.625rem;
}
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 FurokuShadcnKit() {
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">Furoku</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": "furoku",
"type": "registry:theme",
"title": "Furoku",
"description": "Kawaii stationery planner. A warm cream sheet, white die-cut sticker cards with kiss-cut borders and a top sheen, pastel-tinted lift shadows, and pill-shaped controls. Three highlighter accents (Mochi Rose, Honey, Sky) plus mint and lavender for a five-dot category code; soft plum ink, never pure black; rounded Quicksand + Nunito voice; bouncy peel motion.",
"cssVars": {
"theme": {
"font-sans": "Nunito, system-ui, sans-serif",
"font-mono": "Fira Code, ui-monospace, monospace",
"font-display": "Quicksand, system-ui, sans-serif",
"font-heading": "Quicksand, system-ui, sans-serif",
"radius": "9999px"
},
"light": {
"background": "#fdf6ec",
"foreground": "#3d2c4a",
"card": "#ffffff",
"card-foreground": "#3d2c4a",
"popover": "#ffffff",
"popover-foreground": "#3d2c4a",
"primary": "#e76fa5",
"primary-foreground": "#ffffff",
"secondary": "#fbeef4",
"secondary-foreground": "#5b4a86",
"accent": "#6fb6cf",
"accent-foreground": "#ffffff",
"muted": "#fbeef4",
"muted-foreground": "#8b7a99",
"destructive": "#d95252",
"destructive-foreground": "#ffffff",
"success": "#4f9d59",
"warning": "#b98223",
"border": "#efe2d4",
"input": "#fbeef4",
"ring": "#6fb6cf",
"radius": "9999px"
}
}
}
# Furoku shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-agent`
Slug: `furoku`
## Intent
Furoku is a kawaii stationery planner language. Through shadcn/ui its one governing idea —
**the die-cut peel-off sticker as a functional surface** — must survive: cards are stickers
(thick uniform white kiss-cut border, soft top sheen, pastel-tinted lift shadow) sitting on a
warm cream sheet; controls are pills; pastel category dots make colour functional. The ground is
cream `#fdf6ec` (white is reserved for stickers); type is rounded (Quicksand display, Nunito
body, Fira Code captions/counts); three highlighter accents — **Mochi Rose** (primary), **Honey**,
**Sky** — plus mint and lavender complete a five-dot category code. No grey shadows, no grey
borders, no pure black, no single accent edge, no nested cards. Light mode is the point; motion
is a bouncy spring layered on a fully-settled no-JS state.
## 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": "#e76fa5", "accent": "#6fb6cf", "accent-2": "#d8941f", "mint": "#5ba872", "lavender": "#7d69ad", "background": "#fdf6ec", "surface": "#ffffff", "recess": "#fbeef4", "text": "#3d2c4a", "muted": "#8b7a99", "border": "#efe2d4", "success": "#4f9d59", "warning": "#b98223", "error": "#d95252", "info": "#6fb6cf" }
```
Typography:
```json
{ "heading_font": "Quicksand", "body_font": "Nunito", "mono_font": "Fira Code", "letter_spacing": "-0.02em", "base_size": "17px" }
```
## Visual character to preserve
- **The sticker card**: white fill, a thick uniform white kiss-cut border (`5px solid #fff`), a
soft top sheen, a `1.5px dashed` warm inset, 24px radius, lifted by a **pastel-tinted** shadow.
Never grey, never a single accent edge, never nested.
- **Pill everything**: buttons, inputs, tabs, badges, switches and rails use radius `9999px`;
sticker cards use `24px`; compact chips `16px`. No arbitrary in-between radii.
- **Category dots**: 9px circles beside every label encode meaning; colour is always paired with
text — never colour-alone status.
- **Soft plum ink** (`#3d2c4a`), never pure black; **warm dashed borders**, never grey.
- Rounded voice: Quicksand display (tracked `-0.02em`), Nunito body at 17px, Fira Code for
captions, counts, keys, and column meta.
## ShadSync visual profile
```json
{ "family": "playful", "material": "soft", "contour": "rounded", "border": "dashed", "underlay": true, "grain": false, "stickerBadges": true, "motion": "bouncy", "density": "comfortable", "accents": ["primary", "accent", "success", "warning"] }
```
## Signature component recipes
### Button
Pill (`9999px`), one shared height across a set. Primary `Button` = the rose→honey gradient with a
pastel-tinted shadow — the one emphasis; an outline variant is rose-on-white (`inset 0 0 0 2px`);
a quiet variant sits on the rose recess; a ghost is muted text. Bouncy lift on hover
(`cubic-bezier(0.34,1.56,0.64,1)`); centred label; no emoji on buttons.
### Card
`Card` is a die-cut sticker: white fill, a thick uniform white kiss-cut border, a soft top sheen
pseudo-element, a dashed warm inset, 24px radius, lifted by a pastel-tinted shadow. No grey, no
top rule, no single accent edge. Never nest cards.
### Input and Textarea
`Input` / `Textarea` are pills (textarea 20px) on the rose recess fill (no border); focus draws a
sky inset, an invalid field draws an error inset. Mono labels above, real planner values inside.
### Select, Tabs, and Table
`Select` picks a category; `Tabs` switch All / Today / Pinned / Done in a pill track (active = a
white pill lifted by a pastel shadow); `Table` is the day ledger — mono header, Nunito rows, a
category dot per row, a pastel status `Badge`, rose-recess zebra (never grey), and an all-clear
empty state. No rule-lines between rows — separation is the zebra surface.
### Dialog and Sheet
`Dialog` is a gentle confirm ("Peel this page on?") — a centred sticker card, 24px, generous;
`Sheet` is the page-edit side rail as a tall sticker panel. Both on white/plum, pastel shadow.
### Badge, Switch, Slider, Tooltip, Separator, Checkbox, Dropdown-menu
`Badge` is a status chip on a faint pastel tint with a leading category dot (mint/rose/honey/
sky/lavender). `Switch` "on" is the cool mint→sky gradient. `Slider` is a rainbow or rose track in
a pill rail with a round thumb. `Tooltip` is a white sticker bubble. `Separator` is open spacing
or a short rainbow rule with rounded ends — never a grey hairline. `Checkbox` fills with the cool
gradient and a white tick on peel. `dropdown-menu` is a white sticker menu with a sky focus and a
destructive item in error rose.
## Preview shots
- `planner-shell`: Mochiboard this week — open sticker sidebar, KPI sticker cards with category
dots, a tab strip, the day ledger, a rainbow day-progress rail.
- `new-page`: make a sticker for it — pill fields with sky focus, an invalid reminder state, a
repeat switch, a lead-time slider, a peel-it-on confirm.
- `lists`: my lists — sticker rows with dots, dropdown actions, status badges, a tap-to-peel
checklist, an all-clear empty state.
- Each preview shot carries a renderable `scene`.
## Implementation contract
- Start from the local `@/components/ui/*` shadcn primitives; do not create a second system.
- Apply `/katagami/shadcn/furoku/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: render on cream, reserve white for sticker cards, pill every control, pair colour with a
dot and a label, keep three highlighter leads.
- Do not: use grey shadows/borders or pure black; give a card a single accent edge; nest cards;
box the nav; spread accent everywhere.
## 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 page card: a die-cut sticker — white fill, a thick white kiss-cut border, a soft
// top sheen, a pastel-tinted lift shadow; a category dot makes the colour functional.
export function PageCard() {
return (
<Card className="relative overflow-hidden rounded-3xl border-[5px] border-white bg-card text-card-foreground shadow-[0_6px_18px_rgba(231,111,165,0.14)] outline outline-[1.5px] outline-offset-[-5px] outline-dashed outline-[#efe2d4]">
<span className="pointer-events-none absolute inset-x-4 top-1.5 h-1/3 rounded-2xl bg-gradient-to-b from-white/85 to-transparent" aria-hidden />
<div className="p-6">
<CardHeader className="p-0">
<Badge className="w-fit rounded-full bg-[#e0f0f6] text-[#3a7d93]">
<span className="mr-1.5 inline-block h-2.5 w-2.5 rounded-full bg-[#6fb6cf]" aria-hidden />
Pinned
</Badge>
<CardTitle className="mt-2 font-[var(--font-display)] text-2xl tracking-tight">
Book the ferry tickets
</CardTitle>
<CardDescription className="font-mono text-xs uppercase tracking-wide text-muted-foreground">
Plans & outings · Thu
</CardDescription>
</CardHeader>
<CardContent className="px-0 pt-3">
<p className="text-base text-muted-foreground">We'll nudge you Wednesday evening.</p>
</CardContent>
<CardFooter className="justify-between px-0">
<span className="font-mono text-xs text-muted-foreground">2 seats</span>
<Button className="rounded-full">Peel it on</Button>
</CardFooter>
</div>
</Card>
);
}
```
## Layout notes
```json
{ "grid": "12-col fluid; generous gutters; rounded children keep 16–24px interior padding", "density": "comfortable (compact / comfortable / spacious)", "radii": "9999 (pills) / 24 (sticker cards) / 16 (chips) — never in-between", "no_grey": true, "separators": "measured whitespace, rose-recess zebra, pastel shadow, a short rainbow rule" }
```
{
"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": "Furoku", "slug": "furoku" },
"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": [
"Cards are die-cut stickers — a thick uniform white kiss-cut border, a soft top sheen, and a pastel-tinted lift shadow on a warm cream sheet; never a grey SaaS panel, never a single accent edge.",
"Everything interactive is a pill (radius 9999); sticker cards use 24px. Buttons share one height and shape with one clearly-primary rose-gradient action.",
"Pastel category dots (9px) encode meaning beside every label; colour is always paired with text. Three highlighter leads (rose, honey, sky) plus mint and lavender.",
"Soft plum ink, never pure black; warm dashed borders, never grey; bouncy spring motion on hover and on the checklist peel."
],
"visualProfile": {
"family": "playful",
"material": "soft",
"contour": "rounded",
"border": "dashed",
"underlay": true,
"grain": false,
"stickerBadges": true,
"motion": "bouncy",
"density": "comfortable",
"accents": ["primary", "accent", "success", "warning"]
},
"shots": [
{
"id": "planner-shell",
"title": "Mochiboard — this week",
"viewport": "desktop",
"primitives": ["button", "card", "input", "select", "tabs", "badge", "separator", "table"],
"composition": "A kawaii planner desk: an open sticker-card sidebar rail, KPI sticker cards (pages, done, pinned, streak) with category dots, a tab strip, and the today ledger with pastel status badges and a rainbow day-progress rail.",
"mustShow": ["rose-gradient primary action vs quiet recess secondary", "white sticker cards with a kiss-cut border + top sheen, lifted by a pastel shadow (no grey, no single edge)", "pastel category dots beside every row label", "rainbow progress rail with aria semantics"],
"avoid": ["grey shadows or grey borders", "pure-white page ground", "sharp corners or arbitrary radii", "a single accent edge on a card", "nested cards"],
"scene": {
"eyebrow": "this week",
"headline": "Mochiboard — this week",
"description": "A gentle day planner where every page peels off like a sticker; colour-code it with a dot and peel it when it's done.",
"primaryAction": "Add a page",
"secondaryAction": "Filter",
"stats": [
{ "label": "pages today", "value": "9", "tone": "accent" },
{ "label": "done", "value": "6", "tone": "success" },
{ "label": "pinned", "value": "3", "tone": "info" }
],
"rows": [
{ "label": "Pack Yumi's lunch", "value": "Family · 7:00am", "status": "done" },
{ "label": "Send Kessler invoice", "value": "Work · 11:30am", "status": "now" },
{ "label": "30-min stretch", "value": "Health · 6:00pm", "status": "later" },
{ "label": "Book ferry tickets", "value": "Plans · Thu", "status": "pinned" }
],
"statuses": ["Done", "Now", "Later", "Pinned"]
}
},
{
"id": "new-page",
"title": "Make a sticker for it",
"viewport": "tablet",
"primitives": ["button", "card", "input", "textarea", "select", "checkbox", "switch", "slider", "dialog", "sheet"],
"composition": "A new-page form: pill inputs on a rose recess fill with sky focus, an invalid (error inset) reminder field, a category select, a repeat-weekly switch, a reminder-lead-time slider, and a peel-it-on confirm dialog.",
"mustShow": ["sky focus inset on pill inputs", "an invalid (error) inset state with a helper line", "switch 'on' in the cool gradient", "rounded controls — no browser defaults, no sharp corners"],
"avoid": ["unstyled browser controls", "missing labels", "nested cards", "square inputs"],
"scene": {
"eyebrow": "new page",
"headline": "Make a sticker for it",
"description": "A page form proving pill inputs, sky focus, an invalid reminder state, a repeat toggle, a lead-time slider, and a peel-it-on confirm.",
"primaryAction": "Peel it on",
"secondaryAction": "Save as draft",
"fields": [
{ "label": "Title", "value": "Re-pot the basil", "type": "text" },
{ "label": "Remind me", "value": "— pick a day so we can nudge you", "type": "invalid" },
{ "label": "Category", "value": "Someday / maybe", "type": "select" },
{ "label": "Repeat weekly", "value": "on", "type": "switch" }
],
"statuses": ["Saved", "Invalid", "Repeats"]
}
},
{
"id": "lists",
"title": "My lists",
"viewport": "mobile",
"primitives": ["button", "tabs", "badge", "dropdown-menu", "table", "tooltip", "separator", "checkbox"],
"composition": "A narrow list view: stacked sticker rows with category dots, a tab strip (All / Today / Pinned / Done), per-row dropdown actions, pastel status badges, a tap-to-peel checklist, and an all-clear empty state.",
"mustShow": ["responsive single-column reflow", "category dots beside labels", "row action menu", "pastel status badges", "a friendly empty state"],
"avoid": ["desktop-only tables", "horizontal overflow", "generic shadcn spacing without Furoku softness"],
"scene": {
"eyebrow": "my lists",
"headline": "My lists",
"description": "A compact list with sticker rows, menus, tooltips, status badges, and a tap-to-peel checklist.",
"primaryAction": "Add",
"secondaryAction": "Filter",
"rows": [
{ "label": "Water the plants", "value": "Health", "status": "done" },
{ "label": "Reply to Hana", "value": "Family", "status": "done" },
{ "label": "Dry cleaning", "value": "Errands", "status": "now" }
],
"statuses": ["Done", "Now", "Someday"]
}
}
],
"componentRecipes": [
{ "primitive": "button", "intent": "Pill (radius 9999), one shared height; primary is the rose→honey gradient with a pastel shadow — the single emphasis; outline is rose-on-white; quiet sits on the rose recess; ghost is muted text. Bouncy lift on hover; centred label, no emoji." },
{ "primitive": "card", "intent": "A die-cut sticker: white fill, thick uniform white kiss-cut border, a soft top sheen, a 1.5px dashed warm inset, 24px radius, lifted by a pastel-tinted shadow. Never grey, never a single accent edge, never nested." },
{ "primitive": "input", "intent": "Pill on the rose recess fill (no border); sky focus inset, error inset when invalid; mono label above, real planner values inside." },
{ "primitive": "textarea", "intent": "20px-radius note field with the same focus/invalid rhythm; Nunito, generous." },
{ "primitive": "select", "intent": "Category picker — a pill trigger with a soft chevron and clear selection contrast." },
{ "primitive": "dialog", "intent": "A gentle 'Peel this page on?' confirm — centred sticker card, 24px radius, generous padding, no grey." },
{ "primitive": "sheet", "intent": "The page-edit side rail as a tall sticker panel." },
{ "primitive": "tabs", "intent": "All / Today / Pinned / Done in a pill track; the active tab is a white pill lifted by a pastel shadow." },
{ "primitive": "badge", "intent": "Sticker status chip on a faint pastel tint with a leading category dot: done (mint) / now (rose) / later (honey) / pinned (sky) / someday (lavender)." },
{ "primitive": "separator", "intent": "Open spacing or a short rainbow rule with rounded ends — never a grey hairline." },
{ "primitive": "checkbox", "intent": "Rounded box; checked fills with the cool gradient and a white tick; the label strikes through on peel." },
{ "primitive": "switch", "intent": "Pill track; 'on' is the cool mint→sky gradient, off is a soft lavender-grey track." },
{ "primitive": "slider", "intent": "Reminder lead-time / capacity — a rainbow or rose track in a pill rail with a round thumb." },
{ "primitive": "tooltip", "intent": "Concise Nunito note on a white sticker bubble with a pastel shadow." },
{ "primitive": "dropdown-menu", "intent": "Per-row page actions on a white sticker menu; a sky focus and a destructive 'remove' item in error rose." },
{ "primitive": "table", "intent": "The day ledger: mono header, Nunito rows, a category dot per row, a pastel status badge, rose-recess zebra (never grey), and an all-clear empty state — no rule-lines between rows." }
],
"qualityRules": {
"do": [
"Render on the warm cream sheet; reserve white for the sticker cards so the kiss-cut border reads.",
"Pill every control; use 24px only for sticker cards; never an in-between radius.",
"Pair every colour status with a category dot and a text label.",
"Keep three highlighter leads (rose, honey, sky); let semantic colours stay quiet."
],
"dont": [
"Use grey shadows, grey borders, pure black text, or a pure-white ground.",
"Give a card a single accent edge or nest cards.",
"Box the nav into a floating pill or trap it in a widget.",
"Spread accent colour everywhere or let warning/error read as primary."
]
}
}