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
Typography
Each face set in this language's own words.
Sumi Rail
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.
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
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"
]
}
}
}
```