Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Compose interfaces as interdependent ecological zones instead of stacked boxes: a main content stream for the core task, a narrow observation rail for context, and leaf-notched habitat cards for records. Let content bands widen and narrow like terraces instead of enforcing equal widths.
Lead with expressive Fraunces headings, then use mono species-label microcopy, badges, and vein dividers to guide scanning. Important actions sit in moss seed-pod capsules; secondary information recedes into quieter washes.
Moderate-to-airy. Generous internal padding and breathing room between macro sections, local clusters kept tight enough to feel cultivated. Dense data is softened with wash backgrounds, root markers, and rounded containment.
An asymmetric river grid on desktop: a broad content stream paired with a narrower observation rail, sections staggered as terraces. Grids use minmax(0,1fr) so children shrink rather than overflow.
The tablet band (768-1024) is its own layout: two-column grids and a compressed rail, never the mobile column stretched wide. At 768px the rail stacks below the stream and non-essential nav collapses. At 480px single-column terraces, full-width controls, scrollable tables.
Large outer margins and deep panel padding, with tighter plant-like clustering inside cards. Whitespace reads like air pockets between stones: irregular at the macro level, disciplined at the micro level.
Botanical field-note plates: pressed leaves and sedge, soil strata, water rings, seed labels, and muted topographic maps, in muted watercolor and fine ink on pressed-fiber parchment.
fieldplate
muted botanical watercolor and fine ink on parchment; drifting contour lines; sediment bands; soft water-ring stains
muted moss green, warm bark brown, single clay-orange accent on warm parchment
# Mossbank ## Philosophy Mossbank treats interface surfaces like cultivated riverbank terrain: living, breathable, structured by growth rather than mechanical symmetry. Information sits in layers of paper fiber, sediment, and botanical residue; hierarchy emerges through natural strata, branching emphasis, and generous breathing room that implies stewardship and slow confidence over speed. A faithful modernization of Organic Naturalism. ### Values - Cultivated calm over sterile optimization - Material tactility over glossy abstraction - Asymmetric growth over rigid repetition - Readable warmth over corporate distance - Interfaces that imply stewardship, care, and continuity ### Anti-Values - Chrome-heavy futurism - Perfectly rectilinear grids everywhere - Cold fluorescent contrast - Aggressive motion or gamified bounce - Sharp synthetic edges disconnected from material texture ### Visual Character - Important cards carry a clipped upper-right leaf-notch - Large surfaces carry faint drifting topographic contour washes - Headings use tapered branching vein underlines from layered gradients - Controls are seed-pod capsules with soft inset rims and moss pressed states - An asymmetric river layout pairs a broad content stream with a narrow observation rail ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#F4EFE3` | | surface | `#FBF7EE` | | surface_solid | `#F0E9D8` | | text | `#243026` | | muted | `#6F756A` | | border | `rgba(36,48,38,0.08)` | | accent | `#4E6B47` | | accent_2 | `#B86C3A` | | accent_soft | `#5F7E8A` | | on_accent | `#FBF7EE` | | success | `#557A46` | | warning | `#C28A2E` | | error | `#A64B45` | | info | `#5F7E8A` | ### Typography - **Base Size**: 17px - **Body Font**: Literata - **Heading Font**: Fraunces - **Mono Font**: Spline Sans Mono - **Heading Weight**: 600 - **Heading Transform**: none - **Letter Spacing**: -0.02em - **Line Height**: 1.6 - **Scale Ratio**: 1.2 - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Literata:opsz,wght@7..72,400;7..72,500;7..72,600&family=Spline+Sans+Mono:wght@400;500;600&display=swap ### Radii - **None**: 0px - **Md**: 16px - **Lg**: 24px - **Full**: 9999px ### Shadows - **Sm**: 0 2px 10px rgba(36,48,38,0.08) - **Md**: 0 14px 34px rgba(36,48,38,0.11) - **Lg**: 0 26px 64px rgba(36,48,38,0.15) ### Spacing - **Base**: 8px - **Scale**: ["8px","16px","22px","26px","40px","64px","80px","104px"] ### Surfaces - **Treatment**: parchment - **Card Style**: borderless layered parchment cards with sediment-spot wash and a clipped upper-right leaf-notch - **Bg Pattern**: drifting topographic contour lines and sediment spots ### Borders - **Default Width**: 0px - **Accent Width**: 4px - **Style**: none - **Character**: borderless; separation by surface, wash, and shadow; a soft fiber hairline only inside ghost controls and as the left root-marker stem ### Motion - **Duration**: 220ms - **Easing**: cubic-bezier(0.23, 1, 0.32, 1) - **Philosophy**: deliberate settling, never bounce ## Rules ### Composition Compose interfaces as interdependent ecological zones instead of stacked boxes: a main content stream for the core task, a narrow observation rail for context, and leaf-notched habitat cards for records. Let content bands widen and narrow like terraces instead of enforcing equal widths. ### Hierarchy Lead with expressive Fraunces headings, then use mono species-label microcopy, badges, and vein dividers to guide scanning. Important actions sit in moss seed-pod capsules; secondary information recedes into quieter washes. ### Density Moderate-to-airy. Generous internal padding and breathing room between macro sections, local clusters kept tight enough to feel cultivated. Dense data is softened with wash backgrounds, root markers, and rounded containment. ### Signature Patterns - Large surfaces carry drifting topographic contour lines and sediment-spot washes as backgrounds - Cards and modals use a clipped upper-right leaf-notch silhouette; never bordered - Section headings use tapered branching vein underlines from layered gradients - Buttons, toggles, radios and inputs use seed-pod capsule geometry with inset rims and pressed states - Table rows and list items carry a left root-marker stem in an accent colour ## Layout ### Grid An asymmetric river grid on desktop: a broad content stream paired with a narrower observation rail, sections staggered as terraces. Grids use minmax(0,1fr) so children shrink rather than overflow. ### Breakpoints The tablet band (768-1024) is its own layout: two-column grids and a compressed rail, never the mobile column stretched wide. At 768px the rail stacks below the stream and non-essential nav collapses. At 480px single-column terraces, full-width controls, scrollable tables. ### Whitespace Large outer margins and deep panel padding, with tighter plant-like clustering inside cards. Whitespace reads like air pockets between stones: irregular at the macro level, disciplined at the micro level. ## Guidance ### Do - Use warm parchment and moss as the dominant field, clay reserved for key moments - Shape containers and controls so they feel grown, not machine-stamped - Employ contour washes and layered sediment to suggest material depth - Let headings feel literary while keeping body copy highly readable - Anchor dense information with root markers and quiet dividers ### Don't - Do not introduce glassmorphism, neon gradients, or metallic chrome - Do not square the interface into repetitive identical cards - Do not add card borders or clinical grayscale-only contrast - Do not over-animate controls; movement settles, never bounces - Do not let decorative organic motifs overpower legibility or task flow ## Imagery Direction ### Summary Botanical field-note plates: pressed leaves and sedge, soil strata, water rings, seed labels, and muted topographic maps, in muted watercolor and fine ink on pressed-fiber parchment. ### Pairs With fieldplate ### Technique muted botanical watercolor and fine ink on parchment; drifting contour lines; sediment bands; soft water-ring stains ### Palette muted moss green, warm bark brown, single clay-orange accent on warm parchment ### Reference Image File Ids - fl-019f706b-7157-7290-874b-f7b3943ca1e7 - fl-019f706b-760c-7013-a7a4-1d74b7d3caac - fl-019f706b-7bea-7b42-bada-41dd05e77e5d
---
version: "alpha"
name: "Mossbank"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#F4EFE3"
surface: "#FBF7EE"
surface_solid: "#F0E9D8"
text: "#243026"
muted: "#6F756A"
accent: "#4E6B47"
accent_2: "#B86C3A"
accent_soft: "#5F7E8A"
on_accent: "#FBF7EE"
success: "#557A46"
warning: "#C28A2E"
error: "#A64B45"
info: "#5F7E8A"
typography:
headline-lg:
fontFamily: "Fraunces"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Fraunces"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Literata"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Spline Sans Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
md: "16px"
lg: "24px"
full: "9999px"
spacing:
base: "8px"
xs: "8px"
sm: "16px"
md: "22px"
lg: "26px"
xl: "40px"
2xl: "64px"
3xl: "80px"
4xl: "104px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-surface_solid:
backgroundColor: "{colors.surface_solid}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_soft:
backgroundColor: "{colors.accent_soft}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#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"
---
# Mossbank
## Overview
Mossbank treats interface surfaces like cultivated riverbank terrain: living, breathable, structured by growth rather than mechanical symmetry. Information sits in layers of paper fiber, sediment, and botanical residue; hierarchy emerges through natural strata, branching emphasis, and generous breathing room that implies stewardship and slow confidence over speed. A faithful modernization of Organic Naturalism.
### Values
- Cultivated calm over sterile optimization
- Material tactility over glossy abstraction
- Asymmetric growth over rigid repetition
- Readable warmth over corporate distance
- Interfaces that imply stewardship, care, and continuity
### Anti-Values
- Chrome-heavy futurism
- Perfectly rectilinear grids everywhere
- Cold fluorescent contrast
- Aggressive motion or gamified bounce
- Sharp synthetic edges disconnected from material texture
### Visual Character
- Important cards carry a clipped upper-right leaf-notch
- Large surfaces carry faint drifting topographic contour washes
- Headings use tapered branching vein underlines from layered gradients
- Controls are seed-pod capsules with soft inset rims and moss pressed states
- An asymmetric river layout pairs a broad content stream with a narrow observation rail
## Colors
Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.
| Token | Value |
|-------|-------|
| bg | `#F4EFE3` |
| surface | `#FBF7EE` |
| surface_solid | `#F0E9D8` |
| text | `#243026` |
| muted | `#6F756A` |
| accent | `#4E6B47` |
| accent_2 | `#B86C3A` |
| accent_soft | `#5F7E8A` |
| on_accent | `#FBF7EE` |
| success | `#557A46` |
| warning | `#C28A2E` |
| error | `#A64B45` |
| info | `#5F7E8A` |
## Typography
- **Headline-Lg**: Fraunces, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Literata, 17px, weight 400, line-height 1.5.
- **Label-Md**: Spline Sans Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `8px`
- **Sm**: `16px`
- **Md**: `22px`
- **Lg**: `26px`
- **Xl**: `40px`
- **2xl**: `64px`
- **3xl**: `80px`
- **4xl**: `104px`
### Grid
An asymmetric river grid on desktop: a broad content stream paired with a narrower observation rail, sections staggered as terraces. Grids use minmax(0,1fr) so children shrink rather than overflow.
### Breakpoints
The tablet band (768-1024) is its own layout: two-column grids and a compressed rail, never the mobile column stretched wide. At 768px the rail stacks below the stream and non-essential nav collapses. At 480px single-column terraces, full-width controls, scrollable tables.
### Whitespace
Large outer margins and deep panel padding, with tighter plant-like clustering inside cards. Whitespace reads like air pockets between stones: irregular at the macro level, disciplined at the micro level.
## Elevation & Depth
### Shadows
- **Sm**: 0 2px 10px rgba(36,48,38,0.08)
- **Md**: 0 14px 34px rgba(36,48,38,0.11)
- **Lg**: 0 26px 64px rgba(36,48,38,0.15)
## Shapes
### Rounded
- **None**: `0px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: parchment
- **Card Style**: borderless layered parchment cards with sediment-spot wash and a clipped upper-right leaf-notch
- **Bg Pattern**: drifting topographic contour lines and sediment spots
### Borders
- **Default Width**: 0px
- **Accent Width**: 4px
- **Style**: none
- **Character**: borderless; separation by surface, wash, and shadow; a soft fiber hairline only inside ghost controls and as the left root-marker stem
## Components
### Composition
Compose interfaces as interdependent ecological zones instead of stacked boxes: a main content stream for the core task, a narrow observation rail for context, and leaf-notched habitat cards for records. Let content bands widen and narrow like terraces instead of enforcing equal widths.
### Hierarchy
Lead with expressive Fraunces headings, then use mono species-label microcopy, badges, and vein dividers to guide scanning. Important actions sit in moss seed-pod capsules; secondary information recedes into quieter washes.
### Density
Moderate-to-airy. Generous internal padding and breathing room between macro sections, local clusters kept tight enough to feel cultivated. Dense data is softened with wash backgrounds, root markers, and rounded containment.
### Signature Patterns
- Large surfaces carry drifting topographic contour lines and sediment-spot washes as backgrounds
- Cards and modals use a clipped upper-right leaf-notch silhouette; never bordered
- Section headings use tapered branching vein underlines from layered gradients
- Buttons, toggles, radios and inputs use seed-pod capsule geometry with inset rims and pressed states
- Table rows and list items carry a left root-marker stem in an accent colour
## 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-019f706c-cf7c-71c0-a747-6e7441bfe20e/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 warm parchment and moss as the dominant field, clay reserved for key moments
- Do Shape containers and controls so they feel grown, not machine-stamped
- Do Employ contour washes and layered sediment to suggest material depth
- Do Let headings feel literary while keeping body copy highly readable
- Do Anchor dense information with root markers and quiet dividers
- Don't Do not introduce glassmorphism, neon gradients, or metallic chrome
- Don't Do not square the interface into repetitive identical cards
- Don't Do not add card borders or clinical grayscale-only contrast
- Don't Do not over-animate controls; movement settles, never bounces
- Don't Do not let decorative organic motifs overpower legibility or task flow
## Imagery Direction
### Summary
Botanical field-note plates: pressed leaves and sedge, soil strata, water rings, seed labels, and muted topographic maps, in muted watercolor and fine ink on pressed-fiber parchment.
### Pairs With
fieldplate
### Technique
muted botanical watercolor and fine ink on parchment; drifting contour lines; sediment bands; soft water-ring stains
### Palette
muted moss green, warm bark brown, single clay-orange accent on warm parchment
### Reference Image File Ids
- fl-019f706b-7157-7290-874b-f7b3943ca1e7
- fl-019f706b-760c-7013-a7a4-1d74b7d3caac
- fl-019f706b-7bea-7b42-bada-41dd05e77e5d
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "mossbank",
"type": "registry:theme",
"title": "Mossbank shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F4EFE3",
"foreground": "#243026",
"card": "#FBF7EE",
"card-foreground": "#243026",
"popover": "#FBF7EE",
"popover-foreground": "#243026",
"primary": "#243026",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6F756A",
"muted-foreground": "#243026",
"accent": "#4E6B47",
"accent-foreground": "#ffffff",
"destructive": "#A64B45",
"border": "rgba(36,48,38,0.08)",
"input": "rgba(36,48,38,0.08)",
"ring": "#4E6B47",
"chart-1": "#243026",
"chart-2": "#f4f4f5",
"chart-3": "#4E6B47",
"chart-4": "#557A46",
"chart-5": "#C28A2E",
"sidebar": "#FBF7EE",
"sidebar-foreground": "#243026",
"sidebar-primary": "#243026",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5F7E8A",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "rgba(36,48,38,0.08)",
"sidebar-ring": "#4E6B47",
"radius": "16px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#243026",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#4E6B47",
"accent-foreground": "#ffffff",
"destructive": "#A64B45",
"border": "#303642",
"input": "#303642",
"ring": "#4E6B47",
"chart-1": "#243026",
"chart-2": "#f4f4f5",
"chart-3": "#4E6B47",
"chart-4": "#557A46",
"chart-5": "#C28A2E",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#243026",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#4E6B47",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#4E6B47",
"radius": "16px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019f706c-cf7c-71c0-a747-6e7441bfe20e",
"slug": "mossbank",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_soft",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface_solid",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"line_height",
"mono_font",
"scale_ratio"
],
"radii": [
"full",
"lg",
"md",
"none"
],
"shadows": [
"lg",
"md",
"sm"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"bg_pattern",
"card_style",
"treatment"
],
"borders": [
"accent_width",
"character",
"default_width",
"style"
],
"motion": [
"duration",
"easing",
"philosophy"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
Keep Mossbankand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #F4EFE3;
--foreground: #243026;
--card: #FBF7EE;
--card-foreground: #243026;
--popover: #FBF7EE;
--popover-foreground: #243026;
--primary: #243026;
--primary-foreground: #ffffff;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #6F756A;
--muted-foreground: #243026;
--accent: #4E6B47;
--accent-foreground: #ffffff;
--destructive: #A64B45;
--border: rgba(36,48,38,0.08);
--input: rgba(36,48,38,0.08);
--ring: #4E6B47;
--chart-1: #243026;
--chart-2: #f4f4f5;
--chart-3: #4E6B47;
--chart-4: #557A46;
--chart-5: #C28A2E;
--sidebar: #FBF7EE;
--sidebar-foreground: #243026;
--sidebar-primary: #243026;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #5F7E8A;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: rgba(36,48,38,0.08);
--sidebar-ring: #4E6B47;
--radius: 16px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #243026;
--primary-foreground: #ffffff;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #4E6B47;
--accent-foreground: #ffffff;
--destructive: #A64B45;
--border: #303642;
--input: #303642;
--ring: #4E6B47;
--chart-1: #243026;
--chart-2: #f4f4f5;
--chart-3: #4E6B47;
--chart-4: #557A46;
--chart-5: #C28A2E;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #243026;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #4E6B47;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #4E6B47;
--radius: 16px;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function MossbankShadcnKit() {
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">Mossbank</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "mossbank",
"type": "registry:theme",
"author": "katagami-agent",
"title": "Mossbank",
"description": "A riparian stewardship interface theme: warm parchment surfaces, moss and clay accents, leaf-notched cards, contour-wash grounds, and seed-pod capsule controls. Faithful modernization of Organic Naturalism.",
"cssVars": {
"theme": {
"font-sans": "Literata, Georgia, serif",
"font-serif": "Fraunces, serif",
"font-mono": "Spline Sans Mono, ui-monospace, monospace",
"radius": "1.5rem"
},
"light": {
"background": "#F4EFE3",
"foreground": "#243026",
"card": "#FBF7EE",
"card-foreground": "#243026",
"popover": "#FBF7EE",
"popover-foreground": "#243026",
"primary": "#4E6B47",
"primary-foreground": "#FBF7EE",
"secondary": "#F0E9D8",
"secondary-foreground": "#243026",
"muted": "#F0E9D8",
"muted-foreground": "#6F756A",
"accent": "#B86C3A",
"accent-foreground": "#FBF7EE",
"destructive": "#A64B45",
"destructive-foreground": "#FBF7EE",
"border": "rgba(36,48,38,0.08)",
"input": "rgba(36,48,38,0.08)",
"ring": "#4E6B47",
"chart-1": "#4E6B47",
"chart-2": "#B86C3A",
"chart-3": "#5F7E8A",
"chart-4": "#557A46",
"chart-5": "#C28A2E"
},
"dark": {
"background": "#1D241C",
"foreground": "#EDE6D4",
"card": "#26301F",
"card-foreground": "#EDE6D4",
"popover": "#26301F",
"popover-foreground": "#EDE6D4",
"primary": "#8AA57C",
"primary-foreground": "#1D241C",
"secondary": "#2E3826",
"secondary-foreground": "#EDE6D4",
"muted": "#2E3826",
"muted-foreground": "#A7AC9C",
"accent": "#D08A55",
"accent-foreground": "#1D241C",
"destructive": "#C86E67",
"destructive-foreground": "#1D241C",
"border": "rgba(237,230,212,0.10)",
"input": "rgba(237,230,212,0.10)",
"ring": "#8AA57C",
"chart-1": "#8AA57C",
"chart-2": "#D08A55",
"chart-3": "#8AA9B4",
"chart-4": "#7C9E6C",
"chart-5": "#D9AC5E"
}
},
"visualProfile": {
"family": "organic-editorial",
"material": "pressed-fiber parchment",
"contour": "asymmetric with clipped upper-right leaf-notch",
"border": "borderless; hairline only inside ghost controls",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "settling, 220ms cubic-bezier(0.23,1,0.32,1)",
"density": "moderate-to-airy",
"accents": ["#4E6B47", "#B86C3A", "#5F7E8A"]
},
"notes": "Cards are borderless — separation comes from a parchment surface gradient, a faint sediment-spot wash, and a soft shadow whose softness matches the 24px radius; important cards carry the leaf-notch clip. Buttons and all form controls are 9999px seed-pod capsules with an inset pressed rim. Primary is moss; the clay accent is reserved for alerts and single highlighter marks. Radii are limited to 0 / 16px / 24px / 9999px. Type is one strict scale on a 17px Literata base with Fraunces display and Spline Sans Mono labels."
}
# Mossbank — shadcn/ui Components
Author: `katagami-agent`
Registry theme: `mossbank`
Format: `component-recipes-v1`
Mossbank is a riparian stewardship interface language — warm parchment surfaces, moss and clay accents, leaf-notched cards, drifting contour washes, and seed-pod capsule controls. This document maps the language onto shadcn/ui primitives so a build stays on-language.
## ShadSync visual profile
The renderer follows this `visualProfile`; honour it on every primitive.
- **family**: organic-editorial
- **material**: pressed-fiber parchment — a subtle top-to-bottom surface gradient plus a faint sediment-spot wash, never a flat fill
- **contour**: asymmetric, with a clipped upper-right **leaf-notch** on important cards
- **border**: borderless — separation comes from surface, wash, and shadow; a hairline appears only inside ghost controls to read as a pressed fiber edge
- **radius**: {0, 16px, 24px, 9999px} only — cards 24px, capsule controls 9999px, inner tiles 16px
- **motion**: settling, 220ms on `cubic-bezier(0.23, 1, 0.32, 1)` — never a bounce
- **density**: moderate-to-airy; generous padding, tight local clusters
- **accents**: moss `#4E6B47` (primary), clay `#B86C3A` (alerts / single highlighter), river-blue `#5F7E8A` (info / water)
- **type**: Fraunces 600 display, Literata 17px body, Spline Sans Mono labels — one strict 1.2 scale
## Signature component recipes
### Button
Seed-pod capsule (`rounded-full`) with an inset pressed rim (`inset` box-shadows top-light, bottom-dark). One moss `primary`; `secondary`/ghost is a parchment fill with a hairline; the clay variant is reserved for a single emphatic action. Label centred, never wraps.
```tsx
<Button className="rounded-full px-6 shadow-[inset_0_2px_0_rgba(255,255,255,0.26),inset_0_-5px_12px_rgba(36,48,38,0.22)]">
Log new survey
</Button>
```
### Card
Borderless parchment panel with the leaf-notch clip and a sediment-spot underlay. Never nest cards.
```tsx
<Card className="rounded-[24px] border-0 bg-gradient-to-b from-card to-secondary shadow-[0_2px_10px_rgba(36,48,38,0.08)] [clip-path:polygon(0_0,calc(100%-34px)_0,100%_34px,100%_100%,0_100%)]">
<CardHeader><CardTitle className="font-serif">Willow bend</CardTitle></CardHeader>
<CardContent>Contour wash redrawn at dawn.</CardContent>
</Card>
```
### Input / Select / Textarea
Parchment field with inset wash and a soft fiber hairline; moss focus ring. Inputs and selects are capsules; textarea uses the 24px radius. No browser defaults.
```tsx
<Input className="rounded-full bg-secondary/60 shadow-[inset_0_2px_6px_rgba(36,48,38,0.04)] focus-visible:ring-2 focus-visible:ring-primary" />
```
### Table
Rows sit on a soft parchment fill with a left **root-marker** stem and a warm hover wash; header labels are Spline Sans Mono uppercase.
### Badge
Capsule status chip mapped to a semantic role (settled = moss, rooting = river-blue, watch = clay/warning, flagged = error) so a palette swap recolours the whole vocabulary.
### Tabs / Switch / Checkbox / Radio
Tabs are pill segments with a moss wash on the active tab. Switch slides a parchment knob on a moss track; checkboxes and radios are seed-pod capsules with a pressed checked state.
## Preview shots
The renderable scenes live in `preview-shots.json` (`renderable-v1`): a stewardship survey console, a watershed dashboard, and a field-note entry form — each exercising the leaf-notch, root markers, seed-pod controls, and contour wash across all sixteen primitives.
## Copy-paste component example
A complete survey-entry card, on-language:
```tsx
import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"
import { Input } from "@/components/ui/input"
import { Textarea } from "@/components/ui/textarea"
import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
export function SurveyEntry() {
return (
<Card className="rounded-[24px] border-0 bg-gradient-to-b from-card to-secondary
shadow-[0_2px_10px_rgba(36,48,38,0.08)]
[clip-path:polygon(0_0,calc(100%-34px)_0,100%_34px,100%_100%,0_100%)]">
<CardHeader className="flex-row items-center justify-between">
<CardTitle className="font-serif tracking-[-0.02em]">New field note</CardTitle>
<Badge className="rounded-full bg-primary/10 text-primary">Plot B-17</Badge>
</CardHeader>
<CardContent className="grid gap-4">
<Input className="rounded-full bg-secondary/60" defaultValue="B-17" />
<Textarea className="rounded-[24px] bg-secondary/60"
defaultValue="Clay bank softened overnight; add two plugs after noon shade." />
<div className="flex gap-3">
<Button className="rounded-full">Save field note</Button>
<Button variant="secondary" className="rounded-full">Discard</Button>
</div>
</CardContent>
</Card>
)
}
```
All imports resolve from `@/components/ui/` after installing the primitives with the standard shadcn CLI and applying the `mossbank` registry theme.
## Do and don't
- **Do** keep cards borderless; earn separation with surface, wash, and shadow.
- **Do** reserve clay for a single highlight per view; moss carries primary actions.
- **Don't** introduce a stray radius, a fourth accent, or a bordered chassis.
- **Don't** let the contour wash sit under body text — imagery and copy never contest the same ground.
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"author": "katagami-agent",
"requiresVisualProfile": true,
"language": {
"id": "mossbank",
"name": "Mossbank",
"slug": "mossbank"
},
"installCommand": "npx shadcn@latest add https://katagami.ai/r/mossbank.json",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Cards are borderless: separation comes from a parchment surface gradient, a faint sediment-spot wash, and a soft shadow whose softness matches the 24px radius.",
"Important cards carry a clipped upper-right leaf-notch, the language's signature mark.",
"Buttons and every form control are 9999px seed-pod capsules with an inset pressed rim.",
"List and table rows carry a left root-marker stem in an accent colour.",
"Moss is the primary action colour; clay is reserved for alerts and a single highlighter mark per view; river-blue carries water and info.",
"Radii are limited to 0, 16px, 24px, and 9999px; type is one strict 1.2 scale on a 17px Literata base with Fraunces display."
],
"visualProfile": {
"family": "organic-editorial",
"material": "pressed-fiber parchment",
"contour": "asymmetric with clipped upper-right leaf-notch",
"border": "borderless; hairline only inside ghost controls",
"underlay": true,
"grain": true,
"stickerBadges": false,
"motion": "settling, 220ms cubic-bezier(0.23,1,0.32,1)",
"density": "moderate-to-airy",
"accents": ["#4E6B47", "#B86C3A", "#5F7E8A"]
},
"tokens": {
"background": "#F4EFE3",
"surface": "#FBF7EE",
"surface_solid": "#F0E9D8",
"foreground": "#243026",
"muted": "#6F756A",
"primary": "#4E6B47",
"accent": "#B86C3A",
"accent_soft": "#5F7E8A",
"on_accent": "#FBF7EE",
"success": "#557A46",
"warning": "#C28A2E",
"error": "#A64B45",
"info": "#5F7E8A",
"radius": "24px",
"radius_control": "9999px",
"font_display": "Fraunces",
"font_body": "Literata",
"font_mono": "Spline Sans Mono"
},
"shots": [
{
"id": "survey-console",
"title": "Riparian survey console",
"viewport": "desktop",
"primitives": ["card", "table", "badge", "tabs", "button", "separator", "tooltip"],
"composition": "A stewardship console: a tabbed crew-ledger table on a broad leaf-notched card, with root-marker rows and semantic status badges, beside a narrow observation rail.",
"mustShow": ["leaf-notch on the main card", "root-marker stem on each table row", "seed-pod primary button", "semantic status badges"],
"avoid": ["card borders", "a fourth accent colour", "square-cornered controls", "flat grey fills"],
"scene": {
"headline": "Today's restoration passes",
"description": "Four transects under active recovery along the willow bend.",
"rows": [
{"transect": "A-09", "action": "Replace coir pins at outer bend", "lead": "Mara Ostley", "state": "done"},
{"transect": "B-17", "action": "Add sedge plugs beneath shade cloth", "lead": "Ilan Brooke", "state": "next"},
{"transect": "D-11", "action": "Photograph marker drift after rain", "lead": "Sora Whitfield", "state": "queued"},
{"transect": "E-02", "action": "Reset the beaver-gnaw fence line", "lead": "Petra Idris", "state": "flagged"}
]
}
},
{
"id": "watershed-dashboard",
"title": "Watershed dashboard",
"viewport": "desktop",
"primitives": ["card", "badge", "slider", "switch", "separator", "dropdown-menu", "button"],
"composition": "A watershed overview: four leaf-notched KPI tiles above a contour-wash area chart and a recovery-index bar list, with a season-toggle panel of switches and sliders.",
"mustShow": ["leaf-notch KPI tiles", "contour-wash chart ground", "moss and clay bars", "seed-pod switches"],
"avoid": ["glossy SaaS shadows", "neon gradients", "bordered chart card", "off-scale radii"],
"scene": {
"headline": "Morning terrain",
"description": "Contour wash redrawn from last night's soil pins.",
"stats": [
{"label": "bank cover", "value": "73%", "delta": "+4 this week"},
{"label": "active plots", "value": "12", "delta": "+2 opened"},
{"label": "B-17 moisture", "value": "31%", "delta": "-6 overnight"},
{"label": "willow growth", "value": "4.2cm", "delta": "steady"}
]
}
},
{
"id": "field-note-entry",
"title": "Field-note entry form",
"viewport": "mobile",
"primitives": ["dialog", "sheet", "input", "textarea", "select", "checkbox", "button", "badge", "tooltip"],
"composition": "A field-note entry sheet: parchment capsule inputs, a select for habitat band, seed-pod checkboxes, and a textarea, on a leaf-notched card sized for a phone in the field.",
"mustShow": ["capsule parchment inputs", "seed-pod checkboxes", "moss focus ring", "leaf-notch card"],
"avoid": ["browser-default controls", "hard black borders", "clipped labels at 390px", "wrapping button text"],
"scene": {
"headline": "New field note",
"description": "Log an observation for plot B-17 with muddy hands.",
"fields": [
{"label": "Plot", "value": "B-17"},
{"label": "Habitat band", "value": "Moist sedge shelf"},
{"label": "Observation", "value": "Clay bank softened overnight; add two plugs after noon shade."},
{"label": "Photo attached", "value": "yes"}
]
}
}
],
"componentRecipes": [
{"primitive": "button", "intent": "Seed-pod capsule with an inset pressed rim; moss primary, parchment ghost, clay for a single emphatic action; label centred, never wraps."},
{"primitive": "card", "intent": "Borderless parchment panel with a surface gradient and sediment-spot wash; important cards carry the leaf-notch clip; never nest cards."},
{"primitive": "input", "intent": "Capsule parchment field with inset wash, soft fiber hairline, and a moss focus ring; no browser default."},
{"primitive": "textarea", "intent": "24px-radius parchment field with inset wash and moss focus ring for longer field notes."},
{"primitive": "select", "intent": "Capsule parchment field with a custom moss chevron; menu on a leaf-notched popover surface."},
{"primitive": "dialog", "intent": "Centred leaf-notched parchment card over a warm scrim; a moss primary and a ghost action; settling entrance."},
{"primitive": "sheet", "intent": "Side or bottom parchment sheet with the leaf-notch on the leading corner, sized for field entry on a phone."},
{"primitive": "tabs", "intent": "Pill segments; the active tab wears a moss wash and moss text, the rest quiet muted."},
{"primitive": "badge", "intent": "Capsule status chip mapped to a semantic role: settled moss, rooting river-blue, watch clay, flagged error."},
{"primitive": "separator", "intent": "A tapered branching vein rule built from layered gradients, never a plain hairline."},
{"primitive": "checkbox", "intent": "Seed-pod capsule with a soft pressed checked state filled moss, no browser default."},
{"primitive": "switch", "intent": "A parchment knob sliding on a moss track, off-state a quiet inset grey."},
{"primitive": "slider", "intent": "A moss fill on a capsule track with an inset shadow; the thumb a small parchment seed-pod."},
{"primitive": "tooltip", "intent": "A small parchment popover with a soft shadow matching its radius; mono label text."},
{"primitive": "dropdown-menu", "intent": "A leaf-notched parchment popover; items highlight with a moss wash on hover."},
{"primitive": "table", "intent": "Rows on a soft parchment fill with a left root-marker stem, mono uppercase headers, and a warm hover wash."}
],
"qualityRules": {
"do": [
"Keep every card borderless; earn separation with surface, wash, and shadow.",
"Carry the leaf-notch, root markers, contour wash, and seed-pod controls across all scenes.",
"Reserve clay for a single highlight per view; moss carries primary actions.",
"Keep all radii to 0 / 16 / 24 / 9999 and every text size on the one strict scale."
],
"dont": [
"Do not add borders, a bordered chassis, or nested cards.",
"Do not introduce a fourth accent, glassmorphism, or neon gradients.",
"Do not use browser-default form controls or wrap button text.",
"Do not let the contour wash sit under body text."
]
}
}