back to gallery
design language·selvage

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 source of truth for most agents and apps.

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
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

bespoke marketing landingopen full page ↗
landing · selvage
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

Agent-generated

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

remix lane

try a remix

Keep Selvageand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.

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

Family

related

More like this