back to gallery

Selvage

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 — tokens plus the paired art style. Agents must generate real images.

the spec

specification

philosophy
summary
Selvage keeps the discipline of a Japanese stationery planner — ruled columns, edge labels, open margins, bounded illustration — but works every surface in woven linen and embroidery floss. The grid is a real warp-and-weft weave, section labels are stitched fabric tabs that protrude from a panel's edge, dividers are running stitches, and pictures live inside an embroidery hoop. Structure is woven in, never drawn on top; warmth comes from honest material and three muted flosses used like highlighters on a calm linen ground.
values
planner discipline expressed as a real woven warp-and-weft gridsection labels as stitched selvedge tabs, findable at a glanceillustration kept bounded inside an embroidery hoop or framed windowopen margins for stitched annotations, timestamps and ownersone floss accent per view, used like a highlighter on linen
anti-values
×atmospheric gradients or pastel washes replacing structure×a single accent edge stamped on every card×imagery bleeding across the controls that run the studio×all three flosses spread across the chrome at once×soft blobs that erase the woven, planner-square feel
visual character
the warp-rule grid: a fine warp-and-weft thread grid runs through the ground and every panel, so the module reads as clothselvedge tabs: section names are full-pill fabric tabs dyed madder, indigo or saffron that protrude from a panel's top edgerunning-stitch rules: rows, columns and panel frames divide on dashed running stitches instead of hard linesthe embroidery hoop: illustration is always bounded inside a circular hoop or a 16:10 framed window, never bleeding freestitched marginalia: timestamps, owners and helper copy tuck into the margin as quiet mono annotations
tokens
colors15 items
primary
#B23A2E
secondary
#2D4A7C
accent
#C99A1F
bg
#E7DFCE
background
#E7DFCE
surface
#F3EDE1
surface_raised
#FBF7EE
text
#1E2A44
muted
#7C6F5B
border
#CDBFA6
on_accent
#FBF7EE
error
#B23A2E
success
#5C7A4A
warning
#C99A1F
info
#2D4A7C
typography10 items
heading font
Fraunces
body font
Inter
mono font
Spline Sans Mono
base size
17px
scale ratio
1.2
line height
1.6
letter spacing
-0.01em
heading weight
600
heading transform
none
google fonts url
https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
radii5 items
none
0
sm
16px
md
16px
lg
24px
full
9999px
shadows3 items
sm
0 1px 0 rgba(255,255,255,0.6) inset, 0 6px 16px rgba(30,42,68,0.06)
md
0 1px 0 rgba(255,255,255,0.6) inset, 0 14px 30px rgba(30,42,68,0.07)
lg
0 24px 50px rgba(30,42,68,0.14)
surfaces3 items
treatment
woven-textile
card style
a piece of cloth: warm linen surface with a woven warp-weft grid fill and an inset running-stitch (dashed) frame, lifted by a soft shadow; no border ring
bg pattern
woven-grid
borders4 items
default width
0
accent width
0
style
none
character
no borders; separation comes from an inset running-stitch (dashed) frame, woven texture, and soft shadow
motion3 items
duration
700ms
easing
cubic-bezier(0.2,0.8,0.2,1)
philosophy
deliberate: panels settle upward on enter like cloth laid on a table; settled state is the no-JS default
rules
composition
Compose every region as a piece of cloth on a warp-and-weft grid: generous margins, ruled subdivisions, and selvedge-tab labels protruding from panel edges, leaving the margin open for notes.
hierarchy
Hierarchy comes from selvedge tabs, running-stitch subdivisions, a quiet serif, mono numerals, and one floss accent on the live element — not from large scale shifts.
density

Moderately dense. Information can be plentiful, but every cluster sits inside a labelled woven panel with visible spacing and stitched micro-labels.

signature
The selvedge tab + warp-rule grid: every panel is woven cloth with a stitched fabric tab woven into its edge; dividers and the headline highlighter are running stitches.
layout
grid
A 12-column desk-page grid on desktop, collapsing to a single column under 760px while preserving margin gutters and the woven warp-weft subdivisions inside modules.
whitespace

Generous perimeter margins, moderate inter-panel spacing, small internal padding always padded above titles; the open margin is part of the composition.

density

comfortable-to-moderate

responsive
Single column under 760px; the warp grid and selvedge tabs persist at every width; tables scroll inside their panel; hoops and framed windows move below primary content rather than disappearing; the hero headline shrinks with clamp() and wraps, never clipping at 390px.
breakpoints
sm
390px
md
760px
lg
1000px
xl
1700px
guidance
do
  • Let the woven warp-and-weft grid show through the ground and every panel.
  • Label sections with stitched selvedge tabs; keep them short like notebook headings.
  • Divide rows and columns with running-stitch dashes; keep illustration inside a hoop or frame.
  • Reserve one floss accent — madder, indigo or saffron — for the live element of a view.
  • Leave the margin open for timestamps, owners and helper annotations.
avoid
  • Replace structure with atmospheric gradients or pastel background washes.
  • Put a single accent edge on a card, or trap navigation in a floating pill bar.
  • Let imagery bleed across functional controls.
  • Spread all three flosses across the chrome in the same view.
  • Round everything into soft blobs that erase the woven, planner-square feel.
imagery
pairs with

woven-sampler-embroidery

summary
Subjects rendered as hand-embroidered woven textile — directional satin-stitch fills, couched outlines, french knots, on a visible linen warp-weft weave — in the Madder Skein flosses on a linen ground.
subjects
a flat-lay of stationery and sewing objects worked in threadan embroidered botanical hoopa stitched sampler banda woven map of an order ledger
usage

One full-bleed hero per landing; spot illustration bounded inside an embroidery hoop or a framed window, never bleeding across controls.

katagami spec
# Selvage

## Philosophy

Selvage keeps the discipline of a Japanese stationery planner — ruled columns, edge labels, open margins, bounded illustration — but works every surface in woven linen and embroidery floss. The grid is a real warp-and-weft weave, section labels are stitched fabric tabs that protrude from a panel's edge, dividers are running stitches, and pictures live inside an embroidery hoop. Structure is woven in, never drawn on top; warmth comes from honest material and three muted flosses used like highlighters on a calm linen ground.

### Values

- planner discipline expressed as a real woven warp-and-weft grid
- section labels as stitched selvedge tabs, findable at a glance
- illustration kept bounded inside an embroidery hoop or framed window
- open margins for stitched annotations, timestamps and owners
- one floss accent per view, used like a highlighter on linen

### Anti-Values

- atmospheric gradients or pastel washes replacing structure
- a single accent edge stamped on every card
- imagery bleeding across the controls that run the studio
- all three flosses spread across the chrome at once
- soft blobs that erase the woven, planner-square feel

### Visual Character

- the warp-rule grid: a fine warp-and-weft thread grid runs through the ground and every panel, so the module reads as cloth
- selvedge tabs: section names are full-pill fabric tabs dyed madder, indigo or saffron that protrude from a panel's top edge
- running-stitch rules: rows, columns and panel frames divide on dashed running stitches instead of hard lines
- the embroidery hoop: illustration is always bounded inside a circular hoop or a 16:10 framed window, never bleeding free
- stitched marginalia: timestamps, owners and helper copy tuck into the margin as quiet mono annotations

## Tokens

### Colors

| Name | Value |
|------|-------|
| primary | `#B23A2E` |
| secondary | `#2D4A7C` |
| accent | `#C99A1F` |
| bg | `#E7DFCE` |
| background | `#E7DFCE` |
| surface | `#F3EDE1` |
| surface_raised | `#FBF7EE` |
| text | `#1E2A44` |
| muted | `#7C6F5B` |
| border | `#CDBFA6` |
| on_accent | `#FBF7EE` |
| error | `#B23A2E` |
| success | `#5C7A4A` |
| warning | `#C99A1F` |
| info | `#2D4A7C` |

### Typography

- **Heading Font**: Fraunces
- **Body Font**: Inter
- **Mono Font**: Spline Sans Mono
- **Base Size**: 17px
- **Scale Ratio**: 1.2
- **Line Height**: 1.6
- **Letter Spacing**: -0.01em
- **Heading Weight**: 600
- **Heading Transform**: none
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=Spline+Sans+Mono:wght@400;500;600&display=swap

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96]

### Radii

- **None**: 0
- **Sm**: 16px
- **Md**: 16px
- **Lg**: 24px
- **Full**: 9999px

### Shadows

- **Sm**: 0 1px 0 rgba(255,255,255,0.6) inset, 0 6px 16px rgba(30,42,68,0.06)
- **Md**: 0 1px 0 rgba(255,255,255,0.6) inset, 0 14px 30px rgba(30,42,68,0.07)
- **Lg**: 0 24px 50px rgba(30,42,68,0.14)

### Surfaces

- **Treatment**: woven-textile
- **Card Style**: a piece of cloth: warm linen surface with a woven warp-weft grid fill and an inset running-stitch (dashed) frame, lifted by a soft shadow; no border ring
- **Bg Pattern**: woven-grid

### Borders

- **Default Width**: 0
- **Accent Width**: 0
- **Style**: none
- **Character**: no borders; separation comes from an inset running-stitch (dashed) frame, woven texture, and soft shadow

### Motion

- **Duration**: 700ms
- **Easing**: cubic-bezier(0.2,0.8,0.2,1)
- **Philosophy**: deliberate: panels settle upward on enter like cloth laid on a table; settled state is the no-JS default

## Rules

### Composition

Compose every region as a piece of cloth on a warp-and-weft grid: generous margins, ruled subdivisions, and selvedge-tab labels protruding from panel edges, leaving the margin open for notes.

### Hierarchy

Hierarchy comes from selvedge tabs, running-stitch subdivisions, a quiet serif, mono numerals, and one floss accent on the live element — not from large scale shifts.

### Density

Moderately dense. Information can be plentiful, but every cluster sits inside a labelled woven panel with visible spacing and stitched micro-labels.

### Signature

The selvedge tab + warp-rule grid: every panel is woven cloth with a stitched fabric tab woven into its edge; dividers and the headline highlighter are running stitches.

## Layout

### Grid

A 12-column desk-page grid on desktop, collapsing to a single column under 760px while preserving margin gutters and the woven warp-weft subdivisions inside modules.

### Whitespace

Generous perimeter margins, moderate inter-panel spacing, small internal padding always padded above titles; the open margin is part of the composition.

### Density

comfortable-to-moderate

### Responsive

Single column under 760px; the warp grid and selvedge tabs persist at every width; tables scroll inside their panel; hoops and framed windows move below primary content rather than disappearing; the hero headline shrinks with clamp() and wraps, never clipping at 390px.

### Breakpoints

- **Sm**: 390px
- **Md**: 760px
- **Lg**: 1000px
- **Xl**: 1700px

## Guidance

### Do

- Let the woven warp-and-weft grid show through the ground and every panel.
- Label sections with stitched selvedge tabs; keep them short like notebook headings.
- Divide rows and columns with running-stitch dashes; keep illustration inside a hoop or frame.
- Reserve one floss accent — madder, indigo or saffron — for the live element of a view.
- Leave the margin open for timestamps, owners and helper annotations.

### Don't

- Replace structure with atmospheric gradients or pastel background washes.
- Put a single accent edge on a card, or trap navigation in a floating pill bar.
- Let imagery bleed across functional controls.
- Spread all three flosses across the chrome in the same view.
- Round everything into soft blobs that erase the woven, planner-square feel.

### Accessibility

Body 17px+; deep indigo text #1E2A44 on linen clears 4.5:1; floss accents carry linen labels at AA; status never relies on colour alone (a mono label and a dot accompany every floss pill); motion respects prefers-reduced-motion and the settled state renders with no JavaScript.

## Imagery Direction

### Pairs With

woven-sampler-embroidery

### Summary

Subjects rendered as hand-embroidered woven textile — directional satin-stitch fills, couched outlines, french knots, on a visible linen warp-weft weave — in the Madder Skein flosses on a linen ground.

### Subjects

- a flat-lay of stationery and sewing objects worked in thread
- an embroidered botanical hoop
- a stitched sampler band
- a woven map of an order ledger

### Usage

One full-bleed hero per landing; spot illustration bounded inside an embroidery hoop or a framed window, never bleeding across controls.
DESIGN.md
---
version: "alpha"
name: "Selvage"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  primary: "#B23A2E"
  secondary: "#2D4A7C"
  accent: "#C99A1F"
  bg: "#E7DFCE"
  background: "#E7DFCE"
  surface: "#F3EDE1"
  surface_raised: "#FBF7EE"
  text: "#1E2A44"
  muted: "#7C6F5B"
  border: "#CDBFA6"
  on_accent: "#FBF7EE"
  error: "#B23A2E"
  success: "#5C7A4A"
  warning: "#C99A1F"
  info: "#2D4A7C"
typography:
  headline-lg:
    fontFamily: "Fraunces"
    fontSize: "1.836rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "Fraunces"
    fontSize: "1.53rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "Inter"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.6
    letterSpacing: "-0.01em"
  label-md:
    fontFamily: "Spline Sans 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-bg:
    backgroundColor: "{colors.bg}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_raised:
    backgroundColor: "{colors.surface_raised}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  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"
---

# Selvage

## Overview

Selvage keeps the discipline of a Japanese stationery planner — ruled columns, edge labels, open margins, bounded illustration — but works every surface in woven linen and embroidery floss. The grid is a real warp-and-weft weave, section labels are stitched fabric tabs that protrude from a panel's edge, dividers are running stitches, and pictures live inside an embroidery hoop. Structure is woven in, never drawn on top; warmth comes from honest material and three muted flosses used like highlighters on a calm linen ground.

### Values

- planner discipline expressed as a real woven warp-and-weft grid
- section labels as stitched selvedge tabs, findable at a glance
- illustration kept bounded inside an embroidery hoop or framed window
- open margins for stitched annotations, timestamps and owners
- one floss accent per view, used like a highlighter on linen

### Anti-Values

- atmospheric gradients or pastel washes replacing structure
- a single accent edge stamped on every card
- imagery bleeding across the controls that run the studio
- all three flosses spread across the chrome at once
- soft blobs that erase the woven, planner-square feel

### Visual Character

- the warp-rule grid: a fine warp-and-weft thread grid runs through the ground and every panel, so the module reads as cloth
- selvedge tabs: section names are full-pill fabric tabs dyed madder, indigo or saffron that protrude from a panel's top edge
- running-stitch rules: rows, columns and panel frames divide on dashed running stitches instead of hard lines
- the embroidery hoop: illustration is always bounded inside a circular hoop or a 16:10 framed window, never bleeding free
- stitched marginalia: timestamps, owners and helper copy tuck into the margin as quiet mono annotations

## 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 | `#B23A2E` |
| secondary | `#2D4A7C` |
| accent | `#C99A1F` |
| bg | `#E7DFCE` |
| background | `#E7DFCE` |
| surface | `#F3EDE1` |
| surface_raised | `#FBF7EE` |
| text | `#1E2A44` |
| muted | `#7C6F5B` |
| border | `#CDBFA6` |
| on_accent | `#FBF7EE` |
| error | `#B23A2E` |
| success | `#5C7A4A` |
| warning | `#C99A1F` |
| info | `#2D4A7C` |

## Typography

- **Headline-Lg**: Fraunces, 1.836rem, weight 700, line-height 1.1.
- **Headline-Md**: Fraunces, 1.53rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 17px, weight 400, line-height 1.6.
- **Label-Md**: Spline Sans 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`

### Grid

A 12-column desk-page grid on desktop, collapsing to a single column under 760px while preserving margin gutters and the woven warp-weft subdivisions inside modules.

### Whitespace

Generous perimeter margins, moderate inter-panel spacing, small internal padding always padded above titles; the open margin is part of the composition.

### Density

comfortable-to-moderate

### Responsive

Single column under 760px; the warp grid and selvedge tabs persist at every width; tables scroll inside their panel; hoops and framed windows move below primary content rather than disappearing; the hero headline shrinks with clamp() and wraps, never clipping at 390px.

### Breakpoints

- **Sm**: 390px
- **Md**: 760px
- **Lg**: 1000px
- **Xl**: 1700px

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 0 rgba(255,255,255,0.6) inset, 0 6px 16px rgba(30,42,68,0.06)
- **Md**: 0 1px 0 rgba(255,255,255,0.6) inset, 0 14px 30px rgba(30,42,68,0.07)
- **Lg**: 0 24px 50px rgba(30,42,68,0.14)

## Shapes

### Rounded

- **None**: `0px`
- **Sm**: `16px`
- **Md**: `16px`
- **Lg**: `24px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: woven-textile
- **Card Style**: a piece of cloth: warm linen surface with a woven warp-weft grid fill and an inset running-stitch (dashed) frame, lifted by a soft shadow; no border ring
- **Bg Pattern**: woven-grid

### Borders

- **Default Width**: 0
- **Accent Width**: 0
- **Style**: none
- **Character**: no borders; separation comes from an inset running-stitch (dashed) frame, woven texture, and soft shadow

## Components

### Composition

Compose every region as a piece of cloth on a warp-and-weft grid: generous margins, ruled subdivisions, and selvedge-tab labels protruding from panel edges, leaving the margin open for notes.

### Hierarchy

Hierarchy comes from selvedge tabs, running-stitch subdivisions, a quiet serif, mono numerals, and one floss accent on the live element — not from large scale shifts.

### Density

Moderately dense. Information can be plentiful, but every cluster sits inside a labelled woven panel with visible spacing and stitched micro-labels.

### Signature

The selvedge tab + warp-rule grid: every panel is woven cloth with a stitched fabric tab woven into its edge; dividers and the headline highlighter are running stitches.

## 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-019efddc-be6b-7972-89f9-33558ff1c338/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 Let the woven warp-and-weft grid show through the ground and every panel.
- Do Label sections with stitched selvedge tabs; keep them short like notebook headings.
- Do Divide rows and columns with running-stitch dashes; keep illustration inside a hoop or frame.
- Do Reserve one floss accent — madder, indigo or saffron — for the live element of a view.
- Do Leave the margin open for timestamps, owners and helper annotations.
- Don't Replace structure with atmospheric gradients or pastel background washes.
- Don't Put a single accent edge on a card, or trap navigation in a floating pill bar.
- Don't Let imagery bleed across functional controls.
- Don't Spread all three flosses across the chrome in the same view.
- Don't Round everything into soft blobs that erase the woven, planner-square feel.

### Accessibility

Body 17px+; deep indigo text #1E2A44 on linen clears 4.5:1; floss accents carry linen labels at AA; status never relies on colour alone (a mono label and a dot accompany every floss pill); motion respects prefers-reduced-motion and the settled state renders with no JavaScript.

## Imagery Direction

### Pairs With

woven-sampler-embroidery

### Summary

Subjects rendered as hand-embroidered woven textile — directional satin-stitch fills, couched outlines, french knots, on a visible linen warp-weft weave — in the Madder Skein flosses on a linen ground.

### Subjects

- a flat-lay of stationery and sewing objects worked in thread
- an embroidered botanical hoop
- a stitched sampler band
- a woven map of an order ledger

### Usage

One full-bleed hero per landing; spot illustration bounded inside an embroidery hoop or a framed window, never bleeding across controls.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "selvage",
  "type": "registry:theme",
  "title": "Selvage shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#E7DFCE",
      "foreground": "#1E2A44",
      "card": "#F3EDE1",
      "card-foreground": "#1E2A44",
      "popover": "#F3EDE1",
      "popover-foreground": "#1E2A44",
      "primary": "#B23A2E",
      "primary-foreground": "#ffffff",
      "secondary": "#2D4A7C",
      "secondary-foreground": "#ffffff",
      "muted": "#7C6F5B",
      "muted-foreground": "#1E2A44",
      "accent": "#C99A1F",
      "accent-foreground": "#ffffff",
      "destructive": "#B23A2E",
      "border": "#CDBFA6",
      "input": "#CDBFA6",
      "ring": "#C99A1F",
      "chart-1": "#B23A2E",
      "chart-2": "#2D4A7C",
      "chart-3": "#C99A1F",
      "chart-4": "#5C7A4A",
      "chart-5": "#C99A1F",
      "sidebar": "#F3EDE1",
      "sidebar-foreground": "#1E2A44",
      "sidebar-primary": "#B23A2E",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2D4A7C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#CDBFA6",
      "sidebar-ring": "#C99A1F",
      "radius": "16px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#B23A2E",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#C99A1F",
      "accent-foreground": "#ffffff",
      "destructive": "#B23A2E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#C99A1F",
      "chart-1": "#B23A2E",
      "chart-2": "#2D4A7C",
      "chart-3": "#C99A1F",
      "chart-4": "#5C7A4A",
      "chart-5": "#C99A1F",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#B23A2E",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#C99A1F",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#C99A1F",
      "radius": "16px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019efddc-be6b-7972-89f9-33558ff1c338",
    "slug": "selvage",
    "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",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "primary",
        "secondary",
        "success",
        "surface",
        "surface_raised",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "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

DESIGN.md

at a glance

Typography

headline-lgFraunces · 29px · 700

The quick brown fox jumps

headline-mdFraunces · 24px · 600

The quick brown fox jumps

body-mdInter · 17px · 400

The quick brown fox jumps

label-mdSpline Sans Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
Palette

produced by opus-4.8 · sourced by opus-4.8 · images by gpt-image-2

remix lane

try a remix

Keep Selvage and swap a palette and an art style onto it. The landing & dashboard recolor live.

UI language · fixed
Selvage
Palette
Art style
Landing Page
live preview · recolored + filled
related

More like this