back to gallerydo avoid
design language·digital-watercolor-texture-system
Digital Watercolor Texture System
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
Digital Watercolor Texture System translates the physical behavior of transparent pigment on paper into a controlled interface and brand-illustration language. It treats watercolor not as a pastel mood board, but as a material system: translucent washes reveal layers below, granulated pigment creates quiet data texture, paper fibers become the surface logic, and restrained splashes mark moments of emphasis. The language is built for product screens that need warmth without losing precision: editorial dashboards, creative workflow tools, illustration asset libraries, and brand storytelling interfaces where hand-made evidence should coexist with clear hierarchy.
values
Transparency as structurePaper as interface surfaceControlled bloomPigment restraintIllustrative utilityReadable craft
anti-values
×No pastel-template softness: avoid candy backgrounds, lavender cards, mint panels, or generalized feminine watercolor clichés.×No crypto-style gradients or glowing rainbow buttons; watercolor translucency must be simulated with layered washes and texture masks, not glossy gradients.×No messy art-board clutter: splatters and blooms are sparse annotations tied to hierarchy, alerts, selected states, or brand illustration moments.×No default browser UI; every control must feel printed, masked, and deliberately placed on paper.
tokens
colors17 items
primary
#111111
secondary
#3B3B36
accent
#276C8E
background
#FFFFFF
surface
#FFFFFF
text
#111111
muted
#6E6A61
border
#C9C1B2
error
#A33A32
success
#3F7A52
warning
#B87524
info
#276C8E
paper_fiber
#E8E1D4
wash_blue
#D9EEF5
wash_ochre
#F2E1C6
wash_rose
#E8C9C3
pigment_grain
#5A6D73
typography8 items
- heading font
- Fraunces
- body font
- IBM Plex Sans
- mono font
- IBM Plex Mono
- base size
- 16px
- scale ratio
- 1.25
- line height
- 1.5
- letter spacing
- -0.02em
- google fonts url
- https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,650;9..144,750&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
spacing2 items
- base
- 8px
- scale
- 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px
radii5 items
- none
- 0px
- sm
- 16px
- md
- 16px
- lg
- 24px
- full
- 9999px
shadows3 items
- sm
- 0 1px 0 rgba(17,17,17,0.08), 0 8px 24px rgba(39,108,142,0.06)
- md
- 0 2px 0 rgba(17,17,17,0.10), 0 18px 44px rgba(39,108,142,0.10)
- lg
- 0 4px 0 rgba(17,17,17,0.12), 0 30px 80px rgba(39,108,142,0.14)
surfaces3 items
- treatment
- paper
- card style
- White and translucent mineral wash panels with visible paper grain, uneven pigment edges, and sparse splatter marks.
- bg pattern
- noise
borders4 items
- default width
- 1px
- accent width
- 2px
- style
- solid
- character
- Thin ink-and-paper borders, often paired with dry-brush dashed overlays to suggest masked watercolor edges without losing UI precision.
motion3 items
- duration
- 180ms
- easing
- cubic-bezier(0.2, 0.8, 0.2, 1)
- philosophy
- snappy but absorbent: controls respond quickly, then settle like pigment soaking into paper.
rules
composition
Use a disciplined editorial grid under tactile watercolor layers: large white paper fields, compact ink typography, and wash panels that cluster around real workflow objects. Keep illustration panels larger than controls so the material identity is visible, but use strict alignment for tables, forms, and navigation.
hierarchy
Headlines use Fraunces in substantial optical sizes; UI labels use IBM Plex Sans uppercase or semibold; numeric and asset metadata use IBM Plex Mono. Priority is signaled by ink weight, wash opacity, and occasional accent splatter rather than many colors.
density
Medium density with generous breathing room around illustration and analysis panels. Data can be compact, but every group needs at least 24px internal padding so the paper grain and wash texture remain perceptible.
signature patterns
Layered wash pseudo-elements: cards use ::before and ::after with low-opacity blue or ochre radial pigment stains clipped inside 16px corners.Paper grain overlay: the page and panels use stacked radial-gradient speckles plus faint repeating-linear fibers at very low opacity.Dry-brush selection stroke: active tabs, focused inputs, and selected rows use a 2px dashed accent border with a repeating-linear texture mask.Restrained splatter clusters: alerts, primary buttons, and status badges include tiny absolute radial dots in the accent color at one corner only.Negative-space wash masks: hero artwork and preview cards use irregular white inset shapes and soft bloom halos to mimic masked watercolor paper.
layout
density
Medium editorial density: spacious presentation areas with compact but legible operational controls. The texture needs room to breathe, so avoid edge-to-edge packed cards.
grid
Desktop uses a 12-column max-width 1320px grid with 24px gutters; the workspace splits into a 280px palette sidebar, a central illustration review canvas, and a right inspection/data column. Tablet reduces to 8 columns and stacks the inspector below the canvas. Mobile uses one column with 16px page gutters and horizontal scroll only inside the data table.
breakpoints
Desktop >= 1200px, tablet at 1024px and 768px, phone at 480px. At <=1024px sidebars collapse into stacked panels; at <=480px all actions become full-width and dialogs fit within 92vw.
whitespace
Whitespace behaves like untouched paper. Important content is framed by open white margins, while washes sit behind content as translucent zones rather than filled blocks.
guidance
- Use pure #FFFFFF as the base paper and add texture through subtle overlays, not tinted backgrounds.
- Build color through transparent wash layers with opacity between 0.08 and 0.22 so underlying typography remains crisp.
- Reserve #276C8E accent for primary actions, active states, and a few splatter details; let black ink carry most hierarchy.
- Apply -0.02em letter spacing globally and use Fraunces only for expressive headings or artwork titles.
- Keep border radii on the strict 16px/24px/9999px scale and use 16px for most cards and controls.
- Make texture functional: use dry-brush strokes for selected states, halos for emphasis, and paper grain for surface continuity.
- Wrap dense tables on small screens in an overflow container while preserving ink rules and zebra wash rows.
- Test contrast over every wash layer; text should sit on white or extremely low-opacity pigment.
- Do not use gradient buttons, rainbow washes, glossy glow cards, or colorful landing-page effects.
- Do not use pastel panel backgrounds as the main identity; watercolor texture should be layered over white paper.
- Do not scatter splatters everywhere; more than one cluster per panel makes the interface feel messy.
- Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Do not let texture reduce readability in forms, tables, modal content, or disabled states.
- Do not create a component catalog layout; components must appear inside a believable illustration workflow scene.
- Do not rely on default select, checkbox, radio, or button styling.
- Do not use Poppins, Montserrat, DM Sans, Roboto, or Space Grotesk.
katagami spec
# Digital Watercolor Texture System
## Philosophy
Digital Watercolor Texture System translates the physical behavior of transparent pigment on paper into a controlled interface and brand-illustration language. It treats watercolor not as a pastel mood board, but as a material system: translucent washes reveal layers below, granulated pigment creates quiet data texture, paper fibers become the surface logic, and restrained splashes mark moments of emphasis. The language is built for product screens that need warmth without losing precision: editorial dashboards, creative workflow tools, illustration asset libraries, and brand storytelling interfaces where hand-made evidence should coexist with clear hierarchy.
### Values
- {"name":"Transparency as structure","explanation":"Color is built through low-opacity layers rather than opaque fills, echoing watercolor glazing and making states feel additive instead of heavy."}
- {"name":"Paper as interface surface","explanation":"Subtle scanned-grain texture is present across panels and background so the surface feels fibrous, absorbent, and tactile while remaining legible."}
- {"name":"Controlled bloom","explanation":"Wet-on-wet effects appear as soft halos and feathered stains around priority areas, never as uncontrolled decorative gradients."}
- {"name":"Pigment restraint","explanation":"The palette stays mostly black, white, ink, and mineral neutrals with one mineral blue accent and rare warm splatter marks for emphasis."}
- {"name":"Illustrative utility","explanation":"Brushwork, masking, dry-brush edges, and negative space support product comprehension instead of becoming ornamental wallpaper."}
- {"name":"Readable craft","explanation":"Typography and spacing remain crisp, editorial, and digital; hand-made texture never compromises accessibility or interaction clarity."}
### Anti-Values
- No pastel-template softness: avoid candy backgrounds, lavender cards, mint panels, or generalized feminine watercolor clichés.
- No crypto-style gradients or glowing rainbow buttons; watercolor translucency must be simulated with layered washes and texture masks, not glossy gradients.
- No messy art-board clutter: splatters and blooms are sparse annotations tied to hierarchy, alerts, selected states, or brand illustration moments.
- No default browser UI; every control must feel printed, masked, and deliberately placed on paper.
### Visual Character
- Pure white paper field with a CSS grain overlay made from radial noise dots and faint linear fibers on every major surface.
- Cards and dialogs use translucent wash fills with multiply-like layered pseudo-elements, showing soft uneven pigment density at edges.
- Section dividers and selected states use dry-brush 2px strokes built from dashed borders plus masked repeating-linear texture.
- Accent moments use small restrained splatter clusters and feathered bloom halos positioned near badges, alerts, and primary actions.
- Negative-space masks create irregular torn-wash corners on illustration panels while keeping UI containers on a disciplined 16px radius scale.
## Tokens
### Colors
| Name | Value |
|------|-------|
| primary | `#111111` |
| secondary | `#3B3B36` |
| accent | `#276C8E` |
| background | `#FFFFFF` |
| surface | `#FFFFFF` |
| text | `#111111` |
| muted | `#6E6A61` |
| border | `#C9C1B2` |
| error | `#A33A32` |
| success | `#3F7A52` |
| warning | `#B87524` |
| info | `#276C8E` |
| paper_fiber | `#E8E1D4` |
| wash_blue | `#D9EEF5` |
| wash_ochre | `#F2E1C6` |
| wash_rose | `#E8C9C3` |
| pigment_grain | `#5A6D73` |
### Typography
- **Heading Font**: Fraunces
- **Body Font**: IBM Plex Sans
- **Mono Font**: IBM Plex Mono
- **Base Size**: 16px
- **Scale Ratio**: 1.25
- **Line Height**: 1.5
- **Letter Spacing**: -0.02em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,650;9..144,750&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
### Spacing
- **Base**: 8px
- **Scale**: ["4px","8px","12px","16px","24px","32px","48px","64px","96px"]
### Radii
- **None**: 0px
- **Sm**: 16px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px
### Shadows
- **Sm**: 0 1px 0 rgba(17,17,17,0.08), 0 8px 24px rgba(39,108,142,0.06)
- **Md**: 0 2px 0 rgba(17,17,17,0.10), 0 18px 44px rgba(39,108,142,0.10)
- **Lg**: 0 4px 0 rgba(17,17,17,0.12), 0 30px 80px rgba(39,108,142,0.14)
### Surfaces
- **Treatment**: paper
- **Card Style**: White and translucent mineral wash panels with visible paper grain, uneven pigment edges, and sparse splatter marks.
- **Bg Pattern**: noise
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Thin ink-and-paper borders, often paired with dry-brush dashed overlays to suggest masked watercolor edges without losing UI precision.
### Motion
- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0.8, 0.2, 1)
- **Philosophy**: snappy but absorbent: controls respond quickly, then settle like pigment soaking into paper.
## Rules
### Composition
Use a disciplined editorial grid under tactile watercolor layers: large white paper fields, compact ink typography, and wash panels that cluster around real workflow objects. Keep illustration panels larger than controls so the material identity is visible, but use strict alignment for tables, forms, and navigation.
### Hierarchy
Headlines use Fraunces in substantial optical sizes; UI labels use IBM Plex Sans uppercase or semibold; numeric and asset metadata use IBM Plex Mono. Priority is signaled by ink weight, wash opacity, and occasional accent splatter rather than many colors.
### Density
Medium density with generous breathing room around illustration and analysis panels. Data can be compact, but every group needs at least 24px internal padding so the paper grain and wash texture remain perceptible.
### Signature Patterns
- Layered wash pseudo-elements: cards use ::before and ::after with low-opacity blue or ochre radial pigment stains clipped inside 16px corners.
- Paper grain overlay: the page and panels use stacked radial-gradient speckles plus faint repeating-linear fibers at very low opacity.
- Dry-brush selection stroke: active tabs, focused inputs, and selected rows use a 2px dashed accent border with a repeating-linear texture mask.
- Restrained splatter clusters: alerts, primary buttons, and status badges include tiny absolute radial dots in the accent color at one corner only.
- Negative-space wash masks: hero artwork and preview cards use irregular white inset shapes and soft bloom halos to mimic masked watercolor paper.
## Layout
### Density
Medium editorial density: spacious presentation areas with compact but legible operational controls. The texture needs room to breathe, so avoid edge-to-edge packed cards.
### Grid
Desktop uses a 12-column max-width 1320px grid with 24px gutters; the workspace splits into a 280px palette sidebar, a central illustration review canvas, and a right inspection/data column. Tablet reduces to 8 columns and stacks the inspector below the canvas. Mobile uses one column with 16px page gutters and horizontal scroll only inside the data table.
### Breakpoints
Desktop >= 1200px, tablet at 1024px and 768px, phone at 480px. At <=1024px sidebars collapse into stacked panels; at <=480px all actions become full-width and dialogs fit within 92vw.
### Whitespace
Whitespace behaves like untouched paper. Important content is framed by open white margins, while washes sit behind content as translucent zones rather than filled blocks.
## Guidance
### Do
- Use pure #FFFFFF as the base paper and add texture through subtle overlays, not tinted backgrounds.
- Build color through transparent wash layers with opacity between 0.08 and 0.22 so underlying typography remains crisp.
- Reserve #276C8E accent for primary actions, active states, and a few splatter details; let black ink carry most hierarchy.
- Apply -0.02em letter spacing globally and use Fraunces only for expressive headings or artwork titles.
- Keep border radii on the strict 16px/24px/9999px scale and use 16px for most cards and controls.
- Make texture functional: use dry-brush strokes for selected states, halos for emphasis, and paper grain for surface continuity.
- Wrap dense tables on small screens in an overflow container while preserving ink rules and zebra wash rows.
- Test contrast over every wash layer; text should sit on white or extremely low-opacity pigment.
### Don't
- Do not use gradient buttons, rainbow washes, glossy glow cards, or colorful landing-page effects.
- Do not use pastel panel backgrounds as the main identity; watercolor texture should be layered over white paper.
- Do not scatter splatters everywhere; more than one cluster per panel makes the interface feel messy.
- Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Do not let texture reduce readability in forms, tables, modal content, or disabled states.
- Do not create a component catalog layout; components must appear inside a believable illustration workflow scene.
- Do not rely on default select, checkbox, radio, or button styling.
- Do not use Poppins, Montserrat, DM Sans, Roboto, or Space Grotesk.
### Usage Context
Best for creative workflow products, brand illustration systems, editorial dashboards, educational art tools, nonprofit storytelling, and design asset managers that need human-made texture with rigorous UI behavior.
### Accessibility
Maintain WCAG AA contrast by placing text on white or near-white regions, never directly on dense pigment. Focus states use visible dry-brush accent outlines plus box-shadow. Touch targets are at least 44px, disabled states reduce opacity while preserving labels, and motion is short with no parallax or flashing texture.
DESIGN.md
---
version: "alpha"
name: "Digital Watercolor Texture System"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
primary: "#111111"
secondary: "#3B3B36"
accent: "#276C8E"
background: "#FFFFFF"
surface: "#FFFFFF"
text: "#111111"
muted: "#6E6A61"
border: "#C9C1B2"
error: "#A33A32"
success: "#3F7A52"
warning: "#B87524"
info: "#276C8E"
paper_fiber: "#E8E1D4"
wash_blue: "#D9EEF5"
wash_ochre: "#F2E1C6"
wash_rose: "#E8C9C3"
pigment_grain: "#5A6D73"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "IBM Plex Sans"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "16px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
components:
color-reference-primary:
backgroundColor: "{colors.primary}"
color-reference-secondary:
backgroundColor: "{colors.secondary}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-background:
backgroundColor: "{colors.background}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-paper_fiber:
backgroundColor: "{colors.paper_fiber}"
color-reference-wash_blue:
backgroundColor: "{colors.wash_blue}"
color-reference-wash_ochre:
backgroundColor: "{colors.wash_ochre}"
color-reference-wash_rose:
backgroundColor: "{colors.wash_rose}"
color-reference-pigment_grain:
backgroundColor: "{colors.pigment_grain}"
button-primary:
backgroundColor: "{colors.primary}"
textColor: "#ffffff"
typography: "{typography.label-md}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
card-surface:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
padding: "{spacing.md}"
input-default:
backgroundColor: "{colors.surface}"
textColor: "{colors.text}"
rounded: "{rounded.md}"
height: "44px"
---
# Digital Watercolor Texture System
## Overview
Digital Watercolor Texture System translates the physical behavior of transparent pigment on paper into a controlled interface and brand-illustration language. It treats watercolor not as a pastel mood board, but as a material system: translucent washes reveal layers below, granulated pigment creates quiet data texture, paper fibers become the surface logic, and restrained splashes mark moments of emphasis. The language is built for product screens that need warmth without losing precision: editorial dashboards, creative workflow tools, illustration asset libraries, and brand storytelling interfaces where hand-made evidence should coexist with clear hierarchy.
### Values
- {"name":"Transparency as structure","explanation":"Color is built through low-opacity layers rather than opaque fills, echoing watercolor glazing and making states feel additive instead of heavy."}
- {"name":"Paper as interface surface","explanation":"Subtle scanned-grain texture is present across panels and background so the surface feels fibrous, absorbent, and tactile while remaining legible."}
- {"name":"Controlled bloom","explanation":"Wet-on-wet effects appear as soft halos and feathered stains around priority areas, never as uncontrolled decorative gradients."}
- {"name":"Pigment restraint","explanation":"The palette stays mostly black, white, ink, and mineral neutrals with one mineral blue accent and rare warm splatter marks for emphasis."}
- {"name":"Illustrative utility","explanation":"Brushwork, masking, dry-brush edges, and negative space support product comprehension instead of becoming ornamental wallpaper."}
- {"name":"Readable craft","explanation":"Typography and spacing remain crisp, editorial, and digital; hand-made texture never compromises accessibility or interaction clarity."}
### Anti-Values
- No pastel-template softness: avoid candy backgrounds, lavender cards, mint panels, or generalized feminine watercolor clichés.
- No crypto-style gradients or glowing rainbow buttons; watercolor translucency must be simulated with layered washes and texture masks, not glossy gradients.
- No messy art-board clutter: splatters and blooms are sparse annotations tied to hierarchy, alerts, selected states, or brand illustration moments.
- No default browser UI; every control must feel printed, masked, and deliberately placed on paper.
### Visual Character
- Pure white paper field with a CSS grain overlay made from radial noise dots and faint linear fibers on every major surface.
- Cards and dialogs use translucent wash fills with multiply-like layered pseudo-elements, showing soft uneven pigment density at edges.
- Section dividers and selected states use dry-brush 2px strokes built from dashed borders plus masked repeating-linear texture.
- Accent moments use small restrained splatter clusters and feathered bloom halos positioned near badges, alerts, and primary actions.
- Negative-space masks create irregular torn-wash corners on illustration panels while keeping UI containers on a disciplined 16px radius scale.
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| primary | `#111111` |
| secondary | `#3B3B36` |
| accent | `#276C8E` |
| background | `#FFFFFF` |
| surface | `#FFFFFF` |
| text | `#111111` |
| muted | `#6E6A61` |
| border | `#C9C1B2` |
| error | `#A33A32` |
| success | `#3F7A52` |
| warning | `#B87524` |
| info | `#276C8E` |
| paper_fiber | `#E8E1D4` |
| wash_blue | `#D9EEF5` |
| wash_ochre | `#F2E1C6` |
| wash_rose | `#E8C9C3` |
| pigment_grain | `#5A6D73` |
## Typography
- **Headline-Lg**: Fraunces, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 16px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
### Density
Medium editorial density: spacious presentation areas with compact but legible operational controls. The texture needs room to breathe, so avoid edge-to-edge packed cards.
### Grid
Desktop uses a 12-column max-width 1320px grid with 24px gutters; the workspace splits into a 280px palette sidebar, a central illustration review canvas, and a right inspection/data column. Tablet reduces to 8 columns and stacks the inspector below the canvas. Mobile uses one column with 16px page gutters and horizontal scroll only inside the data table.
### Breakpoints
Desktop >= 1200px, tablet at 1024px and 768px, phone at 480px. At <=1024px sidebars collapse into stacked panels; at <=480px all actions become full-width and dialogs fit within 92vw.
### Whitespace
Whitespace behaves like untouched paper. Important content is framed by open white margins, while washes sit behind content as translucent zones rather than filled blocks.
## Elevation & Depth
### Shadows
- **Sm**: 0 1px 0 rgba(17,17,17,0.08), 0 8px 24px rgba(39,108,142,0.06)
- **Md**: 0 2px 0 rgba(17,17,17,0.10), 0 18px 44px rgba(39,108,142,0.10)
- **Lg**: 0 4px 0 rgba(17,17,17,0.12), 0 30px 80px rgba(39,108,142,0.14)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `16px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: paper
- **Card Style**: White and translucent mineral wash panels with visible paper grain, uneven pigment edges, and sparse splatter marks.
- **Bg Pattern**: noise
### Borders
- **Default Width**: 1px
- **Accent Width**: 2px
- **Style**: solid
- **Character**: Thin ink-and-paper borders, often paired with dry-brush dashed overlays to suggest masked watercolor edges without losing UI precision.
## Components
### Composition
Use a disciplined editorial grid under tactile watercolor layers: large white paper fields, compact ink typography, and wash panels that cluster around real workflow objects. Keep illustration panels larger than controls so the material identity is visible, but use strict alignment for tables, forms, and navigation.
### Hierarchy
Headlines use Fraunces in substantial optical sizes; UI labels use IBM Plex Sans uppercase or semibold; numeric and asset metadata use IBM Plex Mono. Priority is signaled by ink weight, wash opacity, and occasional accent splatter rather than many colors.
### Density
Medium density with generous breathing room around illustration and analysis panels. Data can be compact, but every group needs at least 24px internal padding so the paper grain and wash texture remain perceptible.
### Signature Patterns
- Layered wash pseudo-elements: cards use ::before and ::after with low-opacity blue or ochre radial pigment stains clipped inside 16px corners.
- Paper grain overlay: the page and panels use stacked radial-gradient speckles plus faint repeating-linear fibers at very low opacity.
- Dry-brush selection stroke: active tabs, focused inputs, and selected rows use a 2px dashed accent border with a repeating-linear texture mask.
- Restrained splatter clusters: alerts, primary buttons, and status badges include tiny absolute radial dots in the accent color at one corner only.
- Negative-space wash masks: hero artwork and preview cards use irregular white inset shapes and soft bloom halos to mimic masked watercolor paper.
## 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/digital-watercolor-texture-system/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 pure #FFFFFF as the base paper and add texture through subtle overlays, not tinted backgrounds.
- Do Build color through transparent wash layers with opacity between 0.08 and 0.22 so underlying typography remains crisp.
- Do Reserve #276C8E accent for primary actions, active states, and a few splatter details; let black ink carry most hierarchy.
- Do Apply -0.02em letter spacing globally and use Fraunces only for expressive headings or artwork titles.
- Do Keep border radii on the strict 16px/24px/9999px scale and use 16px for most cards and controls.
- Do Make texture functional: use dry-brush strokes for selected states, halos for emphasis, and paper grain for surface continuity.
- Do Wrap dense tables on small screens in an overflow container while preserving ink rules and zebra wash rows.
- Do Test contrast over every wash layer; text should sit on white or extremely low-opacity pigment.
- Don't Do not use gradient buttons, rainbow washes, glossy glow cards, or colorful landing-page effects.
- Don't Do not use pastel panel backgrounds as the main identity; watercolor texture should be layered over white paper.
- Don't Do not scatter splatters everywhere; more than one cluster per panel makes the interface feel messy.
- Don't Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.
- Don't Do not let texture reduce readability in forms, tables, modal content, or disabled states.
- Don't Do not create a component catalog layout; components must appear inside a believable illustration workflow scene.
- Don't Do not rely on default select, checkbox, radio, or button styling.
- Don't Do not use Poppins, Montserrat, DM Sans, Roboto, or Space Grotesk.
### Usage Context
Best for creative workflow products, brand illustration systems, editorial dashboards, educational art tools, nonprofit storytelling, and design asset managers that need human-made texture with rigorous UI behavior.
### Accessibility
Maintain WCAG AA contrast by placing text on white or near-white regions, never directly on dense pigment. Focus states use visible dry-brush accent outlines plus box-shadow. Touch targets are at least 44px, disabled states reduce opacity while preserving labels, and motion is short with no parallax or flashing texture.
shadcn/ui theme
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "digital-watercolor-texture-system",
"type": "registry:theme",
"title": "Digital Watercolor Texture System shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFFFFF",
"foreground": "#111111",
"card": "#FFFFFF",
"card-foreground": "#111111",
"popover": "#FFFFFF",
"popover-foreground": "#111111",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#3B3B36",
"secondary-foreground": "#ffffff",
"muted": "#6E6A61",
"muted-foreground": "#111111",
"accent": "#276C8E",
"accent-foreground": "#ffffff",
"destructive": "#A33A32",
"border": "#C9C1B2",
"input": "#C9C1B2",
"ring": "#276C8E",
"chart-1": "#111111",
"chart-2": "#3B3B36",
"chart-3": "#276C8E",
"chart-4": "#3F7A52",
"chart-5": "#B87524",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#111111",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#276C8E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#C9C1B2",
"sidebar-ring": "#276C8E",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#276C8E",
"accent-foreground": "#ffffff",
"destructive": "#A33A32",
"border": "#303642",
"input": "#303642",
"ring": "#276C8E",
"chart-1": "#111111",
"chart-2": "#3B3B36",
"chart-3": "#276C8E",
"chart-4": "#3F7A52",
"chart-5": "#B87524",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#276C8E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#276C8E",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "digital-watercolor-texture-system",
"slug": "digital-watercolor-texture-system",
"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",
"background",
"border",
"error",
"info",
"muted",
"paper_fiber",
"pigment_grain",
"primary",
"secondary",
"success",
"surface",
"text",
"warning",
"wash_blue",
"wash_ochre",
"wash_rose"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```in the wild
embodiments
the full element showcase
embodiment · digital-watercolor-texture-system
DESIGN.md
at a glance
Typography
headline-lgFraunces · 31px · 700
The quick brown fox jumps
headline-mdFraunces · 25px · 600
The quick brown fox jumps
body-mdIBM Plex Sans · 16px · 400
The quick brown fox jumps
label-mdIBM Plex Mono · 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
- base8px
- xs4px
- sm8px
- md12px
- lg16px
- xl24px
- 2xl32px
- 3xl48px
- 4xl64px
- step-896px
Shape
none0px
sm16px
md16px
lg24px
full9999px
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: #FFFFFF;
--foreground: #111111;
--card: #FFFFFF;
--card-foreground: #111111;
--popover: #FFFFFF;
--popover-foreground: #111111;
--primary: #111111;
--primary-foreground: #ffffff;
--secondary: #3B3B36;
--secondary-foreground: #ffffff;
--muted: #6E6A61;
--muted-foreground: #111111;
--accent: #276C8E;
--accent-foreground: #ffffff;
--destructive: #A33A32;
--border: #C9C1B2;
--input: #C9C1B2;
--ring: #276C8E;
--chart-1: #111111;
--chart-2: #3B3B36;
--chart-3: #276C8E;
--chart-4: #3F7A52;
--chart-5: #B87524;
--sidebar: #FFFFFF;
--sidebar-foreground: #111111;
--sidebar-primary: #111111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #276C8E;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #C9C1B2;
--sidebar-ring: #276C8E;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #111111;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #276C8E;
--accent-foreground: #ffffff;
--destructive: #A33A32;
--border: #303642;
--input: #303642;
--ring: #276C8E;
--chart-1: #111111;
--chart-2: #3B3B36;
--chart-3: #276C8E;
--chart-4: #3F7A52;
--chart-5: #B87524;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #111111;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #276C8E;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #276C8E;
--radius: 16px;
}
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 DigitalWatercolorTextureSystemShadcnKit() {
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">Digital Watercolor Texture System</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": "digital-watercolor-texture-system",
"type": "registry:theme",
"title": "Digital Watercolor Texture System shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFFFFF",
"foreground": "#111111",
"card": "#FFFFFF",
"card-foreground": "#111111",
"popover": "#FFFFFF",
"popover-foreground": "#111111",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#3B3B36",
"secondary-foreground": "#ffffff",
"muted": "#6E6A61",
"muted-foreground": "#111111",
"accent": "#276C8E",
"accent-foreground": "#ffffff",
"destructive": "#A33A32",
"border": "#C9C1B2",
"input": "#C9C1B2",
"ring": "#276C8E",
"chart-1": "#111111",
"chart-2": "#3B3B36",
"chart-3": "#276C8E",
"chart-4": "#3F7A52",
"chart-5": "#B87524",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#111111",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#276C8E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#C9C1B2",
"sidebar-ring": "#276C8E",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#111111",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#276C8E",
"accent-foreground": "#ffffff",
"destructive": "#A33A32",
"border": "#303642",
"input": "#303642",
"ring": "#276C8E",
"chart-1": "#111111",
"chart-2": "#3B3B36",
"chart-3": "#276C8E",
"chart-4": "#3F7A52",
"chart-5": "#B87524",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#111111",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#276C8E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#276C8E",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "digital-watercolor-texture-system",
"slug": "digital-watercolor-texture-system",
"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",
"background",
"border",
"error",
"info",
"muted",
"paper_fiber",
"pigment_grain",
"primary",
"secondary",
"success",
"surface",
"text",
"warning",
"wash_blue",
"wash_ochre",
"wash_rose"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"spacing": [
"base",
"scale"
],
"radii": [
"full",
"lg",
"md",
"none",
"sm"
],
"shadows": [
"lg",
"md",
"sm"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
component recipescompatibility fallback
# Digital Watercolor Texture System shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `digital-watercolor-texture-system`
Slug: `digital-watercolor-texture-system`
## Intent
Digital Watercolor Texture System translates the physical behavior of transparent pigment on paper into a controlled interface and brand-illustration language. It treats watercolor not as a pastel mood board, but as a material system: translucent washes reveal layers below, granulated pigment creates quiet data texture, paper fibers become the surface logic, and restrained splashes mark moments of emphasis. The language is built for product screens that need warmth without losing precision: editorial dashboards, creative workflow tools, illustration asset libraries, and brand storytelling interfaces where hand-made evidence should coexist with clear hierarchy.
## 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:
{
"primary": "#111111",
"secondary": "#3B3B36",
"accent": "#276C8E",
"background": "#FFFFFF",
"surface": "#FFFFFF",
"text": "#111111",
"muted": "#6E6A61",
"border": "#C9C1B2",
"error": "#A33A32",
"success": "#3F7A52",
"warning": "#B87524",
"info": "#276C8E",
"paper_fiber": "#E8E1D4",
"wash_blue": "#D9EEF5",
"wash_ochre": "#F2E1C6",
"wash_rose": "#E8C9C3",
"pigment_grain": "#5A6D73"
}
Typography:
{
"heading_font": "Fraunces",
"body_font": "IBM Plex Sans",
"mono_font": "IBM Plex Mono",
"base_size": "16px",
"scale_ratio": 1.25,
"line_height": 1.5,
"letter_spacing": "-0.02em",
"google_fonts_url": "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,650;9..144,750&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap"
}
## Visual character to preserve
- Pure white paper field with a CSS grain overlay made from radial noise dots and faint linear fibers on every major surface.
- Cards and dialogs use translucent wash fills with multiply-like layered pseudo-elements, showing soft uneven pigment density at edges.
- Section dividers and selected states use dry-brush 2px strokes built from dashed borders plus masked repeating-linear texture.
- Accent moments use small restrained splatter clusters and feathered bloom halos positioned near badges, alerts, and primary actions.
- Negative-space masks create irregular torn-wash corners on illustration panels while keeping UI containers on a disciplined 16px radius scale.
## ShadSync visual profile
{
"family": "paper-collage",
"material": "paper",
"contour": "blob",
"border": "dashed",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
}
## Signature component recipes
### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.
### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.
### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.
### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.
### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.
## Preview shots
- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.
## Implementation contract
- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/digital-watercolor-texture-system/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 pure #FFFFFF as the base paper and add texture through subtle overlays, not tinted backgrounds.; Build color through transparent wash layers with opacity between 0.08 and 0.22 so underlying typography remains crisp.; Reserve #276C8E accent for primary actions, active states, and a few splatter details; let black ink carry most hierarchy.; Apply -0.02em letter spacing globally and use Fraunces only for expressive headings or artwork titles.; Keep border radii on the strict 16px/24px/9999px scale and use 16px for most cards and controls.; Make texture functional: use dry-brush strokes for selected states, halos for emphasis, and paper grain for surface continuity.; Wrap dense tables on small screens in an overflow container while preserving ink rules and zebra wash rows.; Test contrast over every wash layer; text should sit on white or extremely low-opacity pigment.
- Do not: Do not use gradient buttons, rainbow washes, glossy glow cards, or colorful landing-page effects.; Do not use pastel panel backgrounds as the main identity; watercolor texture should be layered over white paper.; Do not scatter splatters everywhere; more than one cluster per panel makes the interface feel messy.; Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.; Do not let texture reduce readability in forms, tables, modal content, or disabled states.; Do not create a component catalog layout; components must appear inside a believable illustration workflow scene.; Do not rely on default select, checkbox, radio, or button styling.; Do not use Poppins, Montserrat, DM Sans, Roboto, or Space Grotesk.
## 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 DigitalWatercolorTextureSystemShadcnKit() {
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">Digital Watercolor Texture System</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
{
"density": "Medium editorial density: spacious presentation areas with compact but legible operational controls. The texture needs room to breathe, so avoid edge-to-edge packed cards.",
"grid": "Desktop uses a 12-column max-width 1320px grid with 24px gutters; the workspace splits into a 280px palette sidebar, a central illustration review canvas, and a right inspection/data column. Tablet reduces to 8 columns and stacks the inspector below the canvas. Mobile uses one column with 16px page gutters and horizontal scroll only inside the data table.",
"breakpoints": "Desktop >= 1200px, tablet at 1024px and 768px, phone at 480px. At <=1024px sidebars collapse into stacked panels; at <=480px all actions become full-width and dialogs fit within 92vw.",
"whitespace": "Whitespace behaves like untouched paper. Important content is framed by open white margins, while washes sit behind content as translucent zones rather than filled blocks."
}
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": "digital-watercolor-texture-system",
"name": "Digital Watercolor Texture System",
"slug": "digital-watercolor-texture-system"
},
"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": [
"Pure white paper field with a CSS grain overlay made from radial noise dots and faint linear fibers on every major surface.",
"Cards and dialogs use translucent wash fills with multiply-like layered pseudo-elements, showing soft uneven pigment density at edges.",
"Section dividers and selected states use dry-brush 2px strokes built from dashed borders plus masked repeating-linear texture.",
"Accent moments use small restrained splatter clusters and feathered bloom halos positioned near badges, alerts, and primary actions.",
"Negative-space masks create irregular torn-wash corners on illustration panels while keeping UI containers on a disciplined 16px radius scale."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "blob",
"border": "dashed",
"underlay": true,
"grain": true,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Digital Watercolor Texture System 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 pure #FFFFFF as the base paper and add texture through subtle overlays, not tinted backgrounds.",
"Build color through transparent wash layers with opacity between 0.08 and 0.22 so underlying typography remains crisp.",
"Reserve #276C8E accent for primary actions, active states, and a few splatter details; let black ink carry most hierarchy.",
"Apply -0.02em letter spacing globally and use Fraunces only for expressive headings or artwork titles.",
"Keep border radii on the strict 16px/24px/9999px scale and use 16px for most cards and controls.",
"Make texture functional: use dry-brush strokes for selected states, halos for emphasis, and paper grain for surface continuity.",
"Wrap dense tables on small screens in an overflow container while preserving ink rules and zebra wash rows.",
"Test contrast over every wash layer; text should sit on white or extremely low-opacity pigment."
],
"dont": [
"Do not use gradient buttons, rainbow washes, glossy glow cards, or colorful landing-page effects.",
"Do not use pastel panel backgrounds as the main identity; watercolor texture should be layered over white paper.",
"Do not scatter splatters everywhere; more than one cluster per panel makes the interface feel messy.",
"Do not use random radii such as 8px, 12px, 20px, 32px, or 48px.",
"Do not let texture reduce readability in forms, tables, modal content, or disabled states.",
"Do not create a component catalog layout; components must appear inside a believable illustration workflow scene.",
"Do not rely on default select, checkbox, radio, or button styling.",
"Do not use Poppins, Montserrat, DM Sans, Roboto, or Space Grotesk."
]
}
}
related
More like this
Compact Editorial Ink Fine Artshares ink-wash · brush-gesture · void-compositionCrossover Editorial Ink Fine Artshares ink-wash · brush-gesture · monochrome-contrastE-Ink Neurography Manualsshares ink-wash · brush-gesture · void-compositionEditorial Ink Atelier with Electric Accentsshares ink-wash · brush-gesture · void-compositionEditorial Ink Fine Artshares ink-wash · brush-gesture · void-compositionEnterprise Mono-Grid Interfacesshares ink-wash · brush-gesture · monochrome-contrast