back to gallery

Plinth

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
Display-case commerce: a storefront that behaves like a lit vitrine after hours. One object at a time floats on an illuminated shelf against a deep teal-charcoal ground, measured on a caliper spec-rail, with the buy docked where your hand expects it. Citrus is the light that marks purchase; deep teal is the trust that stays.
values
one object under one lightmeasured, not marketed — figures on a railcitrus as purchase energy, never decorationdeep teal as durable assurancedark cabinet ground, never white
anti-values
×white product-stage default×rainbow promotional grids×a wall of identical product cards×a third vivid hue creeping in×marketing copy where a measured figure belongs
tokens
colors16 items
bg
#0E1614
surface
#16211E
recess
#0A100E
shelf
#1E2D29
text
#EDF2EF
muted
#8FA39C
border
#2A3A35
accent
#D7FF4A
accent_dim
#A7C92F
on_accent
#0B140C
jade
#34C9B4
teal_deep
#0E5F58
success
#34C9B4
warning
#E8B53A
error
#FF6B5E
info
#34C9B4
typography8 items
base size
17px
body font
Geist
heading font
Bricolage Grotesque
mono font
Geist Mono
heading weight
800
heading transform
none
letter spacing
-0.03em
google fonts url
https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700;12..96,800&family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500;600&display=swap
radii5 items
sm
4px
md
18px
lg
28px
full
9999px
none
0
shadows4 items
sm
0 1px 0 rgba(237,242,239,.05)
md
0 18px 44px rgba(0,0,0,.5)
lg
0 26px 60px rgba(0,0,0,.55)
glow
0 0 48px -8px rgba(215,255,74,.45)
spacing2 items
base
6px
scale
6, 12, 18, 28, 44, 72, 112
surfaces3 items
bg pattern
none; dark teal-charcoal cabinet interior, objects lit on surface-to-shelf gradient panels with a citrus underline-of-light at the bottom edge; no dot, grid, stripe, or paper texture
card style
matte dark shelf-gradient panels, no borders, deep cabinet drop shadow, optional citrus light-underline; spec rows grouped by cool hairlines not a card per item; radii 18px cards / 28px panels
treatment
lit display case — one citrus halo of light behind the staged object and on the one primary control; deep teal seals assurance
borders4 items
default width
1px
accent width
1px
style
solid
character
cool teal-charcoal hairlines for structure (the grouping dividers); citrus only on focus rings and the selected chip edge, never as a decorative side stripe
motion3 items
duration
200ms
easing
cubic-bezier(.2,.8,.2,1)
philosophy
the settled fully-rendered page is the default and visible with no JS; sections lift in on scroll, the primary control lifts 2px on hover, gauges fill toward the light; respects prefers-reduced-motion
rules
composition
Stage one object at a time on a lit shelf-row against a dark cabinet ground; frame it with a caliper spec-rail and a stock fill gauge; dock the primary acquisition where the hand expects it. Vertical stacked shelf rhythm, not an asymmetric offset commerce grid.
hierarchy
Large Bricolage display type and the lit object first, then a single citrus control for the next purchase action, with deep teal reserved for assurance and confidence.
density
Low-density dark surfaces with compact mono high-information islands for price, stock, and spec figures; the largest whitespace gap is dramatically larger than form gaps.
signature
Caliper spec-rail (citrus-tipped measured rail with mono callouts); stock fill gauge (jade-to-citrus bar filling toward the light); lit shelf-row (surface-to-shelf gradient panel with a citrus underline-of-light); docked acquisition (the one citrus-lit control); small square caliper-edged option chips.
layout
grid
Contained editorial column (max 1240px) with vertically stacked lit shelf-rows and section bands; product detail uses a two-column object + spec/dock split that collapses to one column.
whitespace

Large quiet dark margins frame the lit object; internal control groups use 6-18px gaps while hero and section gaps expand to 72-112px.

density

airy dark stage with compact mono high-information islands for price/stock/spec

responsive
Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the object and dock first; contained content capped and centred on ultra-wide, only the hero spans 100vw.
breakpoints
mobile
390px
tablet
768px
desktop
1440px
reflow
900px and 560px
guidance
do
  • Keep the ground the dark teal-charcoal cabinet; let one object be lit at a time.
  • Use citrus only for purchase intent, selected state, and focus; hang figures on the caliper rail.
  • Use deep teal and jade for assurance, confidence, and in-stock signals.
  • Group spec rows with cool hairlines and the rail, not a card per item.
avoid
  • Do not default to a white product stage or add a third vivid hue.
  • Do not build a rainbow promotion, colored side rails, or a wall of identical cards.
  • Do not box the nav into a pill or float it; let it sit open across the header.
  • Do not mix arbitrary radii; keep 4 / 18 / 28 / 9999.
imagery
pairs with

vitrine-studio

summary
One dominant object floated and lit on a dark seamless cabinet stage with a citrus halo of backlight and a cool teal reflection beneath — the Vitrine Studio technique applied against a dark ground rather than white.
subjects
a titanium watch with a teal diala sculptural object on a glass shelfa single premium product floated in a lit cabinet
usage

Full-bleed hero with the object lit center-frame; feature panels crop tighter with a reduced halo; never a room, scene, horizon, or multiple competing objects.

katagami spec
# Plinth

## Philosophy

Display-case commerce: a storefront that behaves like a lit vitrine after hours. One object at a time floats on an illuminated shelf against a deep teal-charcoal ground, measured on a caliper spec-rail, with the buy docked where your hand expects it. Citrus is the light that marks purchase; deep teal is the trust that stays.

### Values

- one object under one light
- measured, not marketed — figures on a rail
- citrus as purchase energy, never decoration
- deep teal as durable assurance
- dark cabinet ground, never white

### Anti-Values

- white product-stage default
- rainbow promotional grids
- a wall of identical product cards
- a third vivid hue creeping in
- marketing copy where a measured figure belongs

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#0E1614` |
| surface | `#16211E` |
| recess | `#0A100E` |
| shelf | `#1E2D29` |
| text | `#EDF2EF` |
| muted | `#8FA39C` |
| border | `#2A3A35` |
| accent | `#D7FF4A` |
| accent_dim | `#A7C92F` |
| on_accent | `#0B140C` |
| jade | `#34C9B4` |
| teal_deep | `#0E5F58` |
| success | `#34C9B4` |
| warning | `#E8B53A` |
| error | `#FF6B5E` |
| info | `#34C9B4` |

### Typography

- **Base Size**: 17px
- **Body Font**: Geist
- **Heading Font**: Bricolage Grotesque
- **Mono Font**: Geist Mono
- **Heading Weight**: 800
- **Heading Transform**: none
- **Letter Spacing**: -0.03em
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700;12..96,800&family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500;600&display=swap

### Radii

- **Sm**: 4px
- **Md**: 18px
- **Lg**: 28px
- **Full**: 9999px
- **None**: 0

### Shadows

- **Sm**: 0 1px 0 rgba(237,242,239,.05)
- **Md**: 0 18px 44px rgba(0,0,0,.5)
- **Lg**: 0 26px 60px rgba(0,0,0,.55)
- **Glow**: 0 0 48px -8px rgba(215,255,74,.45)

### Spacing

- **Base**: 6px
- **Scale**: [6,12,18,28,44,72,112]

### Surfaces

- **Bg Pattern**: none; dark teal-charcoal cabinet interior, objects lit on surface-to-shelf gradient panels with a citrus underline-of-light at the bottom edge; no dot, grid, stripe, or paper texture
- **Card Style**: matte dark shelf-gradient panels, no borders, deep cabinet drop shadow, optional citrus light-underline; spec rows grouped by cool hairlines not a card per item; radii 18px cards / 28px panels
- **Treatment**: lit display case — one citrus halo of light behind the staged object and on the one primary control; deep teal seals assurance

### Borders

- **Default Width**: 1px
- **Accent Width**: 1px
- **Style**: solid
- **Character**: cool teal-charcoal hairlines for structure (the grouping dividers); citrus only on focus rings and the selected chip edge, never as a decorative side stripe

### Motion

- **Duration**: 200ms
- **Easing**: cubic-bezier(.2,.8,.2,1)
- **Philosophy**: the settled fully-rendered page is the default and visible with no JS; sections lift in on scroll, the primary control lifts 2px on hover, gauges fill toward the light; respects prefers-reduced-motion

## Rules

### Composition

Stage one object at a time on a lit shelf-row against a dark cabinet ground; frame it with a caliper spec-rail and a stock fill gauge; dock the primary acquisition where the hand expects it. Vertical stacked shelf rhythm, not an asymmetric offset commerce grid.

### Hierarchy

Large Bricolage display type and the lit object first, then a single citrus control for the next purchase action, with deep teal reserved for assurance and confidence.

### Density

Low-density dark surfaces with compact mono high-information islands for price, stock, and spec figures; the largest whitespace gap is dramatically larger than form gaps.

### Signature

Caliper spec-rail (citrus-tipped measured rail with mono callouts); stock fill gauge (jade-to-citrus bar filling toward the light); lit shelf-row (surface-to-shelf gradient panel with a citrus underline-of-light); docked acquisition (the one citrus-lit control); small square caliper-edged option chips.

## Layout

### Grid

Contained editorial column (max 1240px) with vertically stacked lit shelf-rows and section bands; product detail uses a two-column object + spec/dock split that collapses to one column.

### Whitespace

Large quiet dark margins frame the lit object; internal control groups use 6-18px gaps while hero and section gaps expand to 72-112px.

### Density

airy dark stage with compact mono high-information islands for price/stock/spec

### Responsive

Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the object and dock first; contained content capped and centred on ultra-wide, only the hero spans 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1440px
- **Reflow**: 900px and 560px

## Guidance

### Do

- Keep the ground the dark teal-charcoal cabinet; let one object be lit at a time.
- Use citrus only for purchase intent, selected state, and focus; hang figures on the caliper rail.
- Use deep teal and jade for assurance, confidence, and in-stock signals.
- Group spec rows with cool hairlines and the rail, not a card per item.

### Don't

- Do not default to a white product stage or add a third vivid hue.
- Do not build a rainbow promotion, colored side rails, or a wall of identical cards.
- Do not box the nav into a pill or float it; let it sit open across the header.
- Do not mix arbitrary radii; keep 4 / 18 / 28 / 9999.

### Accessibility

High contrast light text (#EDF2EF) on the dark ground; citrus primary uses near-black ink; every form control explicitly styled with a visible citrus focus ring; motion gated behind prefers-reduced-motion; settled state visible with no JavaScript.

## Imagery Direction

### Pairs With

vitrine-studio

### Summary

One dominant object floated and lit on a dark seamless cabinet stage with a citrus halo of backlight and a cool teal reflection beneath — the Vitrine Studio technique applied against a dark ground rather than white.

### Subjects

- a titanium watch with a teal dial
- a sculptural object on a glass shelf
- a single premium product floated in a lit cabinet

### Usage

Full-bleed hero with the object lit center-frame; feature panels crop tighter with a reduced halo; never a room, scene, horizon, or multiple competing objects.
DESIGN.md
---
version: "alpha"
name: "Plinth"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  bg: "#0E1614"
  surface: "#16211E"
  recess: "#0A100E"
  shelf: "#1E2D29"
  text: "#EDF2EF"
  muted: "#8FA39C"
  border: "#2A3A35"
  accent: "#D7FF4A"
  accent_dim: "#A7C92F"
  on_accent: "#0B140C"
  jade: "#34C9B4"
  teal_deep: "#0E5F58"
  success: "#34C9B4"
  warning: "#E8B53A"
  error: "#FF6B5E"
  info: "#34C9B4"
typography:
  headline-lg:
    fontFamily: "Bricolage Grotesque"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.03em"
  headline-md:
    fontFamily: "Bricolage Grotesque"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.03em"
  body-md:
    fontFamily: "Geist"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.03em"
  label-md:
    fontFamily: "Geist Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  sm: "4px"
  md: "18px"
  lg: "28px"
  full: "9999px"
  none: "0px"
spacing:
  base: "6px"
  xs: "6px"
  sm: "12px"
  md: "18px"
  lg: "28px"
  xl: "44px"
  2xl: "72px"
  3xl: "112px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-recess:
    backgroundColor: "{colors.recess}"
  color-reference-shelf:
    backgroundColor: "{colors.shelf}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-accent_dim:
    backgroundColor: "{colors.accent_dim}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-jade:
    backgroundColor: "{colors.jade}"
  color-reference-teal_deep:
    backgroundColor: "{colors.teal_deep}"
  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: "#000000"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Plinth

## Overview

Display-case commerce: a storefront that behaves like a lit vitrine after hours. One object at a time floats on an illuminated shelf against a deep teal-charcoal ground, measured on a caliper spec-rail, with the buy docked where your hand expects it. Citrus is the light that marks purchase; deep teal is the trust that stays.

### Values

- one object under one light
- measured, not marketed — figures on a rail
- citrus as purchase energy, never decoration
- deep teal as durable assurance
- dark cabinet ground, never white

### Anti-Values

- white product-stage default
- rainbow promotional grids
- a wall of identical product cards
- a third vivid hue creeping in
- marketing copy where a measured figure belongs

## 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 | `#0E1614` |
| surface | `#16211E` |
| recess | `#0A100E` |
| shelf | `#1E2D29` |
| text | `#EDF2EF` |
| muted | `#8FA39C` |
| border | `#2A3A35` |
| accent | `#D7FF4A` |
| accent_dim | `#A7C92F` |
| on_accent | `#0B140C` |
| jade | `#34C9B4` |
| teal_deep | `#0E5F58` |
| success | `#34C9B4` |
| warning | `#E8B53A` |
| error | `#FF6B5E` |
| info | `#34C9B4` |

## Typography

- **Headline-Lg**: Bricolage Grotesque, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Bricolage Grotesque, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Geist, 17px, weight 400, line-height 1.5.
- **Label-Md**: Geist Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `6px`
- **Xs**: `6px`
- **Sm**: `12px`
- **Md**: `18px`
- **Lg**: `28px`
- **Xl**: `44px`
- **2xl**: `72px`
- **3xl**: `112px`

### Grid

Contained editorial column (max 1240px) with vertically stacked lit shelf-rows and section bands; product detail uses a two-column object + spec/dock split that collapses to one column.

### Whitespace

Large quiet dark margins frame the lit object; internal control groups use 6-18px gaps while hero and section gaps expand to 72-112px.

### Density

airy dark stage with compact mono high-information islands for price/stock/spec

### Responsive

Renders from ~390px mobile to 2560px+ ultra-wide; single column on mobile with the object and dock first; contained content capped and centred on ultra-wide, only the hero spans 100vw.

### Breakpoints

- **Mobile**: 390px
- **Tablet**: 768px
- **Desktop**: 1440px
- **Reflow**: 900px and 560px

## Elevation & Depth

### Shadows

- **Sm**: 0 1px 0 rgba(237,242,239,.05)
- **Md**: 0 18px 44px rgba(0,0,0,.5)
- **Lg**: 0 26px 60px rgba(0,0,0,.55)
- **Glow**: 0 0 48px -8px rgba(215,255,74,.45)

## Shapes

### Rounded

- **Sm**: `4px`
- **Md**: `18px`
- **Lg**: `28px`
- **Full**: `9999px`
- **None**: `0px`

### Surfaces

- **Bg Pattern**: none; dark teal-charcoal cabinet interior, objects lit on surface-to-shelf gradient panels with a citrus underline-of-light at the bottom edge; no dot, grid, stripe, or paper texture
- **Card Style**: matte dark shelf-gradient panels, no borders, deep cabinet drop shadow, optional citrus light-underline; spec rows grouped by cool hairlines not a card per item; radii 18px cards / 28px panels
- **Treatment**: lit display case — one citrus halo of light behind the staged object and on the one primary control; deep teal seals assurance

### Borders

- **Default Width**: 1px
- **Accent Width**: 1px
- **Style**: solid
- **Character**: cool teal-charcoal hairlines for structure (the grouping dividers); citrus only on focus rings and the selected chip edge, never as a decorative side stripe

## Components

### Composition

Stage one object at a time on a lit shelf-row against a dark cabinet ground; frame it with a caliper spec-rail and a stock fill gauge; dock the primary acquisition where the hand expects it. Vertical stacked shelf rhythm, not an asymmetric offset commerce grid.

### Hierarchy

Large Bricolage display type and the lit object first, then a single citrus control for the next purchase action, with deep teal reserved for assurance and confidence.

### Density

Low-density dark surfaces with compact mono high-information islands for price, stock, and spec figures; the largest whitespace gap is dramatically larger than form gaps.

### Signature

Caliper spec-rail (citrus-tipped measured rail with mono callouts); stock fill gauge (jade-to-citrus bar filling toward the light); lit shelf-row (surface-to-shelf gradient panel with a citrus underline-of-light); docked acquisition (the one citrus-lit control); small square caliper-edged option chips.

## 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-019ef974-81de-7b50-8c5f-c11925d4f8af/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 Keep the ground the dark teal-charcoal cabinet; let one object be lit at a time.
- Do Use citrus only for purchase intent, selected state, and focus; hang figures on the caliper rail.
- Do Use deep teal and jade for assurance, confidence, and in-stock signals.
- Do Group spec rows with cool hairlines and the rail, not a card per item.
- Don't Do not default to a white product stage or add a third vivid hue.
- Don't Do not build a rainbow promotion, colored side rails, or a wall of identical cards.
- Don't Do not box the nav into a pill or float it; let it sit open across the header.
- Don't Do not mix arbitrary radii; keep 4 / 18 / 28 / 9999.

### Accessibility

High contrast light text (#EDF2EF) on the dark ground; citrus primary uses near-black ink; every form control explicitly styled with a visible citrus focus ring; motion gated behind prefers-reduced-motion; settled state visible with no JavaScript.

## Imagery Direction

### Pairs With

vitrine-studio

### Summary

One dominant object floated and lit on a dark seamless cabinet stage with a citrus halo of backlight and a cool teal reflection beneath — the Vitrine Studio technique applied against a dark ground rather than white.

### Subjects

- a titanium watch with a teal dial
- a sculptural object on a glass shelf
- a single premium product floated in a lit cabinet

### Usage

Full-bleed hero with the object lit center-frame; feature panels crop tighter with a reduced halo; never a room, scene, horizon, or multiple competing objects.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "plinth",
  "type": "registry:theme",
  "title": "Plinth shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#0E1614",
      "foreground": "#EDF2EF",
      "card": "#16211E",
      "card-foreground": "#EDF2EF",
      "popover": "#16211E",
      "popover-foreground": "#EDF2EF",
      "primary": "#EDF2EF",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#8FA39C",
      "muted-foreground": "#EDF2EF",
      "accent": "#D7FF4A",
      "accent-foreground": "#111111",
      "destructive": "#FF6B5E",
      "border": "#2A3A35",
      "input": "#2A3A35",
      "ring": "#D7FF4A",
      "chart-1": "#EDF2EF",
      "chart-2": "#f4f4f5",
      "chart-3": "#D7FF4A",
      "chart-4": "#34C9B4",
      "chart-5": "#E8B53A",
      "sidebar": "#16211E",
      "sidebar-foreground": "#EDF2EF",
      "sidebar-primary": "#EDF2EF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#34C9B4",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#2A3A35",
      "sidebar-ring": "#D7FF4A",
      "radius": "18px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#EDF2EF",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D7FF4A",
      "accent-foreground": "#111111",
      "destructive": "#FF6B5E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D7FF4A",
      "chart-1": "#EDF2EF",
      "chart-2": "#f4f4f5",
      "chart-3": "#D7FF4A",
      "chart-4": "#34C9B4",
      "chart-5": "#E8B53A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#EDF2EF",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#D7FF4A",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D7FF4A",
      "radius": "18px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ef974-81de-7b50-8c5f-c11925d4f8af",
    "slug": "plinth",
    "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_dim",
        "bg",
        "border",
        "error",
        "info",
        "jade",
        "muted",
        "on_accent",
        "recess",
        "shelf",
        "success",
        "surface",
        "teal_deep",
        "text",
        "warning"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "mono_font"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "glow",
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "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-lgBricolage Grotesque · 33px · 700

The quick brown fox jumps

headline-mdBricolage Grotesque · 27px · 600

The quick brown fox jumps

body-mdGeist · 17px · 400

The quick brown fox jumps

label-mdGeist Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
remix lane

try a remix

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

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

Family

related

More like this