Back to gallery

Sumi Rail

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper.

Its pictures are drawn in Sumi.

Download DESIGN.md

Tokens, rules and the paired art style Sumi.

Preview

Open full page

Typography

Each face set in this language's own words.

headline lgYuji Boku, 33px, 700

Sumi Rail

headline mdYuji Boku, 27px, 600

Sumi Rail

body mdBIZ UDPMincho, 17px, 400

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper.

label mdBIZ UDPMincho, 12px, 600

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper.

Specification

Philosophy

summary

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper. The painting is the interface — brush strokes and graded washes on bare paper, photographed under one soft top-left light. Around it sits a vertical reading rail that names each region like a mounter's paper label, and one vermilion seal, pressed at a slight tilt, that marks the single thing that is finished. Everything else is the paper the painting is on: small quiet type, one hairline rule trailing past every heading, no frames, no cards, no second colour.

It values

  • One object is the interface: the ink-wash painting, rendered as a real material thing, the only image on a view and never repeated whole.
  • The seal is spent once. It marks the one confirmed, finished, ready thing — never a decoration, never multiplied into a wall of badges.
  • The rail is architecture, not a menu: navigation and section names read as a mounter's upright paper label in the margin.
  • Ink and paper, one accent. Vermilion belongs to the seal alone; the primary action is ink on paper, not colour.
  • Faces by job: Yuji Boku for the brush headline, the brand mark and section titles; BIZ UDPMincho for everything read at length.
  • Ma — intentional emptiness — is a structural material: at least one large quiet zone per major view, so density never goes uniform.

It refuses

  • A charcoal frame or inset border around every panel.
  • Status flooded into bright chips or a wall of coloured dots.
  • Vermilion spent on a button, a link, or anything that is not the one finished thing.
  • Soft drop shadows, glossy gradients, or bounce/overshoot motion.
  • Centred, symmetrical layouts that erase the measured asymmetry of the rail.
  • Showing the whole painting twice on one page, or pairing the ink button with a second loud action.

visual character

  • The painting stands once per page, low and to one side with bare paper on every other side: a heron in still water on the landing hero, a different moment (the mounter's own seal and ink pad, or a close wash detail) further down the page.
  • One vermilion seal (--accent, #B23C27), a rotated square with a paper-coloured glyph cut into it, appears once per view at most — pressed beside the rail on the hero, stamped once in a list of otherwise-quiet status words, or held at the close.
  • The vertical rail (Yuji Boku bold column word plus a BIZ UDPMincho caption, writing-mode vertical-rl) sits in the margin of every major section, naming it the way a mounter labels a roll of paper.
  • A hairline rule (var(--border), 1px) trails past every section heading; it is the only line in the language besides the single rule that parts one list row from the next.
  • The ink button is a square block of --text on --bg-coloured type, never the vermilion accent and never a pill: it lifts 1px on hover and presses back on click, like a stamp coming down.

lineage

Generation 3 of Sumi Rail, revised in place from the round-3 descendant of the approved Inspora-method specimen (2026-09-29). Kept: the name, the warm paper ground, the vertical rail, the single vermilion seal, Ma as structural emptiness, and the pairing with Sumi (sumi-ink-wash). Changed: the abstract potter's-kiln scene becomes a scroll-mounting workshop built around one real ink-wash painting; the CTA moves from a vermilion pill to a square ink block so vermilion belongs to the seal alone; IBM Plex Mono is dropped for a two-family set (Yuji Boku, BIZ UDPMincho); panel shadows and the panel fill under list rows are dropped — rows sit straight on the paper, parted by a hairline; status marks that were coloured squares for every row become plain quiet words, with the seal reserved for the one finished thing.

Tokens
colors14
bg
#F1EDE1
surface
#E8E2D2
text
#1B1815
muted
#6B6259
border
#D9D0BE
accent
#B23C27
accent ink
#8E2E1D
on accent
#FBF7EC
indigo
#3A4B63
matcha
#4F6142
success
#4F6142
warning
#8C5D18
error
#8E2E1D
info
#3A4B63
derived1
note
Every colour past the eleven role vars is one of them by another name: success is matcha, info is indigo, error is accent_ink. Hover and secondary-copy shades are color-mix(in srgb, ...) blends of text/muted/surface, never a new literal hex. A palette swap carries the seal, the buttons and every status word with it.
typography12
heading font
Yuji Boku
body font
BIZ UDPMincho
heading weight
400
body weight
400
button weight
700
heading transform
none
letter spacing
-0.01em on Yuji Boku display; 0 on body
line height
1.68
base size
17px
scale
13px, 15px, 17px, 21px, 28px, 40px, 64px
roles
display Yuji Boku 400: the brush headline, the brand mark, the rail's bold column word, section titles, the seal's glyphbody BIZ UDPMincho 400 at 17px for copy, nav, list rows and the rail's small caption; 15px for secondary support lines; 13px for the smallest metamono none — dropped IBM Plex Mono from the prior generation; BIZ UDPMincho sets dates and counts too, so the page carries only two families
google fonts url
https://fonts.googleapis.com/css2?family=Yuji+Boku&family=BIZ+UDPMincho:wght@400;700&display=swap
radii2
none
0px
full
9999px
shadows2
overlay
0 1px 0 rgba(27,24,21,.06), 0 18px 36px -12px rgba(27,24,21,.16)
note
No shadow anywhere except the one open overlay (a dialog or menu lifted off the paper). Panels, rows and cards carry no shadow at all — structure is bare paper, space and the trailing rule.
spacing2
base
8px
scale
4px, 8px, 16px, 24px, 40px, 64px, 96px, 128px
surfaces5
treatment
bare paper
material
The scroll is the only material object: a sumi ink-wash painting on gasenshi paper, brush strokes and graded washes, photographed flat under one soft top-left light. Everything else is the same paper the painting is on.
card style
No cards. Content sits straight on the paper, grouped by space and a Yuji Boku title with its trailing hairline rule. A --surface tint of paper appears only as a form-control well or the one open overlay (a dialog or menu), so a view has at most one filled surface.
table
Rows and lists sit on the page paper itself, parted by a single hairline rule per row, never by a filled row background.
rail
A vertical column of upright glyphs (writing-mode: vertical-rl) names the region in the margin, like a mounter's paper label. It lies down to a horizontal band on mobile.
borders3
default width
0
style
none
character
No frame around anything. The only line in the language is the trailing hairline rule that runs past a heading, and the single hairline that parts one list row from the next. Focus is a 2px ink outline at 2px offset.
motion5
duration
220ms
easing
cubic-bezier(.22,1,.36,1)
seal press
A hovered or focused seal spreads a soft vermilion bleed 3px past its own edge over 260ms and settles; the glyph itself never moves. It is the one physical verb: the seal presses and the ink spreads.
button press
The ink block lifts 1px on hover and presses back down 1px past rest on active, 160ms, no bounce.
philosophy
Motion is deliberate, never springy: a brush stroke does not bounce. The settled state is the default and renders with no JavaScript; an inline script adds .anim to <html> to gate scroll reveals, and prefers-reduced-motion skips all of it.
controls3
height
52px
radius
0px
wells
--bg inside a --surface well, on the --bg page
Rules

composition

  • Give every view one object moment: the painting whole and low on one side of the paper, or a different real detail of the workshop (the seal and ink pad, a wash close-up) further down the page — never the same whole painting twice.
  • Stand the painting on bare paper with air on every side; never frame it, never scrim it, never put text over the inked part.
  • Order a page like a mounter's bench: the object and the rail that names it, then the headline, copy and one ink action on the paper beside it, then the ledger.
  • Separate by space and the trailing rule, never by boxes: lists and forms sit straight on the paper; a filled --surface appears only as a control well or an open overlay.
  • Spend the vermilion seal once per view — the one finished thing — and leave every other status as a quiet word.

hierarchy

  • The brush headline and the rail's bold column word are the only large things; the mid-tier (ledes, card titles, labels) stays at 17 to 21px.
  • Yuji Boku 400 for the headline (40 to 64px), section titles (28 to 40px), the rail's column word and the wordmark (21 to 28px).
  • BIZ UDPMincho 400 at 17px for copy, nav and list rows; 15px for secondary lines and the rail's caption; 13px for the smallest meta.
  • Status is a plain word at 15px, dimmed to --muted, except the one finished item, which gets the seal instead of a word.

density

Low-to-medium, mounter's-bench density: one object and a short headline per view, 96 to 128px between sections on desktop and 64 to 88px on phones, 52px controls, list rows parted by a single hairline with 24 to 28px of padding, prose held under about 46 characters beside the object.

signature patterns

  • The painting: a sumi-e ink-wash photograph (assets/hero.jpg on the landing) standing low and to one side of a full-bleed paper ground, with large bare paper around it for the headline and rail; inside pages use a different real object from the same workshop (assets/seal-stone.jpg) rather than the painting again.
  • The seal: an inline SVG rotated square (transform: rotate(-2deg)) in --accent with a --on-accent glyph masked through it and a roughened ink edge (SVG feTurbulence/feDisplacementMap); on hover or focus it spreads a soft vermilion bleed 3px past its own edge and settles.
  • The rail: writing-mode: vertical-rl, text-orientation: upright, a Yuji Boku bold column word plus a BIZ UDPMincho caption at wide tracking, lying down to a horizontal band with the caption first on mobile.
  • The trailing rule: a 1px --border hairline that starts right after a heading's last glyph and runs to the section edge.
  • The ledger: BIZ UDPMincho rows straight on the paper, parted by one hairline each, the finished row carrying the seal and every other row a plain --muted status word.
  • The ink button: a square block of --text with --bg-coloured label, 52px tall, no radius, lifting 1px on hover and pressing 1px past rest on active — never vermilion, never a pill.
Layout

grid

type
object-and-rail editorial page
max width
1180px content (1220px on the embodiment), 1320 to 1360px from 1800px wide
gutter
24px desktop, 16px phone
column behavior
Sections run a narrow rail column (auto width) beside a fluid content column on minmax(0,1fr); card grids run 2 or 3 up on minmax(0,1fr) tracks. Every grid child keeps min-width:0.

whitespace

section gap
96 to 128px desktop, 64 to 88px phone
row gap
no cards; rows part by a single hairline with 22 to 28px padding; 40 to 64px between groups
content padding
content sits on the paper aligned to the grid edge; the one overlay pads 28 to 32px
approach
Bare paper is empty by design: the painting and every group need air, and each view carries one focal point.

density

default
comfortable
comfortable
button height 52pxinput height 52pxrow height 56 to 64px list rows with a single hairline between

responsive

Phones (390px) stack to one column, the rail lies down to a horizontal band, non-essential nav links and table columns hide, and the painting takes the full width with the headline below it. Tablets (768 to 1024px) keep two-column groupings with the rail beside the content. Ultra-wide caps and centres the content; only the landing hero spans the full width.

breakpoints

mobile
390px
phone max
640px
tablet
768 to 1024px
desktop
1280px
wide
1440px
ultrawide
1800px and 2560px
Guidance

Do

  • Put the painting whole, low and to one side of the paper, with the rail and headline in the open paper beside it.
  • Spend the vermilion seal on one thing per view — the one finished, ready, confirmed item.
  • Write in the workshop's own words: mino paper, the karibari board, gasenshi, a paulownia box, weeks of drying, a mounter's name.
  • Part rows and groups with the single trailing hairline and space, never a filled background.
  • Style every control explicitly: flat 52px wells with no radius, a square ink button, a 2px ink focus ring.
  • Show a different real object or moment lower on the page than the hero used.

Avoid

  • Don't frame containers in a charcoal border or an inset inner frame.
  • Don't colour the primary button vermilion; the seal is the only vermilion thing.
  • Don't add a second accent hue beyond the seal, indigo and matcha.
  • Don't fill every list row with a background tint or stack panels.
  • Don't show the whole painting twice, or pair the ink button with a second loud action.
  • Don't put emoji or symbol glyphs on buttons or in copy.
Imagery

pairs with

sumi-ink-wash

summary

Sumi-e ink-wash brushwork of the workshop's own subjects: decisive loaded-brush strokes and graded washes of one dark sumi pigment on bare warm gasenshi paper, with large untouched paper carrying the composition as negative space, and studio product photographs of the workshop's own tools (a stone seal, a lacquered vermilion ink pad) under one soft top-left light on the same paper. One object, one light, generous emptiness.

subjects

  • a heron standing in still water
  • misted pine ridges, a pair
  • a cast-iron kettle study
  • a stone hanko seal beside a lacquered vermilion ink pad
  • a scroll half-mounted on the karibari drying board
  • a roll of mino lining paper

usage

One full-bleed hero per landing: an ink-wash painting (this season's subject) standing low and to one side of the frame, with large bare paper across the rest for the rail, headline, copy and one action. No baked-in text, no seal baked into the image — the seal is drawn live in HTML/SVG so it recolours on a palette swap. Inside pages use a different real object from the same workshop (the stone seal and ink pad, photographed on the same paper) rather than the painting again. No people's hands, no bloom, no lens flare.

Katagami spec file
# Sumi Rail

## Philosophy

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper. The painting is the interface — brush strokes and graded washes on bare paper, photographed under one soft top-left light. Around it sits a vertical reading rail that names each region like a mounter's paper label, and one vermilion seal, pressed at a slight tilt, that marks the single thing that is finished. Everything else is the paper the painting is on: small quiet type, one hairline rule trailing past every heading, no frames, no cards, no second colour.

### Values

- One object is the interface: the ink-wash painting, rendered as a real material thing, the only image on a view and never repeated whole.
- The seal is spent once. It marks the one confirmed, finished, ready thing — never a decoration, never multiplied into a wall of badges.
- The rail is architecture, not a menu: navigation and section names read as a mounter's upright paper label in the margin.
- Ink and paper, one accent. Vermilion belongs to the seal alone; the primary action is ink on paper, not colour.
- Faces by job: Yuji Boku for the brush headline, the brand mark and section titles; BIZ UDPMincho for everything read at length.
- Ma — intentional emptiness — is a structural material: at least one large quiet zone per major view, so density never goes uniform.

### Anti-Values

- A charcoal frame or inset border around every panel.
- Status flooded into bright chips or a wall of coloured dots.
- Vermilion spent on a button, a link, or anything that is not the one finished thing.
- Soft drop shadows, glossy gradients, or bounce/overshoot motion.
- Centred, symmetrical layouts that erase the measured asymmetry of the rail.
- Showing the whole painting twice on one page, or pairing the ink button with a second loud action.

### Visual Character

- The painting stands once per page, low and to one side with bare paper on every other side: a heron in still water on the landing hero, a different moment (the mounter's own seal and ink pad, or a close wash detail) further down the page.
- One vermilion seal (--accent, #B23C27), a rotated square with a paper-coloured glyph cut into it, appears once per view at most — pressed beside the rail on the hero, stamped once in a list of otherwise-quiet status words, or held at the close.
- The vertical rail (Yuji Boku bold column word plus a BIZ UDPMincho caption, writing-mode vertical-rl) sits in the margin of every major section, naming it the way a mounter labels a roll of paper.
- A hairline rule (var(--border), 1px) trails past every section heading; it is the only line in the language besides the single rule that parts one list row from the next.
- The ink button is a square block of --text on --bg-coloured type, never the vermilion accent and never a pill: it lifts 1px on hover and presses back on click, like a stamp coming down.

### Lineage

> Generation 3 of Sumi Rail, revised in place from the round-3 descendant of the approved Inspora-method specimen (2026-09-29). Kept: the name, the warm paper ground, the vertical rail, the single vermilion seal, Ma as structural emptiness, and the pairing with Sumi (sumi-ink-wash). Changed: the abstract potter's-kiln scene becomes a scroll-mounting workshop built around one real ink-wash painting; the CTA moves from a vermilion pill to a square ink block so vermilion belongs to the seal alone; IBM Plex Mono is dropped for a two-family set (Yuji Boku, BIZ UDPMincho); panel shadows and the panel fill under list rows are dropped — rows sit straight on the paper, parted by a hairline; status marks that were coloured squares for every row become plain quiet words, with the seal reserved for the one finished thing.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#F1EDE1` |
| surface | `#E8E2D2` |
| text | `#1B1815` |
| muted | `#6B6259` |
| border | `#D9D0BE` |
| accent | `#B23C27` |
| accent_ink | `#8E2E1D` |
| on_accent | `#FBF7EC` |
| indigo | `#3A4B63` |
| matcha | `#4F6142` |
| success | `#4F6142` |
| warning | `#8C5D18` |
| error | `#8E2E1D` |
| info | `#3A4B63` |

### Derived

- **Note**: Every colour past the eleven role vars is one of them by another name: success is matcha, info is indigo, error is accent_ink. Hover and secondary-copy shades are color-mix(in srgb, ...) blends of text/muted/surface, never a new literal hex. A palette swap carries the seal, the buttons and every status word with it.

### Typography

- **Heading Font**: Yuji Boku
- **Body Font**: BIZ UDPMincho
- **Heading Weight**: 400
- **Body Weight**: 400
- **Button Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.01em on Yuji Boku display; 0 on body
- **Line Height**: 1.68
- **Base Size**: 17px
- **Scale**: ["13px","15px","17px","21px","28px","40px","64px"]
- **Roles**: {"display":"Yuji Boku 400: the brush headline, the brand mark, the rail's bold column word, section titles, the seal's glyph","body":"BIZ UDPMincho 400 at 17px for copy, nav, list rows and the rail's small caption; 15px for secondary support lines; 13px for the smallest meta","mono":"none — dropped IBM Plex Mono from the prior generation; BIZ UDPMincho sets dates and counts too, so the page carries only two families"}
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Yuji+Boku&family=BIZ+UDPMincho:wght@400;700&display=swap

### Radii

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

### Shadows

- **Overlay**: 0 1px 0 rgba(27,24,21,.06), 0 18px 36px -12px rgba(27,24,21,.16)
- **Note**: No shadow anywhere except the one open overlay (a dialog or menu lifted off the paper). Panels, rows and cards carry no shadow at all — structure is bare paper, space and the trailing rule.

### Spacing

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

### Surfaces

- **Treatment**: bare paper
- **Material**: The scroll is the only material object: a sumi ink-wash painting on gasenshi paper, brush strokes and graded washes, photographed flat under one soft top-left light. Everything else is the same paper the painting is on.
- **Card Style**: No cards. Content sits straight on the paper, grouped by space and a Yuji Boku title with its trailing hairline rule. A --surface tint of paper appears only as a form-control well or the one open overlay (a dialog or menu), so a view has at most one filled surface.
- **Table**: Rows and lists sit on the page paper itself, parted by a single hairline rule per row, never by a filled row background.
- **Rail**: A vertical column of upright glyphs (writing-mode: vertical-rl) names the region in the margin, like a mounter's paper label. It lies down to a horizontal band on mobile.

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No frame around anything. The only line in the language is the trailing hairline rule that runs past a heading, and the single hairline that parts one list row from the next. Focus is a 2px ink outline at 2px offset.

### Motion

- **Duration**: 220ms
- **Easing**: cubic-bezier(.22,1,.36,1)
- **Seal Press**: A hovered or focused seal spreads a soft vermilion bleed 3px past its own edge over 260ms and settles; the glyph itself never moves. It is the one physical verb: the seal presses and the ink spreads.
- **Button Press**: The ink block lifts 1px on hover and presses back down 1px past rest on active, 160ms, no bounce.
- **Philosophy**: Motion is deliberate, never springy: a brush stroke does not bounce. The settled state is the default and renders with no JavaScript; an inline script adds .anim to <html> to gate scroll reveals, and prefers-reduced-motion skips all of it.

### Controls

- **Height**: 52px
- **Radius**: 0px
- **Wells**: --bg inside a --surface well, on the --bg page

## Rules

### Composition

- Give every view one object moment: the painting whole and low on one side of the paper, or a different real detail of the workshop (the seal and ink pad, a wash close-up) further down the page — never the same whole painting twice.
- Stand the painting on bare paper with air on every side; never frame it, never scrim it, never put text over the inked part.
- Order a page like a mounter's bench: the object and the rail that names it, then the headline, copy and one ink action on the paper beside it, then the ledger.
- Separate by space and the trailing rule, never by boxes: lists and forms sit straight on the paper; a filled --surface appears only as a control well or an open overlay.
- Spend the vermilion seal once per view — the one finished thing — and leave every other status as a quiet word.

### Hierarchy

- The brush headline and the rail's bold column word are the only large things; the mid-tier (ledes, card titles, labels) stays at 17 to 21px.
- Yuji Boku 400 for the headline (40 to 64px), section titles (28 to 40px), the rail's column word and the wordmark (21 to 28px).
- BIZ UDPMincho 400 at 17px for copy, nav and list rows; 15px for secondary lines and the rail's caption; 13px for the smallest meta.
- Status is a plain word at 15px, dimmed to --muted, except the one finished item, which gets the seal instead of a word.

### Density

Low-to-medium, mounter's-bench density: one object and a short headline per view, 96 to 128px between sections on desktop and 64 to 88px on phones, 52px controls, list rows parted by a single hairline with 24 to 28px of padding, prose held under about 46 characters beside the object.

### Signature Patterns

- The painting: a sumi-e ink-wash photograph (assets/hero.jpg on the landing) standing low and to one side of a full-bleed paper ground, with large bare paper around it for the headline and rail; inside pages use a different real object from the same workshop (assets/seal-stone.jpg) rather than the painting again.
- The seal: an inline SVG rotated square (transform: rotate(-2deg)) in --accent with a --on-accent glyph masked through it and a roughened ink edge (SVG feTurbulence/feDisplacementMap); on hover or focus it spreads a soft vermilion bleed 3px past its own edge and settles.
- The rail: writing-mode: vertical-rl, text-orientation: upright, a Yuji Boku bold column word plus a BIZ UDPMincho caption at wide tracking, lying down to a horizontal band with the caption first on mobile.
- The trailing rule: a 1px --border hairline that starts right after a heading's last glyph and runs to the section edge.
- The ledger: BIZ UDPMincho rows straight on the paper, parted by one hairline each, the finished row carrying the seal and every other row a plain --muted status word.
- The ink button: a square block of --text with --bg-coloured label, 52px tall, no radius, lifting 1px on hover and pressing 1px past rest on active — never vermilion, never a pill.

## Layout

### Grid

- **Type**: object-and-rail editorial page
- **Max Width**: 1180px content (1220px on the embodiment), 1320 to 1360px from 1800px wide
- **Gutter**: 24px desktop, 16px phone
- **Column Behavior**: Sections run a narrow rail column (auto width) beside a fluid content column on minmax(0,1fr); card grids run 2 or 3 up on minmax(0,1fr) tracks. Every grid child keeps min-width:0.

### Whitespace

- **Section Gap**: 96 to 128px desktop, 64 to 88px phone
- **Row Gap**: no cards; rows part by a single hairline with 22 to 28px padding; 40 to 64px between groups
- **Content Padding**: content sits on the paper aligned to the grid edge; the one overlay pads 28 to 32px
- **Approach**: Bare paper is empty by design: the painting and every group need air, and each view carries one focal point.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"52px","input_height":"52px","row_height":"56 to 64px list rows with a single hairline between"}

### Responsive

Phones (390px) stack to one column, the rail lies down to a horizontal band, non-essential nav links and table columns hide, and the painting takes the full width with the headline below it. Tablets (768 to 1024px) keep two-column groupings with the rail beside the content. Ultra-wide caps and centres the content; only the landing hero spans the full width.

### Breakpoints

- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 768 to 1024px
- **Desktop**: 1280px
- **Wide**: 1440px
- **Ultrawide**: 1800px and 2560px

## Guidance

### Do

- Put the painting whole, low and to one side of the paper, with the rail and headline in the open paper beside it.
- Spend the vermilion seal on one thing per view — the one finished, ready, confirmed item.
- Write in the workshop's own words: mino paper, the karibari board, gasenshi, a paulownia box, weeks of drying, a mounter's name.
- Part rows and groups with the single trailing hairline and space, never a filled background.
- Style every control explicitly: flat 52px wells with no radius, a square ink button, a 2px ink focus ring.
- Show a different real object or moment lower on the page than the hero used.

### Don't

- Don't frame containers in a charcoal border or an inset inner frame.
- Don't colour the primary button vermilion; the seal is the only vermilion thing.
- Don't add a second accent hue beyond the seal, indigo and matcha.
- Don't fill every list row with a background tint or stack panels.
- Don't show the whole painting twice, or pair the ink button with a second loud action.
- Don't put emoji or symbol glyphs on buttons or in copy.

### Accessibility

Ink #1B1815 on paper #F1EDE1 is 15.1:1; muted #6B6259 is 5.1:1; the accent-ink link colour #8E2E1D is 7.0:1; the seal's paper glyph #FBF7EC on vermilion #B23C27 is 5.5:1; indigo #3A4B63 is 7.6:1, matcha #4F6142 is 5.75:1 and warning #8C5D18 is 4.9:1, all on #F1EDE1. Ink-on-paper buttons (#F1EDE1 on #1B1815) read at 15.1:1. Focus is a visible 2px ink outline at 2px offset on every control. The seal carries an aria-label naming its status; decorative seals are aria-hidden. prefers-reduced-motion skips the reveal, the seal bleed and the button lift; state changes still happen.

## Imagery Direction

### Pairs With

sumi-ink-wash

### Summary

Sumi-e ink-wash brushwork of the workshop's own subjects: decisive loaded-brush strokes and graded washes of one dark sumi pigment on bare warm gasenshi paper, with large untouched paper carrying the composition as negative space, and studio product photographs of the workshop's own tools (a stone seal, a lacquered vermilion ink pad) under one soft top-left light on the same paper. One object, one light, generous emptiness.

### Subjects

- a heron standing in still water
- misted pine ridges, a pair
- a cast-iron kettle study
- a stone hanko seal beside a lacquered vermilion ink pad
- a scroll half-mounted on the karibari drying board
- a roll of mino lining paper

### Usage

One full-bleed hero per landing: an ink-wash painting (this season's subject) standing low and to one side of the frame, with large bare paper across the rest for the rail, headline, copy and one action. No baked-in text, no seal baked into the image — the seal is drawn live in HTML/SVG so it recolours on a palette swap. Inside pages use a different real object from the same workshop (the stone seal and ink pad, photographed on the same paper) rather than the painting again. No people's hands, no bloom, no lens flare.
DESIGN.md file
---
version: "alpha"
name: "Sumi Rail"
description: "Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper. The painting is the interface — brush strokes and graded washes on bare paper, photographed under one soft top-l..."
colors:
  bg: "#F1EDE1"
  surface: "#E8E2D2"
  text: "#1B1815"
  muted: "#6B6259"
  border: "#D9D0BE"
  accent: "#B23C27"
  accent_ink: "#8E2E1D"
  on_accent: "#FBF7EC"
  indigo: "#3A4B63"
  matcha: "#4F6142"
  success: "#4F6142"
  warning: "#8C5D18"
  error: "#8E2E1D"
  info: "#3A4B63"
typography:
  headline-lg:
    fontFamily: "Yuji Boku"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Yuji Boku"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "BIZ UDPMincho"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.68
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "BIZ UDPMincho"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "16px"
  lg: "24px"
  xl: "40px"
  2xl: "64px"
  3xl: "96px"
  4xl: "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-accent_ink:
    backgroundColor: "{colors.accent_ink}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-indigo:
    backgroundColor: "{colors.indigo}"
  color-reference-matcha:
    backgroundColor: "{colors.matcha}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "{colors.on_accent}"
    typography: "{typography.label-md}"
    rounded: "{rounded.none}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.none}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.none}"
    height: "44px"
---

# Sumi Rail

## Overview

Sumi Rail is an ink-and-paper operating language built around one real object: a sumi-e ink-wash painting on gasenshi paper. The painting is the interface — brush strokes and graded washes on bare paper, photographed under one soft top-left light. Around it sits a vertical reading rail that names each region like a mounter's paper label, and one vermilion seal, pressed at a slight tilt, that marks the single thing that is finished. Everything else is the paper the painting is on: small quiet type, one hairline rule trailing past every heading, no frames, no cards, no second colour.

### Values

- One object is the interface: the ink-wash painting, rendered as a real material thing, the only image on a view and never repeated whole.
- The seal is spent once. It marks the one confirmed, finished, ready thing — never a decoration, never multiplied into a wall of badges.
- The rail is architecture, not a menu: navigation and section names read as a mounter's upright paper label in the margin.
- Ink and paper, one accent. Vermilion belongs to the seal alone; the primary action is ink on paper, not colour.
- Faces by job: Yuji Boku for the brush headline, the brand mark and section titles; BIZ UDPMincho for everything read at length.
- Ma — intentional emptiness — is a structural material: at least one large quiet zone per major view, so density never goes uniform.

### Anti-Values

- A charcoal frame or inset border around every panel.
- Status flooded into bright chips or a wall of coloured dots.
- Vermilion spent on a button, a link, or anything that is not the one finished thing.
- Soft drop shadows, glossy gradients, or bounce/overshoot motion.
- Centred, symmetrical layouts that erase the measured asymmetry of the rail.
- Showing the whole painting twice on one page, or pairing the ink button with a second loud action.

### Visual Character

- The painting stands once per page, low and to one side with bare paper on every other side: a heron in still water on the landing hero, a different moment (the mounter's own seal and ink pad, or a close wash detail) further down the page.
- One vermilion seal (--accent, #B23C27), a rotated square with a paper-coloured glyph cut into it, appears once per view at most — pressed beside the rail on the hero, stamped once in a list of otherwise-quiet status words, or held at the close.
- The vertical rail (Yuji Boku bold column word plus a BIZ UDPMincho caption, writing-mode vertical-rl) sits in the margin of every major section, naming it the way a mounter labels a roll of paper.
- A hairline rule (var(--border), 1px) trails past every section heading; it is the only line in the language besides the single rule that parts one list row from the next.
- The ink button is a square block of --text on --bg-coloured type, never the vermilion accent and never a pill: it lifts 1px on hover and presses back on click, like a stamp coming down.

### Lineage

> Generation 3 of Sumi Rail, revised in place from the round-3 descendant of the approved Inspora-method specimen (2026-09-29). Kept: the name, the warm paper ground, the vertical rail, the single vermilion seal, Ma as structural emptiness, and the pairing with Sumi (sumi-ink-wash). Changed: the abstract potter's-kiln scene becomes a scroll-mounting workshop built around one real ink-wash painting; the CTA moves from a vermilion pill to a square ink block so vermilion belongs to the seal alone; IBM Plex Mono is dropped for a two-family set (Yuji Boku, BIZ UDPMincho); panel shadows and the panel fill under list rows are dropped — rows sit straight on the paper, parted by a hairline; status marks that were coloured squares for every row become plain quiet words, with the seal reserved for the one finished thing.

## 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 | `#F1EDE1` |
| surface | `#E8E2D2` |
| text | `#1B1815` |
| muted | `#6B6259` |
| border | `#D9D0BE` |
| accent | `#B23C27` |
| accent_ink | `#8E2E1D` |
| on_accent | `#FBF7EC` |
| indigo | `#3A4B63` |
| matcha | `#4F6142` |
| success | `#4F6142` |
| warning | `#8C5D18` |
| error | `#8E2E1D` |
| info | `#3A4B63` |

## Typography

Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Yuji+Boku&family=BIZ+UDPMincho:wght@400;700&display=swap

- **Headline-Lg**: Yuji Boku, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Yuji Boku, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: BIZ UDPMincho, 17px, weight 400, line-height 1.68.
- **Label-Md**: BIZ UDPMincho, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `16px`
- **Lg**: `24px`
- **Xl**: `40px`
- **2xl**: `64px`
- **3xl**: `96px`
- **4xl**: `128px`

### Grid

- **Type**: object-and-rail editorial page
- **Max Width**: 1180px content (1220px on the embodiment), 1320 to 1360px from 1800px wide
- **Gutter**: 24px desktop, 16px phone
- **Column Behavior**: Sections run a narrow rail column (auto width) beside a fluid content column on minmax(0,1fr); card grids run 2 or 3 up on minmax(0,1fr) tracks. Every grid child keeps min-width:0.

### Whitespace

- **Section Gap**: 96 to 128px desktop, 64 to 88px phone
- **Row Gap**: no cards; rows part by a single hairline with 22 to 28px padding; 40 to 64px between groups
- **Content Padding**: content sits on the paper aligned to the grid edge; the one overlay pads 28 to 32px
- **Approach**: Bare paper is empty by design: the painting and every group need air, and each view carries one focal point.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"52px","input_height":"52px","row_height":"56 to 64px list rows with a single hairline between"}

### Responsive

Phones (390px) stack to one column, the rail lies down to a horizontal band, non-essential nav links and table columns hide, and the painting takes the full width with the headline below it. Tablets (768 to 1024px) keep two-column groupings with the rail beside the content. Ultra-wide caps and centres the content; only the landing hero spans the full width.

### Breakpoints

- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 768 to 1024px
- **Desktop**: 1280px
- **Wide**: 1440px
- **Ultrawide**: 1800px and 2560px

## Elevation & Depth

### Shadows

- **Overlay**: 0 1px 0 rgba(27,24,21,.06), 0 18px 36px -12px rgba(27,24,21,.16)
- **Note**: No shadow anywhere except the one open overlay (a dialog or menu lifted off the paper). Panels, rows and cards carry no shadow at all — structure is bare paper, space and the trailing rule.

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: bare paper
- **Material**: The scroll is the only material object: a sumi ink-wash painting on gasenshi paper, brush strokes and graded washes, photographed flat under one soft top-left light. Everything else is the same paper the painting is on.
- **Card Style**: No cards. Content sits straight on the paper, grouped by space and a Yuji Boku title with its trailing hairline rule. A --surface tint of paper appears only as a form-control well or the one open overlay (a dialog or menu), so a view has at most one filled surface.
- **Table**: Rows and lists sit on the page paper itself, parted by a single hairline rule per row, never by a filled row background.
- **Rail**: A vertical column of upright glyphs (writing-mode: vertical-rl) names the region in the margin, like a mounter's paper label. It lies down to a horizontal band on mobile.

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No frame around anything. The only line in the language is the trailing hairline rule that runs past a heading, and the single hairline that parts one list row from the next. Focus is a 2px ink outline at 2px offset.

## Components

### Composition

- Give every view one object moment: the painting whole and low on one side of the paper, or a different real detail of the workshop (the seal and ink pad, a wash close-up) further down the page — never the same whole painting twice.
- Stand the painting on bare paper with air on every side; never frame it, never scrim it, never put text over the inked part.
- Order a page like a mounter's bench: the object and the rail that names it, then the headline, copy and one ink action on the paper beside it, then the ledger.
- Separate by space and the trailing rule, never by boxes: lists and forms sit straight on the paper; a filled --surface appears only as a control well or an open overlay.
- Spend the vermilion seal once per view — the one finished thing — and leave every other status as a quiet word.

### Hierarchy

- The brush headline and the rail's bold column word are the only large things; the mid-tier (ledes, card titles, labels) stays at 17 to 21px.
- Yuji Boku 400 for the headline (40 to 64px), section titles (28 to 40px), the rail's column word and the wordmark (21 to 28px).
- BIZ UDPMincho 400 at 17px for copy, nav and list rows; 15px for secondary lines and the rail's caption; 13px for the smallest meta.
- Status is a plain word at 15px, dimmed to --muted, except the one finished item, which gets the seal instead of a word.

### Density

Low-to-medium, mounter's-bench density: one object and a short headline per view, 96 to 128px between sections on desktop and 64 to 88px on phones, 52px controls, list rows parted by a single hairline with 24 to 28px of padding, prose held under about 46 characters beside the object.

### Signature Patterns

- The painting: a sumi-e ink-wash photograph (assets/hero.jpg on the landing) standing low and to one side of a full-bleed paper ground, with large bare paper around it for the headline and rail; inside pages use a different real object from the same workshop (assets/seal-stone.jpg) rather than the painting again.
- The seal: an inline SVG rotated square (transform: rotate(-2deg)) in --accent with a --on-accent glyph masked through it and a roughened ink edge (SVG feTurbulence/feDisplacementMap); on hover or focus it spreads a soft vermilion bleed 3px past its own edge and settles.
- The rail: writing-mode: vertical-rl, text-orientation: upright, a Yuji Boku bold column word plus a BIZ UDPMincho caption at wide tracking, lying down to a horizontal band with the caption first on mobile.
- The trailing rule: a 1px --border hairline that starts right after a heading's last glyph and runs to the section edge.
- The ledger: BIZ UDPMincho rows straight on the paper, parted by one hairline each, the finished row carrying the seal and every other row a plain --muted status word.
- The ink button: a square block of --text with --bg-coloured label, 52px tall, no radius, lifting 1px on hover and pressing 1px past rest on active — never vermilion, never a pill.

## 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-01a0ecb8-a67e-70e0-8f8c-abbbf058e18c/DESIGN.with-shadcn.md`.

Machine-readable companions for automation: `/language/en-01a0ecb8-a67e-70e0-8f8c-abbbf058e18c/shadcn.json` (registry theme), `/language/en-01a0ecb8-a67e-70e0-8f8c-abbbf058e18c/shadcn-components.md` (component recipes) and `/language/en-01a0ecb8-a67e-70e0-8f8c-abbbf058e18c/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 Put the painting whole, low and to one side of the paper, with the rail and headline in the open paper beside it.
- Do Spend the vermilion seal on one thing per view — the one finished, ready, confirmed item.
- Do Write in the workshop's own words: mino paper, the karibari board, gasenshi, a paulownia box, weeks of drying, a mounter's name.
- Do Part rows and groups with the single trailing hairline and space, never a filled background.
- Do Style every control explicitly: flat 52px wells with no radius, a square ink button, a 2px ink focus ring.
- Do Show a different real object or moment lower on the page than the hero used.
- Don't Don't frame containers in a charcoal border or an inset inner frame.
- Don't Don't colour the primary button vermilion; the seal is the only vermilion thing.
- Don't Don't add a second accent hue beyond the seal, indigo and matcha.
- Don't Don't fill every list row with a background tint or stack panels.
- Don't Don't show the whole painting twice, or pair the ink button with a second loud action.
- Don't Don't put emoji or symbol glyphs on buttons or in copy.

### Accessibility

Ink #1B1815 on paper #F1EDE1 is 15.1:1; muted #6B6259 is 5.1:1; the accent-ink link colour #8E2E1D is 7.0:1; the seal's paper glyph #FBF7EC on vermilion #B23C27 is 5.5:1; indigo #3A4B63 is 7.6:1, matcha #4F6142 is 5.75:1 and warning #8C5D18 is 4.9:1, all on #F1EDE1. Ink-on-paper buttons (#F1EDE1 on #1B1815) read at 15.1:1. Focus is a visible 2px ink outline at 2px offset on every control. The seal carries an aria-label naming its status; decorative seals are aria-hidden. prefers-reduced-motion skips the reveal, the seal bleed and the button lift; state changes still happen.

## Imagery Direction

### Pairs With

sumi-ink-wash

### Summary

Sumi-e ink-wash brushwork of the workshop's own subjects: decisive loaded-brush strokes and graded washes of one dark sumi pigment on bare warm gasenshi paper, with large untouched paper carrying the composition as negative space, and studio product photographs of the workshop's own tools (a stone seal, a lacquered vermilion ink pad) under one soft top-left light on the same paper. One object, one light, generous emptiness.

### Subjects

- a heron standing in still water
- misted pine ridges, a pair
- a cast-iron kettle study
- a stone hanko seal beside a lacquered vermilion ink pad
- a scroll half-mounted on the karibari drying board
- a roll of mino lining paper

### Usage

One full-bleed hero per landing: an ink-wash painting (this season's subject) standing low and to one side of the frame, with large bare paper across the rest for the rail, headline, copy and one action. No baked-in text, no seal baked into the image — the seal is drawn live in HTML/SVG so it recolours on a palette swap. Inside pages use a different real object from the same workshop (the stone seal and ink pad, photographed on the same paper) rather than the painting again. No people's hands, no bloom, no lens flare.
shadcn/ui theme file
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "sumi-rail",
  "type": "registry:theme",
  "title": "Sumi Rail shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#F1EDE1",
      "foreground": "#1B1815",
      "card": "#E8E2D2",
      "card-foreground": "#1B1815",
      "popover": "#E8E2D2",
      "popover-foreground": "#1B1815",
      "primary": "#1B1815",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#6B6259",
      "muted-foreground": "#1B1815",
      "accent": "#B23C27",
      "accent-foreground": "#ffffff",
      "destructive": "#8E2E1D",
      "border": "#D9D0BE",
      "input": "#D9D0BE",
      "ring": "#B23C27",
      "chart-1": "#1B1815",
      "chart-2": "#f4f4f5",
      "chart-3": "#B23C27",
      "chart-4": "#4F6142",
      "chart-5": "#8C5D18",
      "sidebar": "#E8E2D2",
      "sidebar-foreground": "#1B1815",
      "sidebar-primary": "#1B1815",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#3A4B63",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#D9D0BE",
      "sidebar-ring": "#B23C27",
      "radius": "0.625rem"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#1B1815",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#B23C27",
      "accent-foreground": "#ffffff",
      "destructive": "#8E2E1D",
      "border": "#303642",
      "input": "#303642",
      "ring": "#B23C27",
      "chart-1": "#1B1815",
      "chart-2": "#f4f4f5",
      "chart-3": "#B23C27",
      "chart-4": "#4F6142",
      "chart-5": "#8C5D18",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#1B1815",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#B23C27",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#B23C27",
      "radius": "0.625rem"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-01a0ecb8-a67e-70e0-8f8c-abbbf058e18c",
    "slug": "sumi-rail",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "accent_ink",
        "bg",
        "border",
        "error",
        "indigo",
        "info",
        "matcha",
        "muted",
        "on_accent",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "derived": [
        "note"
      ],
      "typography": [
        "base_size",
        "body_font",
        "body_weight",
        "button_weight",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "roles",
        "scale"
      ],
      "radii": [
        "full",
        "none"
      ],
      "shadows": [
        "note",
        "overlay"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "card_style",
        "material",
        "rail",
        "table",
        "treatment"
      ],
      "borders": [
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "button_press",
        "duration",
        "easing",
        "philosophy",
        "seal_press"
      ],
      "controls": [
        "height",
        "radius",
        "wells"
      ]
    }
  }
}
```

shadcn/ui kit

katagami ✦ Sumi Rail