Back to gallery

Brass

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun.

Its pictures are drawn in Vitrine.

Download DESIGN.md

Tokens, rules and the paired art style Vitrine.

Preview

Open full page

Typography

Each face set in this language's own words.

headline lgKaisei Decol, 33px, 700

Brass

headline mdKaisei Decol, 27px, 600

Brass

body mdZen Kaku Gothic New, 17px, 400

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun.

label mdDotGothic16, 12px, 600

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun.

Specification

Philosophy

summary

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun. Where its parent Kissaten sets the room in daylight paper, Brass sets it after dark: a flat brass lamp pool is the only light, spilling warmth onto sign lettering and a headline in near-black ink, while a lacquered counter with a brass rail divides the warm room above from the machine shelf below. The machine still answers on a strip of thermal receipt and a cherry 休 hanko when it rests, but the paper now catches only the lamp's spill light, staged in the dark rather than laid flat under daylight.

It values

  • One lamp is the interface: a flat brass pool is the only light in the room, and nothing outside its throw gets warmth.
  • The counter is a real object, not a rule: a lacquered plank with a brass rail, thick enough to divide the room from the machine shelf.
  • Red is still state, not decoration: the 休 hanko appears only on a resting machine, now caught in spill light instead of daylight.
  • White is reserved for two objects: the porcelain cup and the thermal receipt, the only pale things in a dark room.
  • Flat and precise around the light: separation by space and the value of the type, never by boxes or lines.

It refuses

  • A second light source, a coloured sky, or any glow that is not the one lamp.
  • Hairline card frames, corner ticks or panes around anything.
  • A ruled paper field or window mullions laid under copy.
  • White as a page background; white belongs only to the cup and the receipt.
  • Hostile error language, neon, glass, gradients on the page, or rounded corners on a control.

visual character

  • Dark-roast wall #4A2A1A ground with a flat brass lamp pool #F2A516, top-left, the only light.
  • Sign lettering and headline in near-black ink #1E120C, set inside the pool's throw.
  • The lacquered counter #2B1A11 with a brass rail #C8812F: one physical line dividing the room above from the machine shelf below.
  • The porcelain cup and the thermal receipt #FFFFFF: the only pale objects, both catching the pool's spill light.
  • The 休 hanko in cherry #A3161E, carved thick with ink voids, rotated -11deg, pressed onto the receipt as the state of a resting machine.
  • Type staged inside the light: Kaisei Decol 700 for the one big sign line, Zen Kaku Gothic New for prose, DotGothic16 for what the machine prints.
  • Square geometry on every control; the lamp pool and the hanko are the only two circles, both radius 9999 as organic blobs, never a gradient.

lineage

Generation 1 of Brass, descended from Kissaten (en-01a0eca4-0d9f-7072-b71e-29c924c659be) by evolution from arni's approved round-2 specimen (.p-kissaten-a, pairs-round2/kissaten.html, 2026-09-27). It keeps the counter dividing room from machine, the thermal receipt, the cherry 休 hanko and the humane machine voice; it turns Kissaten's flat daylight paper into one lamp-lit room after dark, replaces the cream ground with dark-roast wall and brass, and trades Kissaten's Zen Kurenaido / Noto Serif JP / Sono faces for Kaisei Decol / Zen Kaku Gothic New / DotGothic16.

Tokens
colors16
bg
#4A2A1A
surface
#2B1A11
text
#F5E9D8
muted
#C09B78
border
#5A3B26
accent
#F2A516
on accent
#1E120C
success
#93A860
warning
#D19A2C
error
#EE7A69
info
#AFA090
rail
#C8812F
porcelain
#FFFFFF
ink
#1E120C
shade
#180D07
hanko
#A3161E
derived4
pool bloom
box-shadow: 0 0 6cqi 2cqi color-mix(in srgb, var(--accent) 45%, transparent), 0 0 16cqi 6cqi color-mix(in srgb, var(--accent) 18%, transparent), only on the lamp pool; on hover/focus of the one button the blur radii grow to 9cqi/22cqi over 640ms
spill light
linear-gradient(104deg, color-mix(in srgb, var(--porcelain) 55%, transparent) 0, transparent 45%), the pool's falloff painted across the receipt and the cup, top-left origin
rail shadow
color-mix(in srgb, var(--shade) 55%, transparent) 0 2px 0, a single hard line under the brass rail where the counter meets the shelf
receipt shadow
two layers tinted from --shade: a tight .34cqi .53cqi .47cqi at 30% and a soft 1.25cqi 2.34cqi 2.8cqi at 16%, only on the receipt
typography14
heading font
Kaisei Decol
body font
Zen Kaku Gothic New
mono font
DotGothic16
heading weight
700
body weight
500
button weight
700
mono weight
400, the receipt rail and the verdict row
heading transform
none
letter spacing
-0.02em on display and body; 0 on DotGothic16 and on the wordmark
base size
17px
line height
1.6
scale
13px, 14.5px, 17px, 20px, 26px, 36px, 48px, 72px, 96px
receipt print
DotGothic16 at 5cqi of the receipt width (15 to 22px), Zen Kaku Gothic New at 5.2cqi for the apology line
google fonts url
https://fonts.googleapis.com/css2?family=Kaisei+Decol:wght@700&family=Zen+Kaku+Gothic+New:wght@500;700&family=DotGothic16&display=swap
radii4
none
0px
md
0px
lg
0px
full
9999px
shadows4
pool
a soft brass bloom halo (see derived.pool_bloom), only on the lamp pool
receipt
two layers tinted from --shade: a tight .34cqi .53cqi .47cqi at 30% and a soft 1.25cqi 2.34cqi 2.8cqi at 16%, only on the receipt
lift
0 1px 2px shade 30%, 0 14px 32px -12px shade 45%, only on an open menu or dialog
none
everything else is flat
spacing2
base
8px
scale
4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
surfaces5
treatment
one-lit-object-in-a-dark-room
material
The brass lamp pool is the only light: a flat amber blob #F2A516 with a soft bloom halo, top-left in the room, spilling warmth onto the sign lettering and the headline in near-black ink #1E120C. Below it, a lacquered counter #2B1A11 with a brass rail #C8812F divides the room from the machine shelf; the porcelain cup and the thermal receipt are the only white objects, and both catch the pool's spill light. Everything the pool does not reach stays flat dark-roast #4A2A1A.
card style
No cards. Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space and the value of the type.
wells
Lacquer #2B1A11 wells for inputs, the chosen tab and the checked segment; at most one filled surface per view.
bg pattern
none; the wall is flat dark-roast. The brass rail is the only line.
borders3
default width
0
style
none
character
No borders, hairlines or frames. The one line in the language is the brass rail atop the counter (max(1px,.23cqi) of #C8812F), once per view, between the room and the machine shelf. Focus is a 2px brass outline at 3px offset; a focused field draws a 2px brass line under its well.
motion7
duration
180ms
easing
cubic-bezier(0.2, 0, 0.1, 1)
bloom
640ms cubic-bezier(.2,0,.1,1): the pool's bloom halo grows from 6cqi/16cqi blur to 9cqi/22cqi and eases back, a lamp turned up rather than a flash
print
1.9s: translateY(-101%) to 0 in steps(22), then a .6cqi dip on cubic-bezier(.3,.7,.4,1) and back
press
.5s cubic-bezier(.3,1.4,.5,1) at 1.45s: the hanko lands from scale 1.5 to .93 to 1 at -11deg
reveal
900ms cubic-bezier(.2,0,.1,1), 16px rise, 80ms stagger, IntersectionObserver
philosophy
Motion is a physical verb: the lamp turns up, the receipt prints again, the stamp presses. Settled first, gated by .anim on html, and skipped under prefers-reduced-motion.
controls3
height
48px (40 small, 56 large)
radius
0px
well height
52px
Rules

composition

  • Build every view around the brass pool: the sign and the headline sit inside its throw, and the counter below divides the room from the machine.
  • Give a view at most one object moment: the pool over the sign, the hanko pressed beside a resting machine, or the receipt caught in spill light on the shelf. Show the whole receipt once per page.
  • Keep the pool and the receipt whole, with dark ground on every side; the headline, the copy and one action sit inside the pool's light, never behind a panel.
  • Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space; at most one filled surface (lacquer wells) per view.

hierarchy

  • One big light line per view in Kaisei Decol 700 (48px on phones, 72px on desktop, 96px from 1800px); section titles at 36px, 26px on phones.
  • Prose in Zen Kaku Gothic New 500 at 17px, in two tones: the fact in porcelain text, the reassurance in muted.
  • DotGothic16 prints what the machine says: readings, times, labels and the receipt.
  • State is a word at weight 700; a finished state steps back to muted 500; a resting machine gets the 休 hanko.

density

Calm product-page density: 128px between sections on desktop and 96px on phones, 18 to 28px row padding, one button per view, prose held to about 60 characters.

signature patterns

  • The brass pool: a flat amber blob, top-left, the only light in the room; on the landing it is the hero's lamp glow behind the sign.
  • The brass rail: one line atop the lacquered counter, between the room above and the machine shelf below.
  • The thermal receipt: fed out onto the shelf below the rail, printed in DotGothic16, lit only by the pool's spill light, with a torn foot and a two-layer shade shadow.
  • The 休 hanko: a cherry seal, carved thick with ink voids, pressed once as the state of a resting machine.
  • Turn the lamp up: hover or focus the slot (or the one button) and the pool blooms wider for a moment while the receipt drops back under the rail, prints again, dips, settles, and the hanko presses with a small overshoot.
  • Humane notes: a DotGothic16 time, one sentence in ink saying what happened, one in muted saying what to do next.
Layout

grid

type
object-first product page on a lit counter
max width
1180px content on the landing and 1240px on the embodiment, 1320px from 1800px wide
gutter
40px desktop, 32px tablet, 20px phone
column behavior
Two-column heads use minmax(0,5fr) minmax(0,6fr); lists use minmax(0,1fr) columns; every grid child has min-width:0.

whitespace

section gap
128px desktop, 96px phone
card gap
no cards; 18 to 28px row padding, 40 to 64px between groups
content padding
content sits on the wall aligned to the grid edge; overlays pad 32px
approach
The dark wall is the room. Space and the value of the type do the separating; the brass rail is the only line.

density

default
comfortable
comfortable
button height 48pxinput height 52pxrow height 56 to 72px list rows

responsive

Phones (390px) stack to one column, keep only Hours in the nav, show the plate's plain-wall side with no lamp behind the text, and hide non-essential table columns. Tablets (768 to 1100px) keep two-column lists with their own spacing and the lamp shifted further right in the plate so it stays clear of the headline. From 1800px the content caps and centres; only the hero spans the viewport.

breakpoints

mobile
390px
phone max
640px
tablet
820 to 1100px
desktop
1280px
wide
1800px
ultrawide
2560px
Guidance

Do

  • Start from dark-roast wall and one brass pool; let the pool be the only light in a view.
  • Stage the receipt on the machine shelf below the brass rail, lit only by the pool's spill.
  • Spend cherry only on the 休 hanko of a resting machine.
  • Write every machine note as what happened, what is being done, and one next step.
  • Separate rows by space and type value; keep at most one filled surface per view.
  • Keep one button per view; make a second action a word that inks up.
  • Style every control explicitly, square, with a 2px brass focus outline.

Avoid

  • Don't add a second light source, a gradient sky, or any glow beyond the one pool.
  • Don't frame anything with hairlines, corner ticks or panes.
  • Don't lay a rule field, mullions or texture under copy.
  • Don't use white as a page background; white belongs only to the cup and the receipt.
  • Don't cover the lamp plate with a panel or scrim, and don't show the receipt twice on a page.
  • Don't round corners on a control, add glow or glass beyond the pool, or put emoji on buttons.
Imagery

pairs with

vitrine

art style id

en-019ef8db-fa2d-70a0-b590-9c5c21e853a0

summary

Backlit specimen photography of the brass lamp itself: the fixture and its pool of light emerging from a charcoal-dark ground, a warm brass rim tracing one side of the shade and a cool porcelain-steam rim catching the other, the two-accent chiaroscuro Vitrine calls for. The plate is graded so its dark ground meets the page's #4A2A1A with no seam, and the lamp's own glow becomes the hero's brass pool the sign lettering sits inside.

subjects

  • the brass lamp fixture and its shade, backlit
  • the pool of amber light it throws
  • the lacquered counter's brass rail catching a cool glint
  • a porcelain cup of crema at the light's edge

usage

One full-bleed hero per landing: the Vitrine lamp plate painted with var(--hero-image), positioned so the lamp and its glow sit in the right two-thirds of the frame and the sign lettering and headline sit clear of it on the plain wall at left, at every desktop and tablet width. Phones show only the plate's plain-wall side, with no part of the lamp behind the text; the receipt on the shelf carries the object there instead. Inside pages carry no illustration; the pool and the receipt are the objects.

avoid

A second light source, people, other furniture, a picture frame or display case around the lamp, saturated multi-colour lighting, white backgrounds.

Katagami spec file
# Brass

## Philosophy

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun. Where its parent Kissaten sets the room in daylight paper, Brass sets it after dark: a flat brass lamp pool is the only light, spilling warmth onto sign lettering and a headline in near-black ink, while a lacquered counter with a brass rail divides the warm room above from the machine shelf below. The machine still answers on a strip of thermal receipt and a cherry 休 hanko when it rests, but the paper now catches only the lamp's spill light, staged in the dark rather than laid flat under daylight.

### Values

- One lamp is the interface: a flat brass pool is the only light in the room, and nothing outside its throw gets warmth.
- The counter is a real object, not a rule: a lacquered plank with a brass rail, thick enough to divide the room from the machine shelf.
- Red is still state, not decoration: the 休 hanko appears only on a resting machine, now caught in spill light instead of daylight.
- White is reserved for two objects: the porcelain cup and the thermal receipt, the only pale things in a dark room.
- Flat and precise around the light: separation by space and the value of the type, never by boxes or lines.

### Anti-Values

- A second light source, a coloured sky, or any glow that is not the one lamp.
- Hairline card frames, corner ticks or panes around anything.
- A ruled paper field or window mullions laid under copy.
- White as a page background; white belongs only to the cup and the receipt.
- Hostile error language, neon, glass, gradients on the page, or rounded corners on a control.

### Visual Character

- Dark-roast wall #4A2A1A ground with a flat brass lamp pool #F2A516, top-left, the only light.
- Sign lettering and headline in near-black ink #1E120C, set inside the pool's throw.
- The lacquered counter #2B1A11 with a brass rail #C8812F: one physical line dividing the room above from the machine shelf below.
- The porcelain cup and the thermal receipt #FFFFFF: the only pale objects, both catching the pool's spill light.
- The 休 hanko in cherry #A3161E, carved thick with ink voids, rotated -11deg, pressed onto the receipt as the state of a resting machine.
- Type staged inside the light: Kaisei Decol 700 for the one big sign line, Zen Kaku Gothic New for prose, DotGothic16 for what the machine prints.
- Square geometry on every control; the lamp pool and the hanko are the only two circles, both radius 9999 as organic blobs, never a gradient.

### Lineage

> Generation 1 of Brass, descended from Kissaten (en-01a0eca4-0d9f-7072-b71e-29c924c659be) by evolution from arni's approved round-2 specimen (.p-kissaten-a, pairs-round2/kissaten.html, 2026-09-27). It keeps the counter dividing room from machine, the thermal receipt, the cherry 休 hanko and the humane machine voice; it turns Kissaten's flat daylight paper into one lamp-lit room after dark, replaces the cream ground with dark-roast wall and brass, and trades Kissaten's Zen Kurenaido / Noto Serif JP / Sono faces for Kaisei Decol / Zen Kaku Gothic New / DotGothic16.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#4A2A1A` |
| surface | `#2B1A11` |
| text | `#F5E9D8` |
| muted | `#C09B78` |
| border | `#5A3B26` |
| accent | `#F2A516` |
| on_accent | `#1E120C` |
| success | `#93A860` |
| warning | `#D19A2C` |
| error | `#EE7A69` |
| info | `#AFA090` |
| rail | `#C8812F` |
| porcelain | `#FFFFFF` |
| ink | `#1E120C` |
| shade | `#180D07` |
| hanko | `#A3161E` |

### Derived

- **Pool Bloom**: box-shadow: 0 0 6cqi 2cqi color-mix(in srgb, var(--accent) 45%, transparent), 0 0 16cqi 6cqi color-mix(in srgb, var(--accent) 18%, transparent), only on the lamp pool; on hover/focus of the one button the blur radii grow to 9cqi/22cqi over 640ms
- **Spill Light**: linear-gradient(104deg, color-mix(in srgb, var(--porcelain) 55%, transparent) 0, transparent 45%), the pool's falloff painted across the receipt and the cup, top-left origin
- **Rail Shadow**: color-mix(in srgb, var(--shade) 55%, transparent) 0 2px 0, a single hard line under the brass rail where the counter meets the shelf
- **Receipt Shadow**: two layers tinted from --shade: a tight .34cqi .53cqi .47cqi at 30% and a soft 1.25cqi 2.34cqi 2.8cqi at 16%, only on the receipt

### Typography

- **Heading Font**: Kaisei Decol
- **Body Font**: Zen Kaku Gothic New
- **Mono Font**: DotGothic16
- **Heading Weight**: 700
- **Body Weight**: 500
- **Button Weight**: 700
- **Mono Weight**: 400, the receipt rail and the verdict row
- **Heading Transform**: none
- **Letter Spacing**: -0.02em on display and body; 0 on DotGothic16 and on the wordmark
- **Base Size**: 17px
- **Line Height**: 1.6
- **Scale**: ["13px","14.5px","17px","20px","26px","36px","48px","72px","96px"]
- **Receipt Print**: DotGothic16 at 5cqi of the receipt width (15 to 22px), Zen Kaku Gothic New at 5.2cqi for the apology line
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Kaisei+Decol:wght@700&family=Zen+Kaku+Gothic+New:wght@500;700&family=DotGothic16&display=swap

### Radii

- **None**: 0px
- **Md**: 0px
- **Lg**: 0px
- **Full**: 9999px

### Shadows

- **Pool**: a soft brass bloom halo (see derived.pool_bloom), only on the lamp pool
- **Receipt**: two layers tinted from --shade: a tight .34cqi .53cqi .47cqi at 30% and a soft 1.25cqi 2.34cqi 2.8cqi at 16%, only on the receipt
- **Lift**: 0 1px 2px shade 30%, 0 14px 32px -12px shade 45%, only on an open menu or dialog
- **None**: everything else is flat

### Spacing

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

### Surfaces

- **Treatment**: one-lit-object-in-a-dark-room
- **Material**: The brass lamp pool is the only light: a flat amber blob #F2A516 with a soft bloom halo, top-left in the room, spilling warmth onto the sign lettering and the headline in near-black ink #1E120C. Below it, a lacquered counter #2B1A11 with a brass rail #C8812F divides the room from the machine shelf; the porcelain cup and the thermal receipt are the only white objects, and both catch the pool's spill light. Everything the pool does not reach stays flat dark-roast #4A2A1A.
- **Card Style**: No cards. Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space and the value of the type.
- **Wells**: Lacquer #2B1A11 wells for inputs, the chosen tab and the checked segment; at most one filled surface per view.
- **Bg Pattern**: none; the wall is flat dark-roast. The brass rail is the only line.

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No borders, hairlines or frames. The one line in the language is the brass rail atop the counter (max(1px,.23cqi) of #C8812F), once per view, between the room and the machine shelf. Focus is a 2px brass outline at 3px offset; a focused field draws a 2px brass line under its well.

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Bloom**: 640ms cubic-bezier(.2,0,.1,1): the pool's bloom halo grows from 6cqi/16cqi blur to 9cqi/22cqi and eases back, a lamp turned up rather than a flash
- **Print**: 1.9s: translateY(-101%) to 0 in steps(22), then a .6cqi dip on cubic-bezier(.3,.7,.4,1) and back
- **Press**: .5s cubic-bezier(.3,1.4,.5,1) at 1.45s: the hanko lands from scale 1.5 to .93 to 1 at -11deg
- **Reveal**: 900ms cubic-bezier(.2,0,.1,1), 16px rise, 80ms stagger, IntersectionObserver
- **Philosophy**: Motion is a physical verb: the lamp turns up, the receipt prints again, the stamp presses. Settled first, gated by .anim on html, and skipped under prefers-reduced-motion.

### Controls

- **Height**: 48px (40 small, 56 large)
- **Radius**: 0px
- **Well Height**: 52px

## Rules

### Composition

- Build every view around the brass pool: the sign and the headline sit inside its throw, and the counter below divides the room from the machine.
- Give a view at most one object moment: the pool over the sign, the hanko pressed beside a resting machine, or the receipt caught in spill light on the shelf. Show the whole receipt once per page.
- Keep the pool and the receipt whole, with dark ground on every side; the headline, the copy and one action sit inside the pool's light, never behind a panel.
- Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space; at most one filled surface (lacquer wells) per view.

### Hierarchy

- One big light line per view in Kaisei Decol 700 (48px on phones, 72px on desktop, 96px from 1800px); section titles at 36px, 26px on phones.
- Prose in Zen Kaku Gothic New 500 at 17px, in two tones: the fact in porcelain text, the reassurance in muted.
- DotGothic16 prints what the machine says: readings, times, labels and the receipt.
- State is a word at weight 700; a finished state steps back to muted 500; a resting machine gets the 休 hanko.

### Density

Calm product-page density: 128px between sections on desktop and 96px on phones, 18 to 28px row padding, one button per view, prose held to about 60 characters.

### Signature Patterns

- The brass pool: a flat amber blob, top-left, the only light in the room; on the landing it is the hero's lamp glow behind the sign.
- The brass rail: one line atop the lacquered counter, between the room above and the machine shelf below.
- The thermal receipt: fed out onto the shelf below the rail, printed in DotGothic16, lit only by the pool's spill light, with a torn foot and a two-layer shade shadow.
- The 休 hanko: a cherry seal, carved thick with ink voids, pressed once as the state of a resting machine.
- Turn the lamp up: hover or focus the slot (or the one button) and the pool blooms wider for a moment while the receipt drops back under the rail, prints again, dips, settles, and the hanko presses with a small overshoot.
- Humane notes: a DotGothic16 time, one sentence in ink saying what happened, one in muted saying what to do next.

## Layout

### Grid

- **Type**: object-first product page on a lit counter
- **Max Width**: 1180px content on the landing and 1240px on the embodiment, 1320px from 1800px wide
- **Gutter**: 40px desktop, 32px tablet, 20px phone
- **Column Behavior**: Two-column heads use minmax(0,5fr) minmax(0,6fr); lists use minmax(0,1fr) columns; every grid child has min-width:0.

### Whitespace

- **Section Gap**: 128px desktop, 96px phone
- **Card Gap**: no cards; 18 to 28px row padding, 40 to 64px between groups
- **Content Padding**: content sits on the wall aligned to the grid edge; overlays pad 32px
- **Approach**: The dark wall is the room. Space and the value of the type do the separating; the brass rail is the only line.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"48px","input_height":"52px","row_height":"56 to 72px list rows"}

### Responsive

Phones (390px) stack to one column, keep only Hours in the nav, show the plate's plain-wall side with no lamp behind the text, and hide non-essential table columns. Tablets (768 to 1100px) keep two-column lists with their own spacing and the lamp shifted further right in the plate so it stays clear of the headline. From 1800px the content caps and centres; only the hero spans the viewport.

### Breakpoints

- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 820 to 1100px
- **Desktop**: 1280px
- **Wide**: 1800px
- **Ultrawide**: 2560px

## Guidance

### Do

- Start from dark-roast wall and one brass pool; let the pool be the only light in a view.
- Stage the receipt on the machine shelf below the brass rail, lit only by the pool's spill.
- Spend cherry only on the 休 hanko of a resting machine.
- Write every machine note as what happened, what is being done, and one next step.
- Separate rows by space and type value; keep at most one filled surface per view.
- Keep one button per view; make a second action a word that inks up.
- Style every control explicitly, square, with a 2px brass focus outline.

### Don't

- Don't add a second light source, a gradient sky, or any glow beyond the one pool.
- Don't frame anything with hairlines, corner ticks or panes.
- Don't lay a rule field, mullions or texture under copy.
- Don't use white as a page background; white belongs only to the cup and the receipt.
- Don't cover the lamp plate with a panel or scrim, and don't show the receipt twice on a page.
- Don't round corners on a control, add glow or glass beyond the pool, or put emoji on buttons.

### Accessibility

AA and better against the dark wall: porcelain text #F5E9D8 is 10.7:1 and muted #C09B78 is 5.0:1 on #4A2A1A; near-black ink #1E120C is 8.9:1 on the brass pool #F2A516 and 18.3:1 on porcelain #FFFFFF; the semantic inks (success #93A860, warning #D19A2C, error #EE7A69, info #AFA090) clear 4.6:1 or better on the wall and 5.3:1 or better on the lacquer shelf; the hanko is 7.8:1 on porcelain and always carries a word beside it. Focus is a 2px brass outline at 3px offset, or a 2px brass line under a well. The receipt's print verb and the pool's bloom run only inside prefers-reduced-motion: no-preference; the settled receipt renders with no JavaScript, and the slot is a focusable button with a label.

### Usage Context

Calm developer tools, companion agents, maintenance consoles and service counters after hours, and any product where a machine should feel patient, domestic and lit by one warm light instead of a bank of screens.

## Imagery Direction

### Pairs With

vitrine

### Art Style Id

en-019ef8db-fa2d-70a0-b590-9c5c21e853a0

### Summary

Backlit specimen photography of the brass lamp itself: the fixture and its pool of light emerging from a charcoal-dark ground, a warm brass rim tracing one side of the shade and a cool porcelain-steam rim catching the other, the two-accent chiaroscuro Vitrine calls for. The plate is graded so its dark ground meets the page's #4A2A1A with no seam, and the lamp's own glow becomes the hero's brass pool the sign lettering sits inside.

### Subjects

- the brass lamp fixture and its shade, backlit
- the pool of amber light it throws
- the lacquered counter's brass rail catching a cool glint
- a porcelain cup of crema at the light's edge

### Usage

One full-bleed hero per landing: the Vitrine lamp plate painted with var(--hero-image), positioned so the lamp and its glow sit in the right two-thirds of the frame and the sign lettering and headline sit clear of it on the plain wall at left, at every desktop and tablet width. Phones show only the plate's plain-wall side, with no part of the lamp behind the text; the receipt on the shelf carries the object there instead. Inside pages carry no illustration; the pool and the receipt are the objects.

### Avoid

A second light source, people, other furniture, a picture frame or display case around the lamp, saturated multi-colour lighting, white backgrounds.
DESIGN.md file
---
version: "alpha"
name: "Brass"
description: "Brass is a quiet interface language for a machine room lit by one lamp instead of one sun. Where its parent Kissaten sets the room in daylight paper, Brass sets it after dark: a flat brass lamp pool is the only light, spilling warmth ont..."
colors:
  bg: "#4A2A1A"
  surface: "#2B1A11"
  text: "#F5E9D8"
  muted: "#C09B78"
  border: "#5A3B26"
  accent: "#F2A516"
  on_accent: "#1E120C"
  success: "#93A860"
  warning: "#D19A2C"
  error: "#EE7A69"
  info: "#AFA090"
  rail: "#C8812F"
  porcelain: "#FFFFFF"
  ink: "#1E120C"
  shade: "#180D07"
  hanko: "#A3161E"
typography:
  headline-lg:
    fontFamily: "Kaisei Decol"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Kaisei Decol"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Zen Kaku Gothic New"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "DotGothic16"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  md: "0px"
  lg: "0px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
  step-9: "128px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  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}"
  color-reference-rail:
    backgroundColor: "{colors.rail}"
  color-reference-porcelain:
    backgroundColor: "{colors.porcelain}"
  color-reference-ink:
    backgroundColor: "{colors.ink}"
  color-reference-shade:
    backgroundColor: "{colors.shade}"
  color-reference-hanko:
    backgroundColor: "{colors.hanko}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "{colors.on_accent}"
    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"
---

# Brass

## Overview

Brass is a quiet interface language for a machine room lit by one lamp instead of one sun. Where its parent Kissaten sets the room in daylight paper, Brass sets it after dark: a flat brass lamp pool is the only light, spilling warmth onto sign lettering and a headline in near-black ink, while a lacquered counter with a brass rail divides the warm room above from the machine shelf below. The machine still answers on a strip of thermal receipt and a cherry 休 hanko when it rests, but the paper now catches only the lamp's spill light, staged in the dark rather than laid flat under daylight.

### Values

- One lamp is the interface: a flat brass pool is the only light in the room, and nothing outside its throw gets warmth.
- The counter is a real object, not a rule: a lacquered plank with a brass rail, thick enough to divide the room from the machine shelf.
- Red is still state, not decoration: the 休 hanko appears only on a resting machine, now caught in spill light instead of daylight.
- White is reserved for two objects: the porcelain cup and the thermal receipt, the only pale things in a dark room.
- Flat and precise around the light: separation by space and the value of the type, never by boxes or lines.

### Anti-Values

- A second light source, a coloured sky, or any glow that is not the one lamp.
- Hairline card frames, corner ticks or panes around anything.
- A ruled paper field or window mullions laid under copy.
- White as a page background; white belongs only to the cup and the receipt.
- Hostile error language, neon, glass, gradients on the page, or rounded corners on a control.

### Visual Character

- Dark-roast wall #4A2A1A ground with a flat brass lamp pool #F2A516, top-left, the only light.
- Sign lettering and headline in near-black ink #1E120C, set inside the pool's throw.
- The lacquered counter #2B1A11 with a brass rail #C8812F: one physical line dividing the room above from the machine shelf below.
- The porcelain cup and the thermal receipt #FFFFFF: the only pale objects, both catching the pool's spill light.
- The 休 hanko in cherry #A3161E, carved thick with ink voids, rotated -11deg, pressed onto the receipt as the state of a resting machine.
- Type staged inside the light: Kaisei Decol 700 for the one big sign line, Zen Kaku Gothic New for prose, DotGothic16 for what the machine prints.
- Square geometry on every control; the lamp pool and the hanko are the only two circles, both radius 9999 as organic blobs, never a gradient.

### Lineage

> Generation 1 of Brass, descended from Kissaten (en-01a0eca4-0d9f-7072-b71e-29c924c659be) by evolution from arni's approved round-2 specimen (.p-kissaten-a, pairs-round2/kissaten.html, 2026-09-27). It keeps the counter dividing room from machine, the thermal receipt, the cherry 休 hanko and the humane machine voice; it turns Kissaten's flat daylight paper into one lamp-lit room after dark, replaces the cream ground with dark-roast wall and brass, and trades Kissaten's Zen Kurenaido / Noto Serif JP / Sono faces for Kaisei Decol / Zen Kaku Gothic New / DotGothic16.

## 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 | `#4A2A1A` |
| surface | `#2B1A11` |
| text | `#F5E9D8` |
| muted | `#C09B78` |
| border | `#5A3B26` |
| accent | `#F2A516` |
| on_accent | `#1E120C` |
| success | `#93A860` |
| warning | `#D19A2C` |
| error | `#EE7A69` |
| info | `#AFA090` |
| rail | `#C8812F` |
| porcelain | `#FFFFFF` |
| ink | `#1E120C` |
| shade | `#180D07` |
| hanko | `#A3161E` |

## Typography

Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Kaisei+Decol:wght@700&family=Zen+Kaku+Gothic+New:wght@500;700&family=DotGothic16&display=swap

- **Headline-Lg**: Kaisei Decol, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Kaisei Decol, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Zen Kaku Gothic New, 17px, weight 400, line-height 1.5.
- **Label-Md**: DotGothic16, 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`
- **Step-9**: `128px`

### Grid

- **Type**: object-first product page on a lit counter
- **Max Width**: 1180px content on the landing and 1240px on the embodiment, 1320px from 1800px wide
- **Gutter**: 40px desktop, 32px tablet, 20px phone
- **Column Behavior**: Two-column heads use minmax(0,5fr) minmax(0,6fr); lists use minmax(0,1fr) columns; every grid child has min-width:0.

### Whitespace

- **Section Gap**: 128px desktop, 96px phone
- **Card Gap**: no cards; 18 to 28px row padding, 40 to 64px between groups
- **Content Padding**: content sits on the wall aligned to the grid edge; overlays pad 32px
- **Approach**: The dark wall is the room. Space and the value of the type do the separating; the brass rail is the only line.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"48px","input_height":"52px","row_height":"56 to 72px list rows"}

### Responsive

Phones (390px) stack to one column, keep only Hours in the nav, show the plate's plain-wall side with no lamp behind the text, and hide non-essential table columns. Tablets (768 to 1100px) keep two-column lists with their own spacing and the lamp shifted further right in the plate so it stays clear of the headline. From 1800px the content caps and centres; only the hero spans the viewport.

### Breakpoints

- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 820 to 1100px
- **Desktop**: 1280px
- **Wide**: 1800px
- **Ultrawide**: 2560px

## Elevation & Depth

### Shadows

- **Pool**: a soft brass bloom halo (see derived.pool_bloom), only on the lamp pool
- **Receipt**: two layers tinted from --shade: a tight .34cqi .53cqi .47cqi at 30% and a soft 1.25cqi 2.34cqi 2.8cqi at 16%, only on the receipt
- **Lift**: 0 1px 2px shade 30%, 0 14px 32px -12px shade 45%, only on an open menu or dialog
- **None**: everything else is flat

## Shapes

### Rounded

- **None**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: one-lit-object-in-a-dark-room
- **Material**: The brass lamp pool is the only light: a flat amber blob #F2A516 with a soft bloom halo, top-left in the room, spilling warmth onto the sign lettering and the headline in near-black ink #1E120C. Below it, a lacquered counter #2B1A11 with a brass rail #C8812F divides the room from the machine shelf; the porcelain cup and the thermal receipt are the only white objects, and both catch the pool's spill light. Everything the pool does not reach stays flat dark-roast #4A2A1A.
- **Card Style**: No cards. Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space and the value of the type.
- **Wells**: Lacquer #2B1A11 wells for inputs, the chosen tab and the checked segment; at most one filled surface per view.
- **Bg Pattern**: none; the wall is flat dark-roast. The brass rail is the only line.

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No borders, hairlines or frames. The one line in the language is the brass rail atop the counter (max(1px,.23cqi) of #C8812F), once per view, between the room and the machine shelf. Focus is a 2px brass outline at 3px offset; a focused field draws a 2px brass line under its well.

## Components

### Composition

- Build every view around the brass pool: the sign and the headline sit inside its throw, and the counter below divides the room from the machine.
- Give a view at most one object moment: the pool over the sign, the hanko pressed beside a resting machine, or the receipt caught in spill light on the shelf. Show the whole receipt once per page.
- Keep the pool and the receipt whole, with dark ground on every side; the headline, the copy and one action sit inside the pool's light, never behind a panel.
- Lists, menus, hours and forms sit straight on the wall or the shelf, parted by space; at most one filled surface (lacquer wells) per view.

### Hierarchy

- One big light line per view in Kaisei Decol 700 (48px on phones, 72px on desktop, 96px from 1800px); section titles at 36px, 26px on phones.
- Prose in Zen Kaku Gothic New 500 at 17px, in two tones: the fact in porcelain text, the reassurance in muted.
- DotGothic16 prints what the machine says: readings, times, labels and the receipt.
- State is a word at weight 700; a finished state steps back to muted 500; a resting machine gets the 休 hanko.

### Density

Calm product-page density: 128px between sections on desktop and 96px on phones, 18 to 28px row padding, one button per view, prose held to about 60 characters.

### Signature Patterns

- The brass pool: a flat amber blob, top-left, the only light in the room; on the landing it is the hero's lamp glow behind the sign.
- The brass rail: one line atop the lacquered counter, between the room above and the machine shelf below.
- The thermal receipt: fed out onto the shelf below the rail, printed in DotGothic16, lit only by the pool's spill light, with a torn foot and a two-layer shade shadow.
- The 休 hanko: a cherry seal, carved thick with ink voids, pressed once as the state of a resting machine.
- Turn the lamp up: hover or focus the slot (or the one button) and the pool blooms wider for a moment while the receipt drops back under the rail, prints again, dips, settles, and the hanko presses with a small overshoot.
- Humane notes: a DotGothic16 time, one sentence in ink saying what happened, one in muted saying what to do next.

## 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-01a0edf8-64a0-7402-b3ee-61499203f098/DESIGN.with-shadcn.md`.

Machine-readable companions for automation: `/language/en-01a0edf8-64a0-7402-b3ee-61499203f098/shadcn.json` (registry theme), `/language/en-01a0edf8-64a0-7402-b3ee-61499203f098/shadcn-components.md` (component recipes) and `/language/en-01a0edf8-64a0-7402-b3ee-61499203f098/shadcn-shots.json` (preview shots). The human-facing handoff is still 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 Start from dark-roast wall and one brass pool; let the pool be the only light in a view.
- Do Stage the receipt on the machine shelf below the brass rail, lit only by the pool's spill.
- Do Spend cherry only on the 休 hanko of a resting machine.
- Do Write every machine note as what happened, what is being done, and one next step.
- Do Separate rows by space and type value; keep at most one filled surface per view.
- Do Keep one button per view; make a second action a word that inks up.
- Do Style every control explicitly, square, with a 2px brass focus outline.
- Don't Don't add a second light source, a gradient sky, or any glow beyond the one pool.
- Don't Don't frame anything with hairlines, corner ticks or panes.
- Don't Don't lay a rule field, mullions or texture under copy.
- Don't Don't use white as a page background; white belongs only to the cup and the receipt.
- Don't Don't cover the lamp plate with a panel or scrim, and don't show the receipt twice on a page.
- Don't Don't round corners on a control, add glow or glass beyond the pool, or put emoji on buttons.

### Accessibility

AA and better against the dark wall: porcelain text #F5E9D8 is 10.7:1 and muted #C09B78 is 5.0:1 on #4A2A1A; near-black ink #1E120C is 8.9:1 on the brass pool #F2A516 and 18.3:1 on porcelain #FFFFFF; the semantic inks (success #93A860, warning #D19A2C, error #EE7A69, info #AFA090) clear 4.6:1 or better on the wall and 5.3:1 or better on the lacquer shelf; the hanko is 7.8:1 on porcelain and always carries a word beside it. Focus is a 2px brass outline at 3px offset, or a 2px brass line under a well. The receipt's print verb and the pool's bloom run only inside prefers-reduced-motion: no-preference; the settled receipt renders with no JavaScript, and the slot is a focusable button with a label.

### Usage Context

Calm developer tools, companion agents, maintenance consoles and service counters after hours, and any product where a machine should feel patient, domestic and lit by one warm light instead of a bank of screens.

## Imagery Direction

### Pairs With

vitrine

### Art Style Id

en-019ef8db-fa2d-70a0-b590-9c5c21e853a0

### Summary

Backlit specimen photography of the brass lamp itself: the fixture and its pool of light emerging from a charcoal-dark ground, a warm brass rim tracing one side of the shade and a cool porcelain-steam rim catching the other, the two-accent chiaroscuro Vitrine calls for. The plate is graded so its dark ground meets the page's #4A2A1A with no seam, and the lamp's own glow becomes the hero's brass pool the sign lettering sits inside.

### Subjects

- the brass lamp fixture and its shade, backlit
- the pool of amber light it throws
- the lacquered counter's brass rail catching a cool glint
- a porcelain cup of crema at the light's edge

### Usage

One full-bleed hero per landing: the Vitrine lamp plate painted with var(--hero-image), positioned so the lamp and its glow sit in the right two-thirds of the frame and the sign lettering and headline sit clear of it on the plain wall at left, at every desktop and tablet width. Phones show only the plate's plain-wall side, with no part of the lamp behind the text; the receipt on the shelf carries the object there instead. Inside pages carry no illustration; the pool and the receipt are the objects.

### Avoid

A second light source, people, other furniture, a picture frame or display case around the lamp, saturated multi-colour lighting, white backgrounds.
shadcn/ui theme file
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "brass",
  "type": "registry:theme",
  "title": "Brass shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#4A2A1A",
      "foreground": "#F5E9D8",
      "card": "#2B1A11",
      "card-foreground": "#F5E9D8",
      "popover": "#2B1A11",
      "popover-foreground": "#F5E9D8",
      "primary": "#F5E9D8",
      "primary-foreground": "#111111",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#C09B78",
      "muted-foreground": "#F5E9D8",
      "accent": "#F2A516",
      "accent-foreground": "#ffffff",
      "destructive": "#EE7A69",
      "border": "#5A3B26",
      "input": "#5A3B26",
      "ring": "#F2A516",
      "chart-1": "#F5E9D8",
      "chart-2": "#f4f4f5",
      "chart-3": "#F2A516",
      "chart-4": "#93A860",
      "chart-5": "#D19A2C",
      "sidebar": "#2B1A11",
      "sidebar-foreground": "#F5E9D8",
      "sidebar-primary": "#F5E9D8",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#AFA090",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#5A3B26",
      "sidebar-ring": "#F2A516",
      "radius": "0px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#F5E9D8",
      "primary-foreground": "#111111",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#F2A516",
      "accent-foreground": "#ffffff",
      "destructive": "#EE7A69",
      "border": "#303642",
      "input": "#303642",
      "ring": "#F2A516",
      "chart-1": "#F5E9D8",
      "chart-2": "#f4f4f5",
      "chart-3": "#F2A516",
      "chart-4": "#93A860",
      "chart-5": "#D19A2C",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#F5E9D8",
      "sidebar-primary-foreground": "#111111",
      "sidebar-accent": "#F2A516",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#F2A516",
      "radius": "0px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-01a0edf8-64a0-7402-b3ee-61499203f098",
    "slug": "brass",
    "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",
        "bg",
        "border",
        "error",
        "hanko",
        "info",
        "ink",
        "muted",
        "on_accent",
        "porcelain",
        "rail",
        "shade",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "derived": [
        "pool_bloom",
        "rail_shadow",
        "receipt_shadow",
        "spill_light"
      ],
      "typography": [
        "base_size",
        "body_font",
        "body_weight",
        "button_weight",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font",
        "mono_weight",
        "receipt_print",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none"
      ],
      "shadows": [
        "lift",
        "none",
        "pool",
        "receipt"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "material",
        "treatment",
        "wells"
      ],
      "borders": [
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "bloom",
        "duration",
        "easing",
        "philosophy",
        "press",
        "print",
        "reveal"
      ],
      "controls": [
        "height",
        "radius",
        "well_height"
      ]
    }
  }
}
```

shadcn/ui kit