Leerstelle
Leerstelle is German for the blank a text leaves for its reader to fill.
Its pictures are drawn in Marginalia.
Download DESIGN.md
Tokens, rules and the paired art style Marginalia.
Preview
Typography
Each face set in this language's own words.
Leerstelle
Leerstelle
Leerstelle is German for the blank a text leaves for its reader to fill.
Leerstelle is German for the blank a text leaves for its reader to fill.
Specification
Philosophy
summary
Leerstelle is German for the blank a text leaves for its reader to fill. The interface is one real thing on a cream table: a yellow school paperback of Kafka's Die Verwandlung folded back at page 41, where Part II goes quiet two thirds down the page, and the reader's teal pencil lying across it with an answer written into the blank. Around it everything is flat and precise: small Inria Sans, one big light Piazzolla line, page numbers in old-style figures, and teal only for the thing you can do next.
It values
- One object is the interface: the paperback and its pencil, rendered as real things with one light, and the only raised or lit thing in a view.
- The blank is content. Where the text goes quiet, the page stays empty or holds the reader's own four words; the interface never fills a gap just because it is there.
- The reader's hand is graphite. Marks, underlines, the drawn blank and link strokes share one pencil texture, so every trace reads as the same person.
- Depth is a verb. The pencil stands only while it writes and lies back down; everything else stays flat on the table.
- Two faces by job: Piazzolla, a book face, for what is read; Inria Sans for what is used.
- Reading conventions are content: page numbers, the kind of mark in words, times of day, the reading you are on.
It refuses
- Archival plates, corner ticks, registration crosses and coordinate labels as ornament.
- Decorative codes such as [gap] or x:041 in place of words.
- Boxes, cards and hairline rules around content.
- A glow, a gradient wash or a second accent.
- A handwriting font used for interface text.
- Percentages and progress dashboards where a page number will do.
visual character
- The paperback lies whole on the flat #F1EADC table once per page, with table on every side: yellow rolled spine on the left, the cream page with the last paragraph of Part II set live in Piazzolla, the underline under 'vor der schreienden Schwester', and 'the gap / is the point' in graphite in the blank.
- The teal pencil (#2E5C63 lacquer, cedar point, cream dipped end) lies at 52 degrees from the end of the note across the fore-edge, casting a two-layer warm shadow; later views use a smaller moment of it, lying at the end of a drawn blank in the reading log.
- Teal is spent on the one action per view, the italic word in a headline and the current reading; graphite is the reader's hand; yellow lives only in the photograph of the cover.
- Nothing is boxed: logs, schedules, forms and tables sit straight on the table, rows parted by space; the only filled rectangles are square --surface paper slips and one open overlay; only the pressed pill and round parts use 9999px.
- Type is small and quiet around one big light line: 17px Inria Sans, 14.5px times and captions, Piazzolla 300 at 40 to 64px with -0.02em tracking, italic titles at 21px.
lineage
A revision of Leerstelle, rebuilt the Inspora way from the approved elevated specimen. It keeps the name, the idea of the meaningful blank, the warm paper world, the teal ink and the handwritten margin note, and drops the android-diary scene, archival plates with corner ticks, registration crosses, coordinate gutters, monospace terminal logs, the pale-cyan glint and all three over-used faces (Newsreader, IBM Plex Sans, IBM Plex Mono).
Tokens
colors15
derived5
- copy
- color-mix(in srgb, var(--text) 36%, var(--muted))
- graphite
- color-mix(in srgb, var(--text) 76%, var(--surface))
- color-mix(in srgb, var(--text) 92%, var(--surface))
- shade
- color-mix(in srgb, var(--text) 85%, var(--warning))
- note
- Only the eleven role colours are literal. Copy, the reader's graphite, the page's print and the shadow tint are mixed from them in CSS, so a palette swap carries the hand, the page and the shadows with it.
typography12
- heading font
- Piazzolla
- body font
- Inria Sans
- heading weight
- 300
- body weight
- 400
- button weight
- 700
- heading transform
- none
- letter spacing
- -0.02em on Piazzolla display (-0.022em on the 64px line); 0 on Inria Sans
- line height
- 1.55
- base size
- 17px
- scale
- 14.5px, 17px, 21px, 28px, 40px, 64px
- roles
- display Piazzolla: 300 for the one big light line per view (64px) and section titles (40px); italic 400 for titles, notes and dates (21px); 500 for the wordmark; old-style figures for page numbers (21 to 28px).body Inria Sans 400 at 17px for copy, labels and control text; 14.5px with tabular figures for times, captions and page counts; 700 only on the pill you press.object print Inside the paperback, Piazzolla is the book's own print and scales with the object (2.27% of the book's width); it is part of the object, not the interface scale.hand The reader's pencil answer is drawn as SVG outlines (shaped from the Lateinische Ausgangsschrift of Playwrite DE LA), so no third typeface loads.
- google fonts url
- https://fonts.googleapis.com/css2?family=Piazzolla:ital,opsz,wght@0,8..30,300..500;1,8..30,300..500&family=Inria+Sans:ital,wght@0,400;0,700;1,400&display=swap
radii2
- none
- 0px
- full
- 9999px
shadows6
- contact
- drop-shadow(0.25cqi 0.36cqi 0.25cqi color-mix(in srgb, var(--shade) 40%, transparent)) on the pencil at rest
- ambient
- drop-shadow(1.25cqi 2.14cqi 1.8cqi color-mix(in srgb, var(--shade) 20%, transparent)) under it
- lifted
- 0.7cqi 1.25cqi 0.9cqi at 22% and 4.6cqi 7.1cqi 4.6cqi at 14% while the pencil stands
- overlay
- 1px 2px 3px at 20% plus 10px 22px 48px -18px at 40% of --shade on an open dialog or menu
- book
- baked into assets/book.webp as a transparent warm-brown shadow, so the book sits on any table
- note
- One key light from the top left. Every shadow falls to the lower right in two layers, tight contact and soft ambient, tinted warm brown from the table, never grey. Only the object and open overlays cast one.
spacing2
- base
- 8px
- scale
- 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px, 128px
surfaces5
- treatment
- one-object-on-a-flat-cream-table
- material
- The paperback is the only material object: lemon-yellow card with a rolled spine, cream book-wove paper with real Kafka set live on it, photographed overhead and cut out with a real transparent shadow. The teal lacquered pencil with a cedar point lies across it. Everything else is flat colour.
- card style
- No cards or panels. Content sits straight on the table, grouped by space and a Piazzolla title. The paper value --surface appears only as a control slip, a row hover or an open overlay, square at radius 0, so a view has at most one filled surface.
- table
- The page ground --bg is the reading table. On the landing the hero image is the empty cream paper table under one top-left light, with the live book lying on it.
- graphite
- The reader's marks (the answer in the blank, underlines, the drawn blank, link strokes, progress strokes) are graphite through an SVG filter: fractal grain that lets the paper through, a slight edge wobble and low-frequency pressure.
borders3
- default width
- 0
- style
- none
- character
- No borders, rules or outlines. Rows and groups part by space and by the value of their type; paper slips are the one tinted surface. Focus is a 2px ink ring. The only lines are the reader's graphite marks, which are content, not dividers.
motion7
- duration
- 240ms
- easing
- cubic-bezier(.3,1.4,.5,1) for landings; cubic-bezier(.2,.7,.2,1) to settle
- write
- 2.8s: the note fades, the pencil stands (scaleX .66, shadow out and soft), writes each line with its point on the front while the line is revealed left to right, then lies down on the spring
- draw
- 1.6s: in the log, the pencil goes back to the start of the blank and draws the graphite rule again
- underline
- 420ms: a graphite stroke draws under a link from the left
- reveal
- 900ms cubic-bezier(.2,.7,.2,1), 18px rise, staggered 100ms; progress strokes draw to their page
- philosophy
- Motion is something a pencil does. The settled state is the default and renders with no JavaScript; an inline script adds .anim to <html> to gate start states, and prefers-reduced-motion skips all of it.
controls3
- height
- 52px
- radius
- 0 on slips, 9999px on the pressed pill
- wells
- --surface slips straight on the --bg table
Rules
composition
- Give every view one focal thing: the paperback with its pencil on the table, or a smaller moment of it (the pencil lying at a drawn blank). Everything else in that view stays flat.
- Lay the book on the table with air on every side; never frame it, crop it or put a panel over it. Headline, copy and one action sit on the ground beside it.
- Order a page like a reader's notebook: the object and the line that stopped you, then the marks, then the close reading, then what comes next.
- Separate by space and value, never by boxes: logs, lists and forms sit straight on the table; a filled --surface appears only as a control slip or an open overlay.
- Show the whole book once per page; later views take other moments of it.
- Keep teal to one action per view, the italic word in a headline and the current reading.
hierarchy
- One big light line per view: Piazzolla 300 at 64px (40px on phones) with -0.022em tracking, one italic word in teal.
- Section titles in Piazzolla 300 at 40px; titles, notes and dates in Piazzolla italic 400 at 21px.
- Inria Sans 400 at 17px for copy and labels; 14.5px for times, captions and counts with tabular figures; 700 only on the pill.
- Page numbers in Piazzolla old-style figures, light, at 21 to 28px; the current one in ink, earlier ones quiet.
- Status is a small round dot and a word in a paper pill, never a coloured field.
density
Calm notebook density: one object and a short headline per view, 128 to 160px between sections on desktop and 96 to 112px on phones, 52px controls, list rows 44 to 56px parted by space, and prose held under about 32em.
signature patterns
- The paperback: a photographed yellow school paperback folded back at page 41 (assets/book.webp, with its own transparent shadow), whole and once per page, with the page text set live in Piazzolla and multiplied onto the paper.
- The reader's hand: 'the gap / is the point' drawn in graphite into the blank as SVG outlines through a pencil filter (grain, edge wobble, pressure).
- Write the blank: hovering or focusing the book (or the teal action) fades the answer, stands the pencil up (scaleX .66, shadow moving out), writes each line with its point on the front, and lays it down on a spring, 2.8s.
- The drawn blank: in the reading log, the current row ends in a graphite rule with the pencil lying at its end; hover or focus draws it again, 1.6s.
- Graphite strokes: underlines under quoted lines, links that draw a pencil stroke under the word, and progress strokes that draw to the page you reached.
- The one teal: a 9999px pill for the action, the italic word in a headline, the current reading.
Layout
grid
- type
- object-first reading page
- max width
- 1240px content, 1360px from 1800px wide
- gutter
- 40px desktop, 20px phone
- column behavior
- Below the object, headers run on minmax(0,5fr) minmax(0,6fr); logs run page, kind, words and time columns; the read-along row is minmax(0,6fr) minmax(0,5fr). Every track is minmax(0,1fr) or fixed, and every grid child min-width:0.
whitespace
- section gap
- 128 to 160px desktop, 96 to 112px phone
- card gap
- no cards; 13 to 22px row padding in lists, 40 to 72px between groups
- content padding
- content sits on the table aligned to the grid edge; overlays pad 28 to 30px
- approach
- The table is empty by design: the book needs air on every side, and each view carries one focal point.
density
- default
- comfortable
- comfortable
- button height 52pxinput height 52pxrow height 44 to 56px log and table rows parted by space
responsive
Phones (390px) stack to one column, hide non-essential nav links and table columns, lay the book at full width with the headline below it, and stack log rows (page, then kind, words and time). Tablets (768 to 1100px) keep the book beside a narrower column with a 40px headline. Ultra-wide caps and centres the content; only the landing hero spans the full width.
breakpoints
- mobile
- 390px
- phone max
- 640px
- tablet
- 900 to 1100px
- desktop
- 1280px
- wide
- 1440px
- ultrawide
- 1800px and 2560px
Guidance
Do
- Put the paperback and its pencil at the centre of the first view, on the flat table with air all round.
- Set real text on the page and let it stop where the text goes quiet; leave the blank blank, or give it the reader's own words.
- Spend teal on one action per view, the italic word in a headline and the current reading only.
- Separate rows by space and value, and keep at most one filled surface in a view.
- Write like a reader's notes: page 41, Left blank, Three underlines, Nine of twelve chairs taken.
- Style every control explicitly: square 52px paper slips, a drawn tick, a round teal switch, a 2px ink focus ring.
Avoid
- Don't bring back plates with corner ticks, registration crosses or coordinate labels.
- Don't write decorative codes like [gap] or x:041; use words.
- Don't box content in cards or panels, or add rules and borders between rows.
- Don't use a handwriting font for interface text; the hand belongs to the pencil in the book.
- Don't show the whole book twice on one page, or pair a secondary button with the teal one; use a graphite link.
- Don't add a second accent, a glow, a gradient or yellow outside the book's cover.
- Don't put emoji or symbol glyphs on buttons.
Imagery
pairs with
marginalia
summary
Overhead studio photographs of one reader's things on a cream paper table: a thin yellow school paperback folded back on itself, cream book-wove paper with a faint tooth, a used teal lacquered pencil with a cedar point, under one soft key light from the top left with warm brown two-layer shadows. The reader's graphite marks are drawn live on top, in the line, grain and hand of Marginalia.
subjects
- a paperback folded back at a page
- a used pencil lying on a page
- the empty cream reading table
- a page corner with a folio
- an underlined line on a page
- a pencil note in a margin
usage
One full-bleed hero per landing: the empty cream paper table under a top-left light, with the live paperback and pencil lying on it at about 45% of the width and the headline beside it on the ground. Inside pages use the cut-out book or the pencil alone on the flat table rather than more photographs. Page text and the reader's marks are live, never baked into an image. From Marginalia keep the thin graphite line, the pencil grain, the handwritten note and the warm paper; leave out its hairline panel rules, corner ticks, coordinate gutters and the pale-cyan glint, which this revision no longer uses.
Katagami spec file
# Leerstelle
## Philosophy
Leerstelle is German for the blank a text leaves for its reader to fill. The interface is one real thing on a cream table: a yellow school paperback of Kafka's Die Verwandlung folded back at page 41, where Part II goes quiet two thirds down the page, and the reader's teal pencil lying across it with an answer written into the blank. Around it everything is flat and precise: small Inria Sans, one big light Piazzolla line, page numbers in old-style figures, and teal only for the thing you can do next.
### Values
- One object is the interface: the paperback and its pencil, rendered as real things with one light, and the only raised or lit thing in a view.
- The blank is content. Where the text goes quiet, the page stays empty or holds the reader's own four words; the interface never fills a gap just because it is there.
- The reader's hand is graphite. Marks, underlines, the drawn blank and link strokes share one pencil texture, so every trace reads as the same person.
- Depth is a verb. The pencil stands only while it writes and lies back down; everything else stays flat on the table.
- Two faces by job: Piazzolla, a book face, for what is read; Inria Sans for what is used.
- Reading conventions are content: page numbers, the kind of mark in words, times of day, the reading you are on.
### Anti-Values
- Archival plates, corner ticks, registration crosses and coordinate labels as ornament.
- Decorative codes such as [gap] or x:041 in place of words.
- Boxes, cards and hairline rules around content.
- A glow, a gradient wash or a second accent.
- A handwriting font used for interface text.
- Percentages and progress dashboards where a page number will do.
### Visual Character
- The paperback lies whole on the flat #F1EADC table once per page, with table on every side: yellow rolled spine on the left, the cream page with the last paragraph of Part II set live in Piazzolla, the underline under 'vor der schreienden Schwester', and 'the gap / is the point' in graphite in the blank.
- The teal pencil (#2E5C63 lacquer, cedar point, cream dipped end) lies at 52 degrees from the end of the note across the fore-edge, casting a two-layer warm shadow; later views use a smaller moment of it, lying at the end of a drawn blank in the reading log.
- Teal is spent on the one action per view, the italic word in a headline and the current reading; graphite is the reader's hand; yellow lives only in the photograph of the cover.
- Nothing is boxed: logs, schedules, forms and tables sit straight on the table, rows parted by space; the only filled rectangles are square --surface paper slips and one open overlay; only the pressed pill and round parts use 9999px.
- Type is small and quiet around one big light line: 17px Inria Sans, 14.5px times and captions, Piazzolla 300 at 40 to 64px with -0.02em tracking, italic titles at 21px.
### Lineage
> A revision of Leerstelle, rebuilt the Inspora way from the approved elevated specimen. It keeps the name, the idea of the meaningful blank, the warm paper world, the teal ink and the handwritten margin note, and drops the android-diary scene, archival plates with corner ticks, registration crosses, coordinate gutters, monospace terminal logs, the pale-cyan glint and all three over-used faces (Newsreader, IBM Plex Sans, IBM Plex Mono).
## Tokens
### Colors
| Name | Value |
|------|-------|
| bg | `#F1EADC` |
| surface | `#FBF7EE` |
| text | `#1C1B18` |
| copy | `#4E4A42` |
| muted | `#6A645A` |
| border | `#E3DAC8` |
| accent | `#2E5C63` |
| on_accent | `#FBF7EE` |
| success | `#5C6F54` |
| warning | `#7F5F36` |
| error | `#8E4D46` |
| info | `#46696E` |
| graphite | `#52504B` |
| print | `#2E2D29` |
| shade | `#2B251C` |
### Derived
- **Copy**: color-mix(in srgb, var(--text) 36%, var(--muted))
- **Graphite**: color-mix(in srgb, var(--text) 76%, var(--surface))
- **Print**: color-mix(in srgb, var(--text) 92%, var(--surface))
- **Shade**: color-mix(in srgb, var(--text) 85%, var(--warning))
- **Note**: Only the eleven role colours are literal. Copy, the reader's graphite, the page's print and the shadow tint are mixed from them in CSS, so a palette swap carries the hand, the page and the shadows with it.
### Typography
- **Heading Font**: Piazzolla
- **Body Font**: Inria Sans
- **Heading Weight**: 300
- **Body Weight**: 400
- **Button Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.02em on Piazzolla display (-0.022em on the 64px line); 0 on Inria Sans
- **Line Height**: 1.55
- **Base Size**: 17px
- **Scale**: ["14.5px","17px","21px","28px","40px","64px"]
- **Roles**: {"display":"Piazzolla: 300 for the one big light line per view (64px) and section titles (40px); italic 400 for titles, notes and dates (21px); 500 for the wordmark; old-style figures for page numbers (21 to 28px).","body":"Inria Sans 400 at 17px for copy, labels and control text; 14.5px with tabular figures for times, captions and page counts; 700 only on the pill you press.","object_print":"Inside the paperback, Piazzolla is the book's own print and scales with the object (2.27% of the book's width); it is part of the object, not the interface scale.","hand":"The reader's pencil answer is drawn as SVG outlines (shaped from the Lateinische Ausgangsschrift of Playwrite DE LA), so no third typeface loads."}
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Piazzolla:ital,opsz,wght@0,8..30,300..500;1,8..30,300..500&family=Inria+Sans:ital,wght@0,400;0,700;1,400&display=swap
### Radii
- **None**: 0px
- **Full**: 9999px
### Shadows
- **Contact**: drop-shadow(0.25cqi 0.36cqi 0.25cqi color-mix(in srgb, var(--shade) 40%, transparent)) on the pencil at rest
- **Ambient**: drop-shadow(1.25cqi 2.14cqi 1.8cqi color-mix(in srgb, var(--shade) 20%, transparent)) under it
- **Lifted**: 0.7cqi 1.25cqi 0.9cqi at 22% and 4.6cqi 7.1cqi 4.6cqi at 14% while the pencil stands
- **Overlay**: 1px 2px 3px at 20% plus 10px 22px 48px -18px at 40% of --shade on an open dialog or menu
- **Book**: baked into assets/book.webp as a transparent warm-brown shadow, so the book sits on any table
- **Note**: One key light from the top left. Every shadow falls to the lower right in two layers, tight contact and soft ambient, tinted warm brown from the table, never grey. Only the object and open overlays cast one.
### Spacing
- **Base**: 8px
- **Scale**: ["4px","8px","12px","16px","24px","32px","48px","64px","96px","128px"]
### Surfaces
- **Treatment**: one-object-on-a-flat-cream-table
- **Material**: The paperback is the only material object: lemon-yellow card with a rolled spine, cream book-wove paper with real Kafka set live on it, photographed overhead and cut out with a real transparent shadow. The teal lacquered pencil with a cedar point lies across it. Everything else is flat colour.
- **Card Style**: No cards or panels. Content sits straight on the table, grouped by space and a Piazzolla title. The paper value --surface appears only as a control slip, a row hover or an open overlay, square at radius 0, so a view has at most one filled surface.
- **Table**: The page ground --bg is the reading table. On the landing the hero image is the empty cream paper table under one top-left light, with the live book lying on it.
- **Graphite**: The reader's marks (the answer in the blank, underlines, the drawn blank, link strokes, progress strokes) are graphite through an SVG filter: fractal grain that lets the paper through, a slight edge wobble and low-frequency pressure.
### Borders
- **Default Width**: 0
- **Style**: none
- **Character**: No borders, rules or outlines. Rows and groups part by space and by the value of their type; paper slips are the one tinted surface. Focus is a 2px ink ring. The only lines are the reader's graphite marks, which are content, not dividers.
### Motion
- **Duration**: 240ms
- **Easing**: cubic-bezier(.3,1.4,.5,1) for landings; cubic-bezier(.2,.7,.2,1) to settle
- **Write**: 2.8s: the note fades, the pencil stands (scaleX .66, shadow out and soft), writes each line with its point on the front while the line is revealed left to right, then lies down on the spring
- **Draw**: 1.6s: in the log, the pencil goes back to the start of the blank and draws the graphite rule again
- **Underline**: 420ms: a graphite stroke draws under a link from the left
- **Reveal**: 900ms cubic-bezier(.2,.7,.2,1), 18px rise, staggered 100ms; progress strokes draw to their page
- **Philosophy**: Motion is something a pencil does. The settled state is the default and renders with no JavaScript; an inline script adds .anim to <html> to gate start states, and prefers-reduced-motion skips all of it.
### Controls
- **Height**: 52px
- **Radius**: 0 on slips, 9999px on the pressed pill
- **Wells**: --surface slips straight on the --bg table
## Rules
### Composition
- Give every view one focal thing: the paperback with its pencil on the table, or a smaller moment of it (the pencil lying at a drawn blank). Everything else in that view stays flat.
- Lay the book on the table with air on every side; never frame it, crop it or put a panel over it. Headline, copy and one action sit on the ground beside it.
- Order a page like a reader's notebook: the object and the line that stopped you, then the marks, then the close reading, then what comes next.
- Separate by space and value, never by boxes: logs, lists and forms sit straight on the table; a filled --surface appears only as a control slip or an open overlay.
- Show the whole book once per page; later views take other moments of it.
- Keep teal to one action per view, the italic word in a headline and the current reading.
### Hierarchy
- One big light line per view: Piazzolla 300 at 64px (40px on phones) with -0.022em tracking, one italic word in teal.
- Section titles in Piazzolla 300 at 40px; titles, notes and dates in Piazzolla italic 400 at 21px.
- Inria Sans 400 at 17px for copy and labels; 14.5px for times, captions and counts with tabular figures; 700 only on the pill.
- Page numbers in Piazzolla old-style figures, light, at 21 to 28px; the current one in ink, earlier ones quiet.
- Status is a small round dot and a word in a paper pill, never a coloured field.
### Density
Calm notebook density: one object and a short headline per view, 128 to 160px between sections on desktop and 96 to 112px on phones, 52px controls, list rows 44 to 56px parted by space, and prose held under about 32em.
### Signature Patterns
- The paperback: a photographed yellow school paperback folded back at page 41 (assets/book.webp, with its own transparent shadow), whole and once per page, with the page text set live in Piazzolla and multiplied onto the paper.
- The reader's hand: 'the gap / is the point' drawn in graphite into the blank as SVG outlines through a pencil filter (grain, edge wobble, pressure).
- Write the blank: hovering or focusing the book (or the teal action) fades the answer, stands the pencil up (scaleX .66, shadow moving out), writes each line with its point on the front, and lays it down on a spring, 2.8s.
- The drawn blank: in the reading log, the current row ends in a graphite rule with the pencil lying at its end; hover or focus draws it again, 1.6s.
- Graphite strokes: underlines under quoted lines, links that draw a pencil stroke under the word, and progress strokes that draw to the page you reached.
- The one teal: a 9999px pill for the action, the italic word in a headline, the current reading.
## Layout
### Grid
- **Type**: object-first reading page
- **Max Width**: 1240px content, 1360px from 1800px wide
- **Gutter**: 40px desktop, 20px phone
- **Column Behavior**: Below the object, headers run on minmax(0,5fr) minmax(0,6fr); logs run page, kind, words and time columns; the read-along row is minmax(0,6fr) minmax(0,5fr). Every track is minmax(0,1fr) or fixed, and every grid child min-width:0.
### Whitespace
- **Section Gap**: 128 to 160px desktop, 96 to 112px phone
- **Card Gap**: no cards; 13 to 22px row padding in lists, 40 to 72px between groups
- **Content Padding**: content sits on the table aligned to the grid edge; overlays pad 28 to 30px
- **Approach**: The table is empty by design: the book needs air on every side, and each view carries one focal point.
### Density
- **Default**: comfortable
- **Comfortable**: {"button_height":"52px","input_height":"52px","row_height":"44 to 56px log and table rows parted by space"}
### Responsive
Phones (390px) stack to one column, hide non-essential nav links and table columns, lay the book at full width with the headline below it, and stack log rows (page, then kind, words and time). Tablets (768 to 1100px) keep the book beside a narrower column with a 40px headline. Ultra-wide caps and centres the content; only the landing hero spans the full width.
### Breakpoints
- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 900 to 1100px
- **Desktop**: 1280px
- **Wide**: 1440px
- **Ultrawide**: 1800px and 2560px
## Guidance
### Do
- Put the paperback and its pencil at the centre of the first view, on the flat table with air all round.
- Set real text on the page and let it stop where the text goes quiet; leave the blank blank, or give it the reader's own words.
- Spend teal on one action per view, the italic word in a headline and the current reading only.
- Separate rows by space and value, and keep at most one filled surface in a view.
- Write like a reader's notes: page 41, Left blank, Three underlines, Nine of twelve chairs taken.
- Style every control explicitly: square 52px paper slips, a drawn tick, a round teal switch, a 2px ink focus ring.
### Don't
- Don't bring back plates with corner ticks, registration crosses or coordinate labels.
- Don't write decorative codes like [gap] or x:041; use words.
- Don't box content in cards or panels, or add rules and borders between rows.
- Don't use a handwriting font for interface text; the hand belongs to the pencil in the book.
- Don't show the whole book twice on one page, or pair a secondary button with the teal one; use a graphite link.
- Don't add a second accent, a glow, a gradient or yellow outside the book's cover.
- Don't put emoji or symbol glyphs on buttons.
### Accessibility
WCAG AA and better on the cream table: ink #1C1B18 is 14.4:1, copy #4E4A42 is 7.4:1 and quiet labels #6A645A are 4.9:1 on #F1EADC; #FBF7EE on teal is 7.0:1; teal as text is 6.2:1; graphite is 6.7:1; every semantic colour clears 4.5:1 on the table and 5.0:1 on paper. Focus is a visible 2px ink ring on every control. The book is a focusable image with a full description of the page, the note and the pencil. prefers-reduced-motion skips the writing, the drawing and the reveals; the finished state is always there.
## Imagery Direction
### Pairs With
marginalia
### Summary
Overhead studio photographs of one reader's things on a cream paper table: a thin yellow school paperback folded back on itself, cream book-wove paper with a faint tooth, a used teal lacquered pencil with a cedar point, under one soft key light from the top left with warm brown two-layer shadows. The reader's graphite marks are drawn live on top, in the line, grain and hand of Marginalia.
### Subjects
- a paperback folded back at a page
- a used pencil lying on a page
- the empty cream reading table
- a page corner with a folio
- an underlined line on a page
- a pencil note in a margin
### Usage
One full-bleed hero per landing: the empty cream paper table under a top-left light, with the live paperback and pencil lying on it at about 45% of the width and the headline beside it on the ground. Inside pages use the cut-out book or the pencil alone on the flat table rather than more photographs. Page text and the reader's marks are live, never baked into an image. From Marginalia keep the thin graphite line, the pencil grain, the handwritten note and the warm paper; leave out its hairline panel rules, corner ticks, coordinate gutters and the pale-cyan glint, which this revision no longer uses.
DESIGN.md file
---
version: "alpha"
name: "Leerstelle"
description: "Leerstelle is German for the blank a text leaves for its reader to fill. The interface is one real thing on a cream table: a yellow school paperback of Kafka's Die Verwandlung folded back at page 41, where Part II goes quiet two thirds d..."
colors:
bg: "#F1EADC"
surface: "#FBF7EE"
text: "#1C1B18"
copy: "#4E4A42"
muted: "#6A645A"
border: "#E3DAC8"
accent: "#2E5C63"
on_accent: "#FBF7EE"
success: "#5C6F54"
warning: "#7F5F36"
error: "#8E4D46"
info: "#46696E"
graphite: "#52504B"
print: "#2E2D29"
shade: "#2B251C"
typography:
headline-lg:
fontFamily: "Piazzolla"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Piazzolla"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Inria Sans"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.55
letterSpacing: "-0.02em"
label-md:
fontFamily: "Inria Sans"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
full: "9999px"
spacing:
base: "8px"
xs: "4px"
sm: "8px"
md: "12px"
lg: "16px"
xl: "24px"
2xl: "32px"
3xl: "48px"
4xl: "64px"
step-8: "96px"
step-9: "128px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-copy:
backgroundColor: "{colors.copy}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-success:
backgroundColor: "{colors.success}"
color-reference-warning:
backgroundColor: "{colors.warning}"
color-reference-error:
backgroundColor: "{colors.error}"
color-reference-info:
backgroundColor: "{colors.info}"
color-reference-graphite:
backgroundColor: "{colors.graphite}"
color-reference-print:
backgroundColor: "{colors.print}"
color-reference-shade:
backgroundColor: "{colors.shade}"
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"
---
# Leerstelle
## Overview
Leerstelle is German for the blank a text leaves for its reader to fill. The interface is one real thing on a cream table: a yellow school paperback of Kafka's Die Verwandlung folded back at page 41, where Part II goes quiet two thirds down the page, and the reader's teal pencil lying across it with an answer written into the blank. Around it everything is flat and precise: small Inria Sans, one big light Piazzolla line, page numbers in old-style figures, and teal only for the thing you can do next.
### Values
- One object is the interface: the paperback and its pencil, rendered as real things with one light, and the only raised or lit thing in a view.
- The blank is content. Where the text goes quiet, the page stays empty or holds the reader's own four words; the interface never fills a gap just because it is there.
- The reader's hand is graphite. Marks, underlines, the drawn blank and link strokes share one pencil texture, so every trace reads as the same person.
- Depth is a verb. The pencil stands only while it writes and lies back down; everything else stays flat on the table.
- Two faces by job: Piazzolla, a book face, for what is read; Inria Sans for what is used.
- Reading conventions are content: page numbers, the kind of mark in words, times of day, the reading you are on.
### Anti-Values
- Archival plates, corner ticks, registration crosses and coordinate labels as ornament.
- Decorative codes such as [gap] or x:041 in place of words.
- Boxes, cards and hairline rules around content.
- A glow, a gradient wash or a second accent.
- A handwriting font used for interface text.
- Percentages and progress dashboards where a page number will do.
### Visual Character
- The paperback lies whole on the flat #F1EADC table once per page, with table on every side: yellow rolled spine on the left, the cream page with the last paragraph of Part II set live in Piazzolla, the underline under 'vor der schreienden Schwester', and 'the gap / is the point' in graphite in the blank.
- The teal pencil (#2E5C63 lacquer, cedar point, cream dipped end) lies at 52 degrees from the end of the note across the fore-edge, casting a two-layer warm shadow; later views use a smaller moment of it, lying at the end of a drawn blank in the reading log.
- Teal is spent on the one action per view, the italic word in a headline and the current reading; graphite is the reader's hand; yellow lives only in the photograph of the cover.
- Nothing is boxed: logs, schedules, forms and tables sit straight on the table, rows parted by space; the only filled rectangles are square --surface paper slips and one open overlay; only the pressed pill and round parts use 9999px.
- Type is small and quiet around one big light line: 17px Inria Sans, 14.5px times and captions, Piazzolla 300 at 40 to 64px with -0.02em tracking, italic titles at 21px.
### Lineage
> A revision of Leerstelle, rebuilt the Inspora way from the approved elevated specimen. It keeps the name, the idea of the meaningful blank, the warm paper world, the teal ink and the handwritten margin note, and drops the android-diary scene, archival plates with corner ticks, registration crosses, coordinate gutters, monospace terminal logs, the pale-cyan glint and all three over-used faces (Newsreader, IBM Plex Sans, IBM Plex Mono).
## 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 | `#F1EADC` |
| surface | `#FBF7EE` |
| text | `#1C1B18` |
| copy | `#4E4A42` |
| muted | `#6A645A` |
| border | `#E3DAC8` |
| accent | `#2E5C63` |
| on_accent | `#FBF7EE` |
| success | `#5C6F54` |
| warning | `#7F5F36` |
| error | `#8E4D46` |
| info | `#46696E` |
| graphite | `#52504B` |
| print | `#2E2D29` |
| shade | `#2B251C` |
## Typography
Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Piazzolla:ital,opsz,wght@0,8..30,300..500;1,8..30,300..500&family=Inria+Sans:ital,wght@0,400;0,700;1,400&display=swap
- **Headline-Lg**: Piazzolla, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Piazzolla, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inria Sans, 17px, weight 400, line-height 1.55.
- **Label-Md**: Inria Sans, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`
- **Step-9**: `128px`
### Grid
- **Type**: object-first reading page
- **Max Width**: 1240px content, 1360px from 1800px wide
- **Gutter**: 40px desktop, 20px phone
- **Column Behavior**: Below the object, headers run on minmax(0,5fr) minmax(0,6fr); logs run page, kind, words and time columns; the read-along row is minmax(0,6fr) minmax(0,5fr). Every track is minmax(0,1fr) or fixed, and every grid child min-width:0.
### Whitespace
- **Section Gap**: 128 to 160px desktop, 96 to 112px phone
- **Card Gap**: no cards; 13 to 22px row padding in lists, 40 to 72px between groups
- **Content Padding**: content sits on the table aligned to the grid edge; overlays pad 28 to 30px
- **Approach**: The table is empty by design: the book needs air on every side, and each view carries one focal point.
### Density
- **Default**: comfortable
- **Comfortable**: {"button_height":"52px","input_height":"52px","row_height":"44 to 56px log and table rows parted by space"}
### Responsive
Phones (390px) stack to one column, hide non-essential nav links and table columns, lay the book at full width with the headline below it, and stack log rows (page, then kind, words and time). Tablets (768 to 1100px) keep the book beside a narrower column with a 40px headline. Ultra-wide caps and centres the content; only the landing hero spans the full width.
### Breakpoints
- **Mobile**: 390px
- **Phone Max**: 640px
- **Tablet**: 900 to 1100px
- **Desktop**: 1280px
- **Wide**: 1440px
- **Ultrawide**: 1800px and 2560px
## Elevation & Depth
### Shadows
- **Contact**: drop-shadow(0.25cqi 0.36cqi 0.25cqi color-mix(in srgb, var(--shade) 40%, transparent)) on the pencil at rest
- **Ambient**: drop-shadow(1.25cqi 2.14cqi 1.8cqi color-mix(in srgb, var(--shade) 20%, transparent)) under it
- **Lifted**: 0.7cqi 1.25cqi 0.9cqi at 22% and 4.6cqi 7.1cqi 4.6cqi at 14% while the pencil stands
- **Overlay**: 1px 2px 3px at 20% plus 10px 22px 48px -18px at 40% of --shade on an open dialog or menu
- **Book**: baked into assets/book.webp as a transparent warm-brown shadow, so the book sits on any table
- **Note**: One key light from the top left. Every shadow falls to the lower right in two layers, tight contact and soft ambient, tinted warm brown from the table, never grey. Only the object and open overlays cast one.
## Shapes
### Rounded
- **None**: `0px`
- **Full**: `9999px`
### Surfaces
- **Treatment**: one-object-on-a-flat-cream-table
- **Material**: The paperback is the only material object: lemon-yellow card with a rolled spine, cream book-wove paper with real Kafka set live on it, photographed overhead and cut out with a real transparent shadow. The teal lacquered pencil with a cedar point lies across it. Everything else is flat colour.
- **Card Style**: No cards or panels. Content sits straight on the table, grouped by space and a Piazzolla title. The paper value --surface appears only as a control slip, a row hover or an open overlay, square at radius 0, so a view has at most one filled surface.
- **Table**: The page ground --bg is the reading table. On the landing the hero image is the empty cream paper table under one top-left light, with the live book lying on it.
- **Graphite**: The reader's marks (the answer in the blank, underlines, the drawn blank, link strokes, progress strokes) are graphite through an SVG filter: fractal grain that lets the paper through, a slight edge wobble and low-frequency pressure.
### Borders
- **Default Width**: 0
- **Style**: none
- **Character**: No borders, rules or outlines. Rows and groups part by space and by the value of their type; paper slips are the one tinted surface. Focus is a 2px ink ring. The only lines are the reader's graphite marks, which are content, not dividers.
## Components
### Composition
- Give every view one focal thing: the paperback with its pencil on the table, or a smaller moment of it (the pencil lying at a drawn blank). Everything else in that view stays flat.
- Lay the book on the table with air on every side; never frame it, crop it or put a panel over it. Headline, copy and one action sit on the ground beside it.
- Order a page like a reader's notebook: the object and the line that stopped you, then the marks, then the close reading, then what comes next.
- Separate by space and value, never by boxes: logs, lists and forms sit straight on the table; a filled --surface appears only as a control slip or an open overlay.
- Show the whole book once per page; later views take other moments of it.
- Keep teal to one action per view, the italic word in a headline and the current reading.
### Hierarchy
- One big light line per view: Piazzolla 300 at 64px (40px on phones) with -0.022em tracking, one italic word in teal.
- Section titles in Piazzolla 300 at 40px; titles, notes and dates in Piazzolla italic 400 at 21px.
- Inria Sans 400 at 17px for copy and labels; 14.5px for times, captions and counts with tabular figures; 700 only on the pill.
- Page numbers in Piazzolla old-style figures, light, at 21 to 28px; the current one in ink, earlier ones quiet.
- Status is a small round dot and a word in a paper pill, never a coloured field.
### Density
Calm notebook density: one object and a short headline per view, 128 to 160px between sections on desktop and 96 to 112px on phones, 52px controls, list rows 44 to 56px parted by space, and prose held under about 32em.
### Signature Patterns
- The paperback: a photographed yellow school paperback folded back at page 41 (assets/book.webp, with its own transparent shadow), whole and once per page, with the page text set live in Piazzolla and multiplied onto the paper.
- The reader's hand: 'the gap / is the point' drawn in graphite into the blank as SVG outlines through a pencil filter (grain, edge wobble, pressure).
- Write the blank: hovering or focusing the book (or the teal action) fades the answer, stands the pencil up (scaleX .66, shadow moving out), writes each line with its point on the front, and lays it down on a spring, 2.8s.
- The drawn blank: in the reading log, the current row ends in a graphite rule with the pencil lying at its end; hover or focus draws it again, 1.6s.
- Graphite strokes: underlines under quoted lines, links that draw a pencil stroke under the word, and progress strokes that draw to the page you reached.
- The one teal: a 9999px pill for the action, the italic word in a headline, the current reading.
## 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-01a0ecaf-7f2f-7611-be4a-e9b9562de80a/DESIGN.with-shadcn.md`.
Machine-readable companions for automation: `/language/en-01a0ecaf-7f2f-7611-be4a-e9b9562de80a/shadcn.json` (registry theme), `/language/en-01a0ecaf-7f2f-7611-be4a-e9b9562de80a/shadcn-components.md` (component recipes) and `/language/en-01a0ecaf-7f2f-7611-be4a-e9b9562de80a/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 paperback and its pencil at the centre of the first view, on the flat table with air all round.
- Do Set real text on the page and let it stop where the text goes quiet; leave the blank blank, or give it the reader's own words.
- Do Spend teal on one action per view, the italic word in a headline and the current reading only.
- Do Separate rows by space and value, and keep at most one filled surface in a view.
- Do Write like a reader's notes: page 41, Left blank, Three underlines, Nine of twelve chairs taken.
- Do Style every control explicitly: square 52px paper slips, a drawn tick, a round teal switch, a 2px ink focus ring.
- Don't Don't bring back plates with corner ticks, registration crosses or coordinate labels.
- Don't Don't write decorative codes like [gap] or x:041; use words.
- Don't Don't box content in cards or panels, or add rules and borders between rows.
- Don't Don't use a handwriting font for interface text; the hand belongs to the pencil in the book.
- Don't Don't show the whole book twice on one page, or pair a secondary button with the teal one; use a graphite link.
- Don't Don't add a second accent, a glow, a gradient or yellow outside the book's cover.
- Don't Don't put emoji or symbol glyphs on buttons.
### Accessibility
WCAG AA and better on the cream table: ink #1C1B18 is 14.4:1, copy #4E4A42 is 7.4:1 and quiet labels #6A645A are 4.9:1 on #F1EADC; #FBF7EE on teal is 7.0:1; teal as text is 6.2:1; graphite is 6.7:1; every semantic colour clears 4.5:1 on the table and 5.0:1 on paper. Focus is a visible 2px ink ring on every control. The book is a focusable image with a full description of the page, the note and the pencil. prefers-reduced-motion skips the writing, the drawing and the reveals; the finished state is always there.
## Imagery Direction
### Pairs With
marginalia
### Summary
Overhead studio photographs of one reader's things on a cream paper table: a thin yellow school paperback folded back on itself, cream book-wove paper with a faint tooth, a used teal lacquered pencil with a cedar point, under one soft key light from the top left with warm brown two-layer shadows. The reader's graphite marks are drawn live on top, in the line, grain and hand of Marginalia.
### Subjects
- a paperback folded back at a page
- a used pencil lying on a page
- the empty cream reading table
- a page corner with a folio
- an underlined line on a page
- a pencil note in a margin
### Usage
One full-bleed hero per landing: the empty cream paper table under a top-left light, with the live paperback and pencil lying on it at about 45% of the width and the headline beside it on the ground. Inside pages use the cut-out book or the pencil alone on the flat table rather than more photographs. Page text and the reader's marks are live, never baked into an image. From Marginalia keep the thin graphite line, the pencil grain, the handwritten note and the warm paper; leave out its hairline panel rules, corner ticks, coordinate gutters and the pale-cyan glint, which this revision no longer uses.
shadcn/ui theme file
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "leerstelle",
"type": "registry:theme",
"title": "Leerstelle shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#F1EADC",
"foreground": "#1C1B18",
"card": "#FBF7EE",
"card-foreground": "#1C1B18",
"popover": "#FBF7EE",
"popover-foreground": "#1C1B18",
"primary": "#1C1B18",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#6A645A",
"muted-foreground": "#1C1B18",
"accent": "#2E5C63",
"accent-foreground": "#ffffff",
"destructive": "#8E4D46",
"border": "#E3DAC8",
"input": "#E3DAC8",
"ring": "#2E5C63",
"chart-1": "#1C1B18",
"chart-2": "#f4f4f5",
"chart-3": "#2E5C63",
"chart-4": "#5C6F54",
"chart-5": "#7F5F36",
"sidebar": "#FBF7EE",
"sidebar-foreground": "#1C1B18",
"sidebar-primary": "#1C1B18",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#46696E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#E3DAC8",
"sidebar-ring": "#2E5C63",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#1C1B18",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#2E5C63",
"accent-foreground": "#ffffff",
"destructive": "#8E4D46",
"border": "#303642",
"input": "#303642",
"ring": "#2E5C63",
"chart-1": "#1C1B18",
"chart-2": "#f4f4f5",
"chart-3": "#2E5C63",
"chart-4": "#5C6F54",
"chart-5": "#7F5F36",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#1C1B18",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#2E5C63",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#2E5C63",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-01a0ecaf-7f2f-7611-be4a-e9b9562de80a",
"slug": "leerstelle",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"bg",
"border",
"copy",
"error",
"graphite",
"info",
"muted",
"on_accent",
"print",
"shade",
"success",
"surface",
"text",
"warning"
],
"derived": [
"copy",
"graphite",
"note",
"print",
"shade"
],
"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": [
"ambient",
"book",
"contact",
"lifted",
"note",
"overlay"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"card_style",
"graphite",
"material",
"table",
"treatment"
],
"borders": [
"character",
"default_width",
"style"
],
"motion": [
"draw",
"duration",
"easing",
"philosophy",
"reveal",
"underline",
"write"
],
"controls": [
"height",
"radius",
"wells"
]
}
}
}
```