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
Typography
Each face set in this language's own words.
Brass
Brass
Brass is a quiet interface language for a machine room lit by one lamp instead of one sun.
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
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
- 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"
]
}
}
}
```