back to gallerydo avoid
design language·kawaii-organizer
Kawaii Organizer
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Download DESIGN.md
Portable DESIGN.md source of truth for most agents and apps.
the spec
specification
philosophy
summary
The cute-functional end of Japanese stationery culture applied to productivity UI. Pastel rainbow palette, pill-shaped buttons, sticker-like icons, and gentle bouncy animations create an interface that is cheerful without being childish. Think Sumikko Gurashi meets a productivity app — organized but adorable, where every element is soft, rounded, and inviting enough to make you want to use it.
values
Cute-functional duality — every decorative element must also serve a UX purpose; stickers are status indicators, pastel colors encode categoriesSoftness as invitation — extreme rounding, gentle shadows, and warm pastels lower the psychological barrier to interactionRainbow as organization — the full pastel spectrum is not decoration but a systematic color-coding system for different content typesBouncy optimism — spring-eased micro-animations celebrate task completion and encourage continued engagementStationery tactility — UI elements evoke the physical pleasure of cute Japanese notebooks, washi tape, and sticker sheetsGentle density — information-rich layouts that never feel overwhelming because every element has breathing room and soft edgesPlayful without patronizing — cute aesthetic that respects adult users by maintaining clarity and efficiency
anti-values
×Sharp corners and hard edges that create visual tension×Monochrome severity that mistakes austerity for professionalism×Childish chaos — randomness without organizational purpose×Dark mode grimness that kills the cheerful pastel energy
tokens
borders5 items
- accent width
- 2px
- character
- soft perforated notebook-label outlines; rounded elements use full uniform borders only, never one-sided accent borders
- default color
- #eadfed
- default width
- 2px
- style
- dashed
colors12 items
accent
#d8aa39
background
#fef7ff
border
#eadfed
error
#d95252
info
#7d69ad
muted
#8b7a99
primary
#e76fa5
secondary
#6fb6cf
success
#4f9d59
surface
#ffffff
text
#3d2c4a
warning
#b98223
motion3 items
- duration
- 350ms
- easing
- cubic-bezier(0.34, 1.56, 0.64, 1)
- philosophy
- bouncy stationery sticker lift; hover transforms translate upward and scale very slightly, reduced to 100ms ease for prefers-reduced-motion
radii5 items
- full
- 9999px
- lg
- 24px
- md
- 24px
- none
- 0px
- sm
- 16px
shadows3 items
- lg
- 0 12px 40px rgba(111,182,207,0.18)
- md
- 0 4px 16px rgba(231,111,165,0.12)
- sm
- 0 2px 8px rgba(231,111,165,0.08)
spacing2 items
- scale
- 0, 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
- unit
- 4px
surfaces6 items
- bg pattern
- tiny low-opacity dot grid and washi-tape strips used sparingly behind the main planner scene
- card style
- white sticker cards with 24px radius, dashed #eadfed borders, and color-tinted shadows
- primary gradient
- linear-gradient(135deg, #e76fa5, #d8aa39)
- rainbow gradient
- linear-gradient(90deg, #e76fa5, #d8aa39, #8ccf9d, #6fb6cf, #7d69ad)
- secondary gradient
- linear-gradient(135deg, #6fb6cf, #8ccf9d)
- treatment
- pastel stationery paper with restrained gradient washes
typography8 items
- base size
- 16px
- body font
- Nunito
- google fonts url
- https://fonts.googleapis.com/css2?family=Quicksand:wght@500;600;700&family=Nunito:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap
- heading font
- Quicksand
- letter spacing
- -0.02em
- line height
- 1.6
- mono font
- Fira Code
- scale ratio
- 1.2
rules
composition
- contrast ratio minimum
- 4.5:1 for body text on white, 3:1 for large headings and decorative text
- gradient direction
- 135deg for card backgrounds, 90deg for horizontal rainbow strips
- max colors per view
- 5
- rounding rule
- Every interactive element gets border-radius 9999px; large containers get 24px; compact nested chips may use 16px. Never use sharp corners or arbitrary radii.
density
- comfortable cell padding
- 14px 20px
- compact cell padding
- 8px 14px
- default
- comfortable
- options
- compact, comfortable, spacious
hierarchy
- background signal
- Soft card surfaces with subtle pastel shadow for ambient content containers
- levels
- 4
- primary signal
- Pill-shaped buttons with gradient fill and pink-tinted shadow for highest priority actions
- secondary signal
- Outlined pill buttons with pastel dashed border and icon for secondary actions
- tertiary signal
- Text-only links in muted lavender for tertiary navigation
signature patterns
Pill-shaped buttons, inputs, tabs, and badges use 9999px border-radius with restrained pastel gradient fills that translate upward and shift shadow tint on hover.Sticker-card layout uses 24px radius, 2px dashed pastel borders, small tape-tab pseudo-elements, and color-tinted shadows so panels read as peel-off notebook stickers.Rainbow progress rails use linear-gradient(90deg) through muted pink, honey, green, blue, and lavender, clipped inside pill rails with aria progress semantics.Bouncy spring hover animations use transform: translateY(-2px) scale(1.01) with cubic-bezier(0.34, 1.56, 0.64, 1) on cards and controls.Pastel category dots appear as 8px inline circles beside labels, table rows, tabs, and checklist items to make color coding functional rather than decorative.
layout
breakpoints
- desktop
- columns 12·min width 1200px·sidebar 260px with pastel accent bar
- mobile
- columns 4·min width 375px·sidebar Hidden — bottom tab bar with pill-shaped active indicator
- tablet
- columns 8·min width 768px·sidebar Collapsed to icon strip with emoji-style icons
density
- comfortable
- button height 42px pill-shaped·input height 44px with 9999px border-radius·row height 52px for list items, 48px for table rows
- compact
- button height 34px pill-shaped·input height 36px with 9999px border-radius·row height 38px for list items, 34px for table rows
- default mode
- comfortable
grid
- column behavior
- Fluid columns with rounded card children that maintain 16-24px internal padding
- gutter
- 20px
- margin
- 40px on desktop, 24px on tablet, 16px on mobile
- max width
- 1200px
- type
- 12-column
whitespace
- approach
- Generous padding so rounded elements never feel cramped — the softness needs room to breathe
- card gap
- 20px
- content padding
- 20px inside cards, 16px inside compact widgets
- section gap
- 48px on desktop, 36px on tablet, 24px on mobile
guidance
- Use pill-shaped (border-radius: 9999px) buttons and badges everywhere — this is the single strongest visual signature
- Apply pastel-tinted shadows (e.g. rgba(255,126,179,0.12)) rather than gray shadows — every shadow should carry a hint of its parent element color
- Use the rainbow gradient on progress bars, loading states, and decorative dividers to reinforce the stationery aesthetic
- Pair Quicksand headings with Nunito body text — the rounded letterforms are essential to the soft feel
- Add bouncy spring easing (cubic-bezier(0.34, 1.56, 0.64, 1)) on hover and focus transitions
- Use dashed or dotted borders instead of solid ones for card outlines and separators
- Include small pastel category dots (8px circles) as inline decorators next to labels and tags
- Keep text color as soft dark purple (#3d2c4a) instead of pure black — softness applies to typography too
- Use emoji or SVG sticker illustrations as decorative accents in headers and empty states
- Maintain generous padding inside rounded containers — cramped content inside round shapes looks broken
- Never use sharp corners (border-radius: 0) on any visible element — even dividers should have rounded ends
- Never use pure black (#000) text or borders — always use the soft dark purple or muted lavender
- Do not use heavy drop shadows with gray tints — always tint shadows with the pastel palette
- Never use more than three gradient colors on a single element — two pastel stops per gradient maximum
- Do not make animations last longer than 500ms — bouncy should feel snappy, not sluggish
- Never use harsh solid borders thicker than 2px — thick borders should always be dashed or dotted
- Do not place small text on gradient backgrounds — gradients are for decorative elements and large text only
- Avoid using the error coral (#ff6b6b) for anything other than actual errors — it is still cute but has semantic meaning
- Do not skip hover states on interactive elements — every clickable element must have a visible bounce response
- Never use dark backgrounds — this is a light-mode-only design language; dark mode would kill the pastel palette
katagami spec
# Kawaii Organizer
## Philosophy
The cute-functional end of Japanese stationery culture applied to productivity UI. Pastel rainbow palette, pill-shaped buttons, sticker-like icons, and gentle bouncy animations create an interface that is cheerful without being childish. Think Sumikko Gurashi meets a productivity app — organized but adorable, where every element is soft, rounded, and inviting enough to make you want to use it.
### Values
- Cute-functional duality — every decorative element must also serve a UX purpose; stickers are status indicators, pastel colors encode categories
- Softness as invitation — extreme rounding, gentle shadows, and warm pastels lower the psychological barrier to interaction
- Rainbow as organization — the full pastel spectrum is not decoration but a systematic color-coding system for different content types
- Bouncy optimism — spring-eased micro-animations celebrate task completion and encourage continued engagement
- Stationery tactility — UI elements evoke the physical pleasure of cute Japanese notebooks, washi tape, and sticker sheets
- Gentle density — information-rich layouts that never feel overwhelming because every element has breathing room and soft edges
- Playful without patronizing — cute aesthetic that respects adult users by maintaining clarity and efficiency
### Anti-Values
- Sharp corners and hard edges that create visual tension
- Monochrome severity that mistakes austerity for professionalism
- Childish chaos — randomness without organizational purpose
- Dark mode grimness that kills the cheerful pastel energy
### Visual Character
- border-radius: 9999px on every button, badge, input, tab, toggle, progress rail, and pagination control; 24px is reserved for larger sticker cards only.
- box-shadow: 0 4px 16px rgba(255,126,179,0.12) and related pastel-tinted shadows float elements like peel-off stationery stickers rather than gray SaaS panels.
- background: linear-gradient(135deg, #fef7ff, #f0f7ff) appears only as subtle surface washes and hero stationery panels, never as noisy rainbow decoration.
- border: 2px dashed #eadfed or dotted pastel outlines replace harsh solid rules, giving cards the feel of perforated notebook labels.
- transition: transform 350ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 350ms cubic-bezier(0.34, 1.56, 0.64, 1) creates a small bouncy lift on every interactive element.
## Tokens
### Borders
- **Accent Width**: 2px
- **Character**: soft perforated notebook-label outlines; rounded elements use full uniform borders only, never one-sided accent borders
- **Default Color**: #eadfed
- **Default Width**: 2px
- **Style**: dashed
### Colors
| Name | Value |
|------|-------|
| accent | `#d8aa39` |
| background | `#fef7ff` |
| border | `#eadfed` |
| error | `#d95252` |
| info | `#7d69ad` |
| muted | `#8b7a99` |
| primary | `#e76fa5` |
| secondary | `#6fb6cf` |
| success | `#4f9d59` |
| surface | `#ffffff` |
| text | `#3d2c4a` |
| warning | `#b98223` |
### Motion
- **Duration**: 350ms
- **Easing**: cubic-bezier(0.34, 1.56, 0.64, 1)
- **Philosophy**: bouncy stationery sticker lift; hover transforms translate upward and scale very slightly, reduced to 100ms ease for prefers-reduced-motion
### Radii
- **Full**: 9999px
- **Lg**: 24px
- **Md**: 24px
- **None**: 0px
- **Sm**: 16px
### Shadows
- **Lg**: 0 12px 40px rgba(111,182,207,0.18)
- **Md**: 0 4px 16px rgba(231,111,165,0.12)
- **Sm**: 0 2px 8px rgba(231,111,165,0.08)
### Spacing
- **Scale**: ["0","4px","8px","12px","16px","24px","32px","48px","64px","96px","128px"]
- **Unit**: 4px
### Surfaces
- **Bg Pattern**: tiny low-opacity dot grid and washi-tape strips used sparingly behind the main planner scene
- **Card Style**: white sticker cards with 24px radius, dashed #eadfed borders, and color-tinted shadows
- **Primary Gradient**: linear-gradient(135deg, #e76fa5, #d8aa39)
- **Rainbow Gradient**: linear-gradient(90deg, #e76fa5, #d8aa39, #8ccf9d, #6fb6cf, #7d69ad)
- **Secondary Gradient**: linear-gradient(135deg, #6fb6cf, #8ccf9d)
- **Treatment**: pastel stationery paper with restrained gradient washes
### Typography
- **Base Size**: 16px
- **Body Font**: Nunito
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Quicksand:wght@500;600;700&family=Nunito:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap
- **Heading Font**: Quicksand
- **Letter Spacing**: -0.02em
- **Line Height**: 1.6
- **Mono Font**: Fira Code
- **Scale Ratio**: 1.2
## Rules
### Composition
- **Contrast Ratio Minimum**: 4.5:1 for body text on white, 3:1 for large headings and decorative text
- **Gradient Direction**: 135deg for card backgrounds, 90deg for horizontal rainbow strips
- **Max Colors Per View**: 5
- **Rounding Rule**: Every interactive element gets border-radius 9999px; large containers get 24px; compact nested chips may use 16px. Never use sharp corners or arbitrary radii.
### Density
- **Comfortable Cell Padding**: 14px 20px
- **Compact Cell Padding**: 8px 14px
- **Default**: comfortable
- **Options**: ["compact","comfortable","spacious"]
### Hierarchy
- **Background Signal**: Soft card surfaces with subtle pastel shadow for ambient content containers
- **Levels**: 4
- **Primary Signal**: Pill-shaped buttons with gradient fill and pink-tinted shadow for highest priority actions
- **Secondary Signal**: Outlined pill buttons with pastel dashed border and icon for secondary actions
- **Tertiary Signal**: Text-only links in muted lavender for tertiary navigation
### Signature Patterns
- Pill-shaped buttons, inputs, tabs, and badges use 9999px border-radius with restrained pastel gradient fills that translate upward and shift shadow tint on hover.
- Sticker-card layout uses 24px radius, 2px dashed pastel borders, small tape-tab pseudo-elements, and color-tinted shadows so panels read as peel-off notebook stickers.
- Rainbow progress rails use linear-gradient(90deg) through muted pink, honey, green, blue, and lavender, clipped inside pill rails with aria progress semantics.
- Bouncy spring hover animations use transform: translateY(-2px) scale(1.01) with cubic-bezier(0.34, 1.56, 0.64, 1) on cards and controls.
- Pastel category dots appear as 8px inline circles beside labels, table rows, tabs, and checklist items to make color coding functional rather than decorative.
## Layout
### Breakpoints
- **Desktop**: {"columns":12,"min_width":"1200px","sidebar":"260px with pastel accent bar"}
- **Mobile**: {"columns":4,"min_width":"375px","sidebar":"Hidden — bottom tab bar with pill-shaped active indicator"}
- **Tablet**: {"columns":8,"min_width":"768px","sidebar":"Collapsed to icon strip with emoji-style icons"}
### Density
- **Comfortable**: {"button_height":"42px pill-shaped","input_height":"44px with 9999px border-radius","row_height":"52px for list items, 48px for table rows"}
- **Compact**: {"button_height":"34px pill-shaped","input_height":"36px with 9999px border-radius","row_height":"38px for list items, 34px for table rows"}
- **Default Mode**: comfortable
### Grid
- **Column Behavior**: Fluid columns with rounded card children that maintain 16-24px internal padding
- **Gutter**: 20px
- **Margin**: 40px on desktop, 24px on tablet, 16px on mobile
- **Max Width**: 1200px
- **Type**: 12-column
### Whitespace
- **Approach**: Generous padding so rounded elements never feel cramped — the softness needs room to breathe
- **Card Gap**: 20px
- **Content Padding**: 20px inside cards, 16px inside compact widgets
- **Section Gap**: 48px on desktop, 36px on tablet, 24px on mobile
## Guidance
### Do
- Use pill-shaped (border-radius: 9999px) buttons and badges everywhere — this is the single strongest visual signature
- Apply pastel-tinted shadows (e.g. rgba(255,126,179,0.12)) rather than gray shadows — every shadow should carry a hint of its parent element color
- Use the rainbow gradient on progress bars, loading states, and decorative dividers to reinforce the stationery aesthetic
- Pair Quicksand headings with Nunito body text — the rounded letterforms are essential to the soft feel
- Add bouncy spring easing (cubic-bezier(0.34, 1.56, 0.64, 1)) on hover and focus transitions
- Use dashed or dotted borders instead of solid ones for card outlines and separators
- Include small pastel category dots (8px circles) as inline decorators next to labels and tags
- Keep text color as soft dark purple (#3d2c4a) instead of pure black — softness applies to typography too
- Use emoji or SVG sticker illustrations as decorative accents in headers and empty states
- Maintain generous padding inside rounded containers — cramped content inside round shapes looks broken
### Don't
- Never use sharp corners (border-radius: 0) on any visible element — even dividers should have rounded ends
- Never use pure black (#000) text or borders — always use the soft dark purple or muted lavender
- Do not use heavy drop shadows with gray tints — always tint shadows with the pastel palette
- Never use more than three gradient colors on a single element — two pastel stops per gradient maximum
- Do not make animations last longer than 500ms — bouncy should feel snappy, not sluggish
- Never use harsh solid borders thicker than 2px — thick borders should always be dashed or dotted
- Do not place small text on gradient backgrounds — gradients are for decorative elements and large text only
- Avoid using the error coral (#ff6b6b) for anything other than actual errors — it is still cute but has semantic meaning
- Do not skip hover states on interactive elements — every clickable element must have a visible bounce response
- Never use dark backgrounds — this is a light-mode-only design language; dark mode would kill the pastel palette
### Accessibility
- **Color Independence**: Never use color alone for status — pair pastel category dots with text labels, use icons alongside colored badges
- **Contrast Targets**: WCAG AA (4.5:1 body text on white surface, 3:1 for large headings and UI components)
- **Focus Indicators**: 3px solid #7ec8e3 outline with 2px offset — clearly visible against the light background
- **Motion Sensitivity**: Respect prefers-reduced-motion: disable bounce overshoot, reduce all transitions to 100ms ease, disable scale animations
- **Screen Reader**: All decorative sticker elements and emoji accents use aria-hidden; progress bars have aria-valuenow
### Usage Context
- **Ideal For**: ["Personal productivity apps and habit trackers","Note-taking and journaling apps","Student-oriented tools and learning platforms","Lifestyle and wellness dashboards","Creative planning and mood board tools"]
- **Poor Fit For**: ["Enterprise B2B dashboards","Financial trading interfaces","Developer tooling and IDEs","Government and legal systems","Medical and clinical interfaces"]
- **Time Of Day**: Optimized for daytime use in well-lit environments where the light pastel palette has maximum vibrancy
DESIGN.md
---
version: "alpha"
name: "Kawaii Organizer"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
accent: "#d8aa39"
background: "#fef7ff"
border: "#eadfed"
error: "#d95252"
info: "#7d69ad"
muted: "#8b7a99"
primary: "#e76fa5"
secondary: "#6fb6cf"
success: "#4f9d59"
surface: "#ffffff"
text: "#3d2c4a"
warning: "#b98223"
typography:
headline-lg:
fontFamily: "Quicksand"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Quicksand"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Nunito"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Fira Code"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
full: "9999px"
lg: "24px"
md: "24px"
none: "0px"
sm: "16px"
spacing:
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"
unit: "4px"
components:
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-warning:
backgroundColor: "{colors.warning}"
button-primary:
backgroundColor: "{colors.primary}"
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"
---
# Kawaii Organizer
## Overview
The cute-functional end of Japanese stationery culture applied to productivity UI. Pastel rainbow palette, pill-shaped buttons, sticker-like icons, and gentle bouncy animations create an interface that is cheerful without being childish. Think Sumikko Gurashi meets a productivity app — organized but adorable, where every element is soft, rounded, and inviting enough to make you want to use it.
### Values
- Cute-functional duality — every decorative element must also serve a UX purpose; stickers are status indicators, pastel colors encode categories
- Softness as invitation — extreme rounding, gentle shadows, and warm pastels lower the psychological barrier to interaction
- Rainbow as organization — the full pastel spectrum is not decoration but a systematic color-coding system for different content types
- Bouncy optimism — spring-eased micro-animations celebrate task completion and encourage continued engagement
- Stationery tactility — UI elements evoke the physical pleasure of cute Japanese notebooks, washi tape, and sticker sheets
- Gentle density — information-rich layouts that never feel overwhelming because every element has breathing room and soft edges
- Playful without patronizing — cute aesthetic that respects adult users by maintaining clarity and efficiency
### Anti-Values
- Sharp corners and hard edges that create visual tension
- Monochrome severity that mistakes austerity for professionalism
- Childish chaos — randomness without organizational purpose
- Dark mode grimness that kills the cheerful pastel energy
### Visual Character
- border-radius: 9999px on every button, badge, input, tab, toggle, progress rail, and pagination control; 24px is reserved for larger sticker cards only.
- box-shadow: 0 4px 16px rgba(255,126,179,0.12) and related pastel-tinted shadows float elements like peel-off stationery stickers rather than gray SaaS panels.
- background: linear-gradient(135deg, #fef7ff, #f0f7ff) appears only as subtle surface washes and hero stationery panels, never as noisy rainbow decoration.
- border: 2px dashed #eadfed or dotted pastel outlines replace harsh solid rules, giving cards the feel of perforated notebook labels.
- transition: transform 350ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 350ms cubic-bezier(0.34, 1.56, 0.64, 1) creates a small bouncy lift on every interactive element.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| accent | `#d8aa39` |
| background | `#fef7ff` |
| border | `#eadfed` |
| error | `#d95252` |
| info | `#7d69ad` |
| muted | `#8b7a99` |
| primary | `#e76fa5` |
| secondary | `#6fb6cf` |
| success | `#4f9d59` |
| surface | `#ffffff` |
| text | `#3d2c4a` |
| warning | `#b98223` |
## Typography
- **Headline-Lg**: Quicksand, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Quicksand, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Nunito, 16px, weight 400, line-height 1.5.
- **Label-Md**: Fira Code, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **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`
- **Unit**: `4px`
### Breakpoints
- **Desktop**: {"columns":12,"min_width":"1200px","sidebar":"260px with pastel accent bar"}
- **Mobile**: {"columns":4,"min_width":"375px","sidebar":"Hidden — bottom tab bar with pill-shaped active indicator"}
- **Tablet**: {"columns":8,"min_width":"768px","sidebar":"Collapsed to icon strip with emoji-style icons"}
### Density
- **Comfortable**: {"button_height":"42px pill-shaped","input_height":"44px with 9999px border-radius","row_height":"52px for list items, 48px for table rows"}
- **Compact**: {"button_height":"34px pill-shaped","input_height":"36px with 9999px border-radius","row_height":"38px for list items, 34px for table rows"}
- **Default Mode**: comfortable
### Grid
- **Column Behavior**: Fluid columns with rounded card children that maintain 16-24px internal padding
- **Gutter**: 20px
- **Margin**: 40px on desktop, 24px on tablet, 16px on mobile
- **Max Width**: 1200px
- **Type**: 12-column
### Whitespace
- **Approach**: Generous padding so rounded elements never feel cramped — the softness needs room to breathe
- **Card Gap**: 20px
- **Content Padding**: 20px inside cards, 16px inside compact widgets
- **Section Gap**: 48px on desktop, 36px on tablet, 24px on mobile
## Elevation & Depth
### Shadows
- **Lg**: 0 12px 40px rgba(111,182,207,0.18)
- **Md**: 0 4px 16px rgba(231,111,165,0.12)
- **Sm**: 0 2px 8px rgba(231,111,165,0.08)
## Shapes
### Rounded
- **Full**: `9999px`
- **Lg**: `24px`
- **Md**: `24px`
- **None**: `0px`
- **Sm**: `16px`
### Surfaces
- **Bg Pattern**: tiny low-opacity dot grid and washi-tape strips used sparingly behind the main planner scene
- **Card Style**: white sticker cards with 24px radius, dashed #eadfed borders, and color-tinted shadows
- **Primary Gradient**: linear-gradient(135deg, #e76fa5, #d8aa39)
- **Rainbow Gradient**: linear-gradient(90deg, #e76fa5, #d8aa39, #8ccf9d, #6fb6cf, #7d69ad)
- **Secondary Gradient**: linear-gradient(135deg, #6fb6cf, #8ccf9d)
- **Treatment**: pastel stationery paper with restrained gradient washes
### Borders
- **Accent Width**: 2px
- **Character**: soft perforated notebook-label outlines; rounded elements use full uniform borders only, never one-sided accent borders
- **Default Color**: #eadfed
- **Default Width**: 2px
- **Style**: dashed
## Components
### Composition
- **Contrast Ratio Minimum**: 4.5:1 for body text on white, 3:1 for large headings and decorative text
- **Gradient Direction**: 135deg for card backgrounds, 90deg for horizontal rainbow strips
- **Max Colors Per View**: 5
- **Rounding Rule**: Every interactive element gets border-radius 9999px; large containers get 24px; compact nested chips may use 16px. Never use sharp corners or arbitrary radii.
### Density
- **Comfortable Cell Padding**: 14px 20px
- **Compact Cell Padding**: 8px 14px
- **Default**: comfortable
- **Options**: ["compact","comfortable","spacious"]
### Hierarchy
- **Background Signal**: Soft card surfaces with subtle pastel shadow for ambient content containers
- **Levels**: 4
- **Primary Signal**: Pill-shaped buttons with gradient fill and pink-tinted shadow for highest priority actions
- **Secondary Signal**: Outlined pill buttons with pastel dashed border and icon for secondary actions
- **Tertiary Signal**: Text-only links in muted lavender for tertiary navigation
### Signature Patterns
- Pill-shaped buttons, inputs, tabs, and badges use 9999px border-radius with restrained pastel gradient fills that translate upward and shift shadow tint on hover.
- Sticker-card layout uses 24px radius, 2px dashed pastel borders, small tape-tab pseudo-elements, and color-tinted shadows so panels read as peel-off notebook stickers.
- Rainbow progress rails use linear-gradient(90deg) through muted pink, honey, green, blue, and lavender, clipped inside pill rails with aria progress semantics.
- Bouncy spring hover animations use transform: translateY(-2px) scale(1.01) with cubic-bezier(0.34, 1.56, 0.64, 1) on cards and controls.
- Pastel category dots appear as 8px inline circles beside labels, table rows, tabs, and checklist items to make color coding functional rather than decorative.
## 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-019dacd6-373e-7ed0-a1b6-ed40c199e33e/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 Use pill-shaped (border-radius: 9999px) buttons and badges everywhere — this is the single strongest visual signature
- Do Apply pastel-tinted shadows (e.g. rgba(255,126,179,0.12)) rather than gray shadows — every shadow should carry a hint of its parent element color
- Do Use the rainbow gradient on progress bars, loading states, and decorative dividers to reinforce the stationery aesthetic
- Do Pair Quicksand headings with Nunito body text — the rounded letterforms are essential to the soft feel
- Do Add bouncy spring easing (cubic-bezier(0.34, 1.56, 0.64, 1)) on hover and focus transitions
- Do Use dashed or dotted borders instead of solid ones for card outlines and separators
- Do Include small pastel category dots (8px circles) as inline decorators next to labels and tags
- Do Keep text color as soft dark purple (#3d2c4a) instead of pure black — softness applies to typography too
- Do Use emoji or SVG sticker illustrations as decorative accents in headers and empty states
- Do Maintain generous padding inside rounded containers — cramped content inside round shapes looks broken
- Don't Never use sharp corners (border-radius: 0) on any visible element — even dividers should have rounded ends
- Don't Never use pure black (#000) text or borders — always use the soft dark purple or muted lavender
- Don't Do not use heavy drop shadows with gray tints — always tint shadows with the pastel palette
- Don't Never use more than three gradient colors on a single element — two pastel stops per gradient maximum
- Don't Do not make animations last longer than 500ms — bouncy should feel snappy, not sluggish
- Don't Never use harsh solid borders thicker than 2px — thick borders should always be dashed or dotted
- Don't Do not place small text on gradient backgrounds — gradients are for decorative elements and large text only
- Don't Avoid using the error coral (#ff6b6b) for anything other than actual errors — it is still cute but has semantic meaning
- Don't Do not skip hover states on interactive elements — every clickable element must have a visible bounce response
- Don't Never use dark backgrounds — this is a light-mode-only design language; dark mode would kill the pastel palette
### Accessibility
- **Color Independence**: Never use color alone for status — pair pastel category dots with text labels, use icons alongside colored badges
- **Contrast Targets**: WCAG AA (4.5:1 body text on white surface, 3:1 for large headings and UI components)
- **Focus Indicators**: 3px solid #7ec8e3 outline with 2px offset — clearly visible against the light background
- **Motion Sensitivity**: Respect prefers-reduced-motion: disable bounce overshoot, reduce all transitions to 100ms ease, disable scale animations
- **Screen Reader**: All decorative sticker elements and emoji accents use aria-hidden; progress bars have aria-valuenow
### Usage Context
- **Ideal For**: ["Personal productivity apps and habit trackers","Note-taking and journaling apps","Student-oriented tools and learning platforms","Lifestyle and wellness dashboards","Creative planning and mood board tools"]
- **Poor Fit For**: ["Enterprise B2B dashboards","Financial trading interfaces","Developer tooling and IDEs","Government and legal systems","Medical and clinical interfaces"]
- **Time Of Day**: Optimized for daytime use in well-lit environments where the light pastel palette has maximum vibrancy
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "kawaii-organizer",
"type": "registry:theme",
"title": "Kawaii Organizer shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#fef7ff",
"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": "#d8aa39",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#eadfed",
"input": "#eadfed",
"ring": "#d8aa39",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#d8aa39",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#ffffff",
"sidebar-foreground": "#3d2c4a",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#7d69ad",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#eadfed",
"sidebar-ring": "#d8aa39",
"radius": "24px"
},
"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": "#d8aa39",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#303642",
"input": "#303642",
"ring": "#d8aa39",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#d8aa39",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#d8aa39",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#d8aa39",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacd6-373e-7ed0-a1b6-ed40c199e33e",
"slug": "kawaii-organizer",
"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": {
"borders": [
"accent_width",
"character",
"default_color",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"scale",
"unit"
],
"surfaces": [
"bg_pattern",
"card_style",
"primary_gradient",
"rainbow_gradient",
"secondary_gradient",
"treatment"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · kawaii-organizer
DESIGN.md
at a glance
Typography
headline-lgQuicksand · 31px · 700
The quick brown fox jumps
headline-mdQuicksand · 25px · 600
The quick brown fox jumps
body-mdNunito · 16px · 400
The quick brown fox jumps
label-mdFira Code · 12px · 600
The quick brown fox jumps
Components
New
Card title
Components rendered with this language’s tokens — colors, type, and rounded corners as specified.
Spacing
- xs0px
- sm4px
- md8px
- lg12px
- xl16px
- 2xl24px
- 3xl32px
- 4xl48px
- step-864px
- step-996px
- step-10128px
- unit4px
Shape
full9999px
lg24px
md24px
none0px
sm16px
shadcn/ui
implementation kit
recommendedcompatibility fallback
DESIGN.md with shadcn
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.
advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu tabletheme css
:root {
--background: #fef7ff;
--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: #d8aa39;
--accent-foreground: #ffffff;
--destructive: #d95252;
--border: #eadfed;
--input: #eadfed;
--ring: #d8aa39;
--chart-1: #e76fa5;
--chart-2: #6fb6cf;
--chart-3: #d8aa39;
--chart-4: #4f9d59;
--chart-5: #b98223;
--sidebar: #ffffff;
--sidebar-foreground: #3d2c4a;
--sidebar-primary: #e76fa5;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #7d69ad;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #eadfed;
--sidebar-ring: #d8aa39;
--radius: 24px;
}
.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: #d8aa39;
--accent-foreground: #ffffff;
--destructive: #d95252;
--border: #303642;
--input: #303642;
--ring: #d8aa39;
--chart-1: #e76fa5;
--chart-2: #6fb6cf;
--chart-3: #d8aa39;
--chart-4: #4f9d59;
--chart-5: #b98223;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #e76fa5;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #d8aa39;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #d8aa39;
--radius: 24px;
}
tsx starter
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 KawaiiOrganizerShadcnKit() {
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">Kawaii Organizer</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>
);
}
theme JSONcompatibility fallback
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "kawaii-organizer",
"type": "registry:theme",
"title": "Kawaii Organizer shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#fef7ff",
"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": "#d8aa39",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#eadfed",
"input": "#eadfed",
"ring": "#d8aa39",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#d8aa39",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#ffffff",
"sidebar-foreground": "#3d2c4a",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#7d69ad",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#eadfed",
"sidebar-ring": "#d8aa39",
"radius": "24px"
},
"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": "#d8aa39",
"accent-foreground": "#ffffff",
"destructive": "#d95252",
"border": "#303642",
"input": "#303642",
"ring": "#d8aa39",
"chart-1": "#e76fa5",
"chart-2": "#6fb6cf",
"chart-3": "#d8aa39",
"chart-4": "#4f9d59",
"chart-5": "#b98223",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#e76fa5",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#d8aa39",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#d8aa39",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019dacd6-373e-7ed0-a1b6-ed40c199e33e",
"slug": "kawaii-organizer",
"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": {
"borders": [
"accent_width",
"character",
"default_color",
"default_width",
"style"
],
"colors": [
"accent",
"background",
"border",
"error",
"info",
"muted",
"primary",
"secondary",
"success",
"surface",
"text",
"warning"
],
"motion": [
"duration",
"easing",
"philosophy"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"scale",
"unit"
],
"surfaces": [
"bg_pattern",
"card_style",
"primary_gradient",
"rainbow_gradient",
"secondary_gradient",
"treatment"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
]
}
}
}
component recipescompatibility fallback
# Kawaii Organizer shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019dacd6-373e-7ed0-a1b6-ed40c199e33e`
Slug: `kawaii-organizer`
## Intent
The cute-functional end of Japanese stationery culture applied to productivity UI. Pastel rainbow palette, pill-shaped buttons, sticker-like icons, and gentle bouncy animations create an interface that is cheerful without being childish. Think Sumikko Gurashi meets a productivity app — organized but adorable, where every element is soft, rounded, and inviting enough to make you want to use it.
## 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:
{
"accent": "#d8aa39",
"background": "#fef7ff",
"border": "#eadfed",
"error": "#d95252",
"info": "#7d69ad",
"muted": "#8b7a99",
"primary": "#e76fa5",
"secondary": "#6fb6cf",
"success": "#4f9d59",
"surface": "#ffffff",
"text": "#3d2c4a",
"warning": "#b98223"
}
Typography:
{
"base_size": "16px",
"body_font": "Nunito",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Quicksand:wght@500;600;700&family=Nunito:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap",
"heading_font": "Quicksand",
"letter_spacing": "-0.02em",
"line_height": "1.6",
"mono_font": "Fira Code",
"scale_ratio": "1.2"
}
## Visual character to preserve
- border-radius: 9999px on every button, badge, input, tab, toggle, progress rail, and pagination control; 24px is reserved for larger sticker cards only.
- box-shadow: 0 4px 16px rgba(255,126,179,0.12) and related pastel-tinted shadows float elements like peel-off stationery stickers rather than gray SaaS panels.
- background: linear-gradient(135deg, #fef7ff, #f0f7ff) appears only as subtle surface washes and hero stationery panels, never as noisy rainbow decoration.
- border: 2px dashed #eadfed or dotted pastel outlines replace harsh solid rules, giving cards the feel of perforated notebook labels.
- transition: transform 350ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 350ms cubic-bezier(0.34, 1.56, 0.64, 1) creates a small bouncy lift on every interactive element.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "dashed",
"underlay": false,
"grain": true,
"stickerBadges": true,
"motion": "lift",
"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/kawaii-organizer/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: Use pill-shaped (border-radius: 9999px) buttons and badges everywhere — this is the single strongest visual signature; Apply pastel-tinted shadows (e.g. rgba(255,126,179,0.12)) rather than gray shadows — every shadow should carry a hint of its parent element color; Use the rainbow gradient on progress bars, loading states, and decorative dividers to reinforce the stationery aesthetic; Pair Quicksand headings with Nunito body text — the rounded letterforms are essential to the soft feel; Add bouncy spring easing (cubic-bezier(0.34, 1.56, 0.64, 1)) on hover and focus transitions; Use dashed or dotted borders instead of solid ones for card outlines and separators; Include small pastel category dots (8px circles) as inline decorators next to labels and tags; Keep text color as soft dark purple (#3d2c4a) instead of pure black — softness applies to typography too; Use emoji or SVG sticker illustrations as decorative accents in headers and empty states; Maintain generous padding inside rounded containers — cramped content inside round shapes looks broken
- Do not: Never use sharp corners (border-radius: 0) on any visible element — even dividers should have rounded ends; Never use pure black (#000) text or borders — always use the soft dark purple or muted lavender; Do not use heavy drop shadows with gray tints — always tint shadows with the pastel palette; Never use more than three gradient colors on a single element — two pastel stops per gradient maximum; Do not make animations last longer than 500ms — bouncy should feel snappy, not sluggish; Never use harsh solid borders thicker than 2px — thick borders should always be dashed or dotted; Do not place small text on gradient backgrounds — gradients are for decorative elements and large text only; Avoid using the error coral (#ff6b6b) for anything other than actual errors — it is still cute but has semantic meaning; Do not skip hover states on interactive elements — every clickable element must have a visible bounce response; Never use dark backgrounds — this is a light-mode-only design language; dark mode would kill the pastel palette
## 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 KawaiiOrganizerShadcnKit() {
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">Kawaii Organizer</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
{
"breakpoints": {
"desktop": {
"columns": 12,
"min_width": "1200px",
"sidebar": "260px with pastel accent bar"
},
"mobile": {
"columns": 4,
"min_width": "375px",
"sidebar": "Hidden — bottom tab bar with pill-shaped active indicator"
},
"tablet": {
"columns": 8,
"min_width": "768px",
"sidebar": "Collapsed to icon strip with emoji-style icons"
}
},
"density": {
"comfortable": {
"button_height": "42px pill-shaped",
"input_height": "44px with 9999px border-radius",
"row_height": "52px for list items, 48px for table rows"
},
"compact": {
"button_height": "34px pill-shaped",
"input_height": "36px with 9999px border-radius",
"row_height": "38px for list items, 34px for table rows"
},
"default_mode": "comfortable"
},
"grid": {
"column_behavior": "Fluid columns with rounded card children that maintain 16-24px internal padding",
"gutter": "20px",
"margin": "40px on desktop, 24px on tablet, 16px on mobile",
"max_width": "1200px",
"type": "12-column"
},
"whitespace": {
"approach": "Generous padding so rounded elements never feel cramped — the softness needs room to breathe",
"card_gap": "20px",
"content_padding": "20px inside cards, 16px inside compact widgets",
"section_gap": "48px on desktop, 36px on tablet, 24px on mobile"
}
}
preview shotscompatibility fallback
{
"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-019dacd6-373e-7ed0-a1b6-ed40c199e33e",
"name": "Kawaii Organizer",
"slug": "kawaii-organizer"
},
"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": [
"border-radius: 9999px on every button, badge, input, tab, toggle, progress rail, and pagination control; 24px is reserved for larger sticker cards only.",
"box-shadow: 0 4px 16px rgba(255,126,179,0.12) and related pastel-tinted shadows float elements like peel-off stationery stickers rather than gray SaaS panels.",
"background: linear-gradient(135deg, #fef7ff, #f0f7ff) appears only as subtle surface washes and hero stationery panels, never as noisy rainbow decoration.",
"border: 2px dashed #eadfed or dotted pastel outlines replace harsh solid rules, giving cards the feel of perforated notebook labels.",
"transition: transform 350ms cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 350ms cubic-bezier(0.34, 1.56, 0.64, 1) creates a small bouncy lift on every interactive element."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "pebble",
"border": "dashed",
"underlay": false,
"grain": false,
"stickerBadges": true,
"motion": "lift",
"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": "Kawaii Organizer 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": [
"Use pill-shaped (border-radius: 9999px) buttons and badges everywhere — this is the single strongest visual signature",
"Apply pastel-tinted shadows (e.g. rgba(255,126,179,0.12)) rather than gray shadows — every shadow should carry a hint of its parent element color",
"Use the rainbow gradient on progress bars, loading states, and decorative dividers to reinforce the stationery aesthetic",
"Pair Quicksand headings with Nunito body text — the rounded letterforms are essential to the soft feel",
"Add bouncy spring easing (cubic-bezier(0.34, 1.56, 0.64, 1)) on hover and focus transitions",
"Use dashed or dotted borders instead of solid ones for card outlines and separators",
"Include small pastel category dots (8px circles) as inline decorators next to labels and tags",
"Keep text color as soft dark purple (#3d2c4a) instead of pure black — softness applies to typography too",
"Use emoji or SVG sticker illustrations as decorative accents in headers and empty states",
"Maintain generous padding inside rounded containers — cramped content inside round shapes looks broken"
],
"dont": [
"Never use sharp corners (border-radius: 0) on any visible element — even dividers should have rounded ends",
"Never use pure black (#000) text or borders — always use the soft dark purple or muted lavender",
"Do not use heavy drop shadows with gray tints — always tint shadows with the pastel palette",
"Never use more than three gradient colors on a single element — two pastel stops per gradient maximum",
"Do not make animations last longer than 500ms — bouncy should feel snappy, not sluggish",
"Never use harsh solid borders thicker than 2px — thick borders should always be dashed or dotted",
"Do not place small text on gradient backgrounds — gradients are for decorative elements and large text only",
"Avoid using the error coral (#ff6b6b) for anything other than actual errors — it is still cute but has semantic meaning",
"Do not skip hover states on interactive elements — every clickable element must have a visible bounce response",
"Never use dark backgrounds — this is a light-mode-only design language; dark mode would kill the pastel palette"
]
}
}
related
More like this
Kawaii Watercolor Packagingshares kawaii-stickers · tokyo-signage · bright-popMemphis Postmodern Graphics UIshares kawaii-stickers · tokyo-signage · bright-popNeo-Kawaii Techshares kawaii-stickers · tokyo-signage · bright-popShibuya Sign-Density Popshares kawaii-stickers · tokyo-signage · bright-popSuperflat Pop Graphicsshares kawaii-stickers · tokyo-signage · bright-popTokyo Indie Zine Illustrationshares kawaii-stickers · tokyo-signage · bright-pop