Back to gallery

Celadon

Celadon is a contemplative interface language for gardens, archives and other places kept slowly.

Its pictures are drawn in Celadon Glaze.

Download DESIGN.md

Tokens, rules and the paired art style Celadon Glaze.

Preview

Open full page

Typography

Each face set in this language's own words.

headline lgShippori Mincho, 33px, 700

Celadon

headline mdShippori Mincho, 27px, 600

Celadon

body mdZen Kaku Gothic New, 17px, 400

Celadon is a contemplative interface language for gardens, archives and other places kept slowly.

label mdnone, 12px, 600

Celadon is a contemplative interface language for gardens, archives and other places kept slowly.

Specification

Philosophy

summary

Celadon is a contemplative interface language for gardens, archives and other places kept slowly. The glaze itself is the ground: a hand-drawn network of craze lines spreads under the first screen, and every crack is a real, logged event. The x axis is the year, the y axis the hour of the day, and one crack is one visit set on its date at the hour it happened. The smooth glaze is the part of the year still to come, a day nobody came is left smooth, and today's cracks are drawn in white. Content sits inside the field on a cool jade-grey ground in Shippori Mincho and Zen Kaku Gothic New, with deep jade for the one action and a single persimmon bar for the season in fruit.

It values

  • The ground is the data: every crack is a logged visit, every staple a dated repair, and a day nobody came is left smooth.
  • Content sits inside the field. The glaze is the first screen, not a backdrop behind a card.
  • One season-mark: a single persimmon bar for what is in fruit now, and nothing else warm.
  • Square and quiet: radius 0 on every rectangle, no borders, no shadows except an open menu or dialog.
  • Say what happened. Copy states facts (2,003 visits since April), never describes the design.

It refuses

  • Decoration: a crack that is not a record, a bloom, a gradient pool or a blurred wash.
  • Boxing the glaze into tiles, season cards or pill tags.
  • Persimmon on more than one thing at a time.
  • Default fonts, drop shadows and rounded cards.
  • Copy about the design system instead of the garden.

visual character

  • A cool jade-grey #D3DDD2 glaze with a fine network of iron-dark craze lines.
  • Today's cracks in pure white, the future as smooth open glaze.
  • Iron staples (a small bracket glyph) for dated repairs, as on the Bakohan bowl.
  • Deep jade #335C4A for the one filled button and links; persimmon #C9582B as a 5px season bar.
  • Shippori Mincho for the one large line and titles; Zen Kaku Gothic New for everything read.
  • Square wells, rows without rules, and generous air around every group.

lineage

Celadon began as a warm bisque garden of glaze pools and stepping stones. This revision is the approved texture-field take: it keeps the celadon glaze world, the jade and persimmon palette and the Stoneworks Garden keepers' pass, and replaces tiles and pools with a crazed glaze whose cracks are real visits.

Tokens
colors12
bg
#D3DDD2
surface
#C3D1C1
text
#28251F
muted
#48523F
border
#B3C2B1
accent
#335C4A
on accent
#FFFFFF
success
#2E5E2D
warning
#6B4812
error
#8A3020
info
#245866
season
#C9582B
derived3
stain
a crack darkens with age: stroke-opacity .92 for April down to .30 for today's weight, ink #28251F on the glaze; today's cracks are #FFFFFF
row hover
color-mix(in srgb, var(--surface) 55%, transparent)
lift
0 1px 2px rgb(40 37 31 / .25), 0 16px 32px -14px rgb(40 37 31 / .4), only on an open menu or dialog
typography12
heading font
Shippori Mincho
body font
Zen Kaku Gothic New
mono font
none
heading weight
600
body weight
400
button weight
500
heading transform
none
letter spacing
-0.02em on display; 0 on body
base size
17px
line height
1.6
scale
14.5px, 17px, 20px, 26px to 30px, 40px to 64px
google fonts url
https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500;600&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap
radii4
none
0px
md
0px
lg
0px
full
0px
shadows2
lift
0 1px 2px rgb(40 37 31 / .25), 0 16px 32px -14px rgb(40 37 31 / .4), only on an open menu or dialog
none
everything else is flat
spacing2
base
8px
scale
4px, 8px, 12px, 16px, 24px, 32px, 48px, 72px, 96px, 120px
surfaces5
treatment
glaze-field
material
The crazed glaze is the only texture and it is data: a raster ground fired for the page with the year's cracks drawn over it as a vector layer. Everything else is flat jade-grey with surface wells.
card style
No cards. Rows, forms and the ledger sit straight on the glaze, parted by space; the keeper's pass is one surface well.
wells
Surface #C3D1C1 for inputs, the chosen tab, meter tracks and the pass.
bg pattern
the glaze ground, only in the field; text sections are flat
borders3
default width
0
style
none
character
No borders. Cracks are the only lines and each one is a record; the 1px front line marks today. Focus is a 2px jade outline at 3px offset; a focused field draws a 2px ink line under its well.
motion4
duration
180ms
easing
cubic-bezier(0.2, 0, 0.1, 1)
crack
650ms ease-out quartic: a new white crack grows along its own path and stops at the older cracks
philosophy
One motion: a crack forms when a visit is logged. Everything settled renders with no JavaScript, and prefers-reduced-motion draws the crack at once.
controls3
height
48px (40 small, 56 large)
radius
0px
well height
52px
Rules

composition

  • Make the first screen the glaze: the craze ground spans it edge to edge, with the copy set on open glaze beside it.
  • Place every crack by data: x is the date, y is the hour; never draw a crack that is not a record.
  • Keep one persimmon bar per view, under the season in fruit.
  • Below the field, show the same glaze closer (by week, by month) before any other content.
  • Put the pass and other actions on a single surface well; one filled jade button per view.

hierarchy

  • One large line per view in Shippori Mincho 600 (40 to 64px) that states a fact.
  • Titles in Shippori Mincho 26 to 30px; reading in Zen Kaku Gothic New 17px, labels 14.5px in muted.
  • Numbers sit in tabular figures, right aligned, with a small muted unit beneath.
  • Ink is for what happened, muted is for what it means.

density

Comfortable: 9px day rows, 72 to 120px between sections, 17px reading text, 14.5px table rows.

signature patterns

  • The crazed ground: a year-long strip of cracks, hours on the right edge, months along the foot.
  • Log a visit: a white crack grows along its own path and the totals step up by one.
  • Point to read: hovering the glaze names the day, the hour and the visit count.
  • Iron staples: a small bracket glyph on every dated repair.
  • The stain table: a month's cracks drawn at their age, darker with time.
Layout

grid

type
texture field then ledger
max width
1240px, centred above 1440px
gutter
clamp(16px, 4.4vw, 56px)
column behavior
Two-column heads and reads use minmax(0,1fr) pairs; every grid child has min-width:0.

whitespace

section gap
72 to 120px
card gap
no cards; 9 to 12px between day rows
content padding
content sits on the glaze at the grid edge; the pass pads 26 to 40px
approach
The glaze is the field and space does the separating.

density

default
comfortable
comfortable
button height 48pxinput height 52pxrow height 40px to 76px

responsive

Desktop shows the year across with hours on the right edge. Tablet shortens the labels and keeps both columns. Phone turns the field upright: the future sits on top as open glaze and the crazed half-year runs down the page from today.

breakpoints

mobile
390px, one column, upright field
phone max
600px
tablet
601px to 1199px, shorter labels
desktop
1200px and up
wide
1440px, content capped and centred
ultrawide
2560px, same cap, field still full bleed
Guidance

Do

  • Let every mark be a record and say what it records.
  • Keep the glaze smooth where nothing happened.
  • Use one persimmon bar for the season in fruit.
  • Set copy as facts with numbers and dates.
  • Style every control explicitly: square, borderless, 2px jade focus.
  • Draw today's marks in white and age the rest toward iron.
  • Keep text on open glaze, never on cracks.

Avoid

  • Don't add decorative cracks, blooms or gradient pools.
  • Don't box content into cards, tiles or pills.
  • Don't use persimmon on more than one thing in a view.
  • Don't round rectangles or add drop shadows.
  • Don't use default fonts or tracked mono eyebrows.
  • Don't describe the design system in the copy.
Imagery

pairs with

celadon-glaze

art style id

en-019efdd9-1129-76b2-9677-bd3f1bc46341

summary

A glaze ground fired for the page in the Celadon Glaze technique: cool jade-grey crazed ceramic, open and calm at the left for copy, with no subject and no persimmon. The year's cracks are drawn over it as a vector layer so the raster stays quiet.

subjects

  • an empty crazed celadon glaze plate
  • a glaze ground with an open pale zone at left
  • a close detail of crackle with iron staining
  • a plain glazed tile edge to edge

usage

One full-bleed glaze ground per landing, driven by --hero-image, beneath the data layer; elsewhere only flat jade-grey and wells.

avoid

Subjects, scenes, pooled colour and persimmon in the ground; the data layer carries the story.

Katagami spec file
# Celadon

## Philosophy

Celadon is a contemplative interface language for gardens, archives and other places kept slowly. The glaze itself is the ground: a hand-drawn network of craze lines spreads under the first screen, and every crack is a real, logged event. The x axis is the year, the y axis the hour of the day, and one crack is one visit set on its date at the hour it happened. The smooth glaze is the part of the year still to come, a day nobody came is left smooth, and today's cracks are drawn in white. Content sits inside the field on a cool jade-grey ground in Shippori Mincho and Zen Kaku Gothic New, with deep jade for the one action and a single persimmon bar for the season in fruit.

### Values

- The ground is the data: every crack is a logged visit, every staple a dated repair, and a day nobody came is left smooth.
- Content sits inside the field. The glaze is the first screen, not a backdrop behind a card.
- One season-mark: a single persimmon bar for what is in fruit now, and nothing else warm.
- Square and quiet: radius 0 on every rectangle, no borders, no shadows except an open menu or dialog.
- Say what happened. Copy states facts (2,003 visits since April), never describes the design.

### Anti-Values

- Decoration: a crack that is not a record, a bloom, a gradient pool or a blurred wash.
- Boxing the glaze into tiles, season cards or pill tags.
- Persimmon on more than one thing at a time.
- Default fonts, drop shadows and rounded cards.
- Copy about the design system instead of the garden.

### Visual Character

- A cool jade-grey #D3DDD2 glaze with a fine network of iron-dark craze lines.
- Today's cracks in pure white, the future as smooth open glaze.
- Iron staples (a small bracket glyph) for dated repairs, as on the Bakohan bowl.
- Deep jade #335C4A for the one filled button and links; persimmon #C9582B as a 5px season bar.
- Shippori Mincho for the one large line and titles; Zen Kaku Gothic New for everything read.
- Square wells, rows without rules, and generous air around every group.

### Lineage

> Celadon began as a warm bisque garden of glaze pools and stepping stones. This revision is the approved texture-field take: it keeps the celadon glaze world, the jade and persimmon palette and the Stoneworks Garden keepers' pass, and replaces tiles and pools with a crazed glaze whose cracks are real visits.

## Tokens

### Colors

| Name | Value |
|------|-------|
| bg | `#D3DDD2` |
| surface | `#C3D1C1` |
| text | `#28251F` |
| muted | `#48523F` |
| border | `#B3C2B1` |
| accent | `#335C4A` |
| on_accent | `#FFFFFF` |
| success | `#2E5E2D` |
| warning | `#6B4812` |
| error | `#8A3020` |
| info | `#245866` |
| season | `#C9582B` |

### Derived

- **Stain**: a crack darkens with age: stroke-opacity .92 for April down to .30 for today's weight, ink #28251F on the glaze; today's cracks are #FFFFFF
- **Row Hover**: color-mix(in srgb, var(--surface) 55%, transparent)
- **Lift**: 0 1px 2px rgb(40 37 31 / .25), 0 16px 32px -14px rgb(40 37 31 / .4), only on an open menu or dialog

### Typography

- **Heading Font**: Shippori Mincho
- **Body Font**: Zen Kaku Gothic New
- **Mono Font**: none
- **Heading Weight**: 600
- **Body Weight**: 400
- **Button Weight**: 500
- **Heading Transform**: none
- **Letter Spacing**: -0.02em on display; 0 on body
- **Base Size**: 17px
- **Line Height**: 1.6
- **Scale**: ["14.5px","17px","20px","26px to 30px","40px to 64px"]
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500;600&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap

### Radii

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

### Shadows

- **Lift**: 0 1px 2px rgb(40 37 31 / .25), 0 16px 32px -14px rgb(40 37 31 / .4), only on an open menu or dialog
- **None**: everything else is flat

### Spacing

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

### Surfaces

- **Treatment**: glaze-field
- **Material**: The crazed glaze is the only texture and it is data: a raster ground fired for the page with the year's cracks drawn over it as a vector layer. Everything else is flat jade-grey with surface wells.
- **Card Style**: No cards. Rows, forms and the ledger sit straight on the glaze, parted by space; the keeper's pass is one surface well.
- **Wells**: Surface #C3D1C1 for inputs, the chosen tab, meter tracks and the pass.
- **Bg Pattern**: the glaze ground, only in the field; text sections are flat

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No borders. Cracks are the only lines and each one is a record; the 1px front line marks today. Focus is a 2px jade outline at 3px offset; a focused field draws a 2px ink line under its well.

### Motion

- **Duration**: 180ms
- **Easing**: cubic-bezier(0.2, 0, 0.1, 1)
- **Crack**: 650ms ease-out quartic: a new white crack grows along its own path and stops at the older cracks
- **Philosophy**: One motion: a crack forms when a visit is logged. Everything settled renders with no JavaScript, and prefers-reduced-motion draws the crack at once.

### Controls

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

## Rules

### Composition

- Make the first screen the glaze: the craze ground spans it edge to edge, with the copy set on open glaze beside it.
- Place every crack by data: x is the date, y is the hour; never draw a crack that is not a record.
- Keep one persimmon bar per view, under the season in fruit.
- Below the field, show the same glaze closer (by week, by month) before any other content.
- Put the pass and other actions on a single surface well; one filled jade button per view.

### Hierarchy

- One large line per view in Shippori Mincho 600 (40 to 64px) that states a fact.
- Titles in Shippori Mincho 26 to 30px; reading in Zen Kaku Gothic New 17px, labels 14.5px in muted.
- Numbers sit in tabular figures, right aligned, with a small muted unit beneath.
- Ink is for what happened, muted is for what it means.

### Density

Comfortable: 9px day rows, 72 to 120px between sections, 17px reading text, 14.5px table rows.

### Signature Patterns

- The crazed ground: a year-long strip of cracks, hours on the right edge, months along the foot.
- Log a visit: a white crack grows along its own path and the totals step up by one.
- Point to read: hovering the glaze names the day, the hour and the visit count.
- Iron staples: a small bracket glyph on every dated repair.
- The stain table: a month's cracks drawn at their age, darker with time.

## Layout

### Grid

- **Type**: texture field then ledger
- **Max Width**: 1240px, centred above 1440px
- **Gutter**: clamp(16px, 4.4vw, 56px)
- **Column Behavior**: Two-column heads and reads use minmax(0,1fr) pairs; every grid child has min-width:0.

### Whitespace

- **Section Gap**: 72 to 120px
- **Card Gap**: no cards; 9 to 12px between day rows
- **Content Padding**: content sits on the glaze at the grid edge; the pass pads 26 to 40px
- **Approach**: The glaze is the field and space does the separating.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"48px","input_height":"52px","row_height":"40px to 76px"}

### Responsive

Desktop shows the year across with hours on the right edge. Tablet shortens the labels and keeps both columns. Phone turns the field upright: the future sits on top as open glaze and the crazed half-year runs down the page from today.

### Breakpoints

- **Mobile**: 390px, one column, upright field
- **Phone Max**: 600px
- **Tablet**: 601px to 1199px, shorter labels
- **Desktop**: 1200px and up
- **Wide**: 1440px, content capped and centred
- **Ultrawide**: 2560px, same cap, field still full bleed

## Guidance

### Do

- Let every mark be a record and say what it records.
- Keep the glaze smooth where nothing happened.
- Use one persimmon bar for the season in fruit.
- Set copy as facts with numbers and dates.
- Style every control explicitly: square, borderless, 2px jade focus.
- Draw today's marks in white and age the rest toward iron.
- Keep text on open glaze, never on cracks.

### Don't

- Don't add decorative cracks, blooms or gradient pools.
- Don't box content into cards, tiles or pills.
- Don't use persimmon on more than one thing in a view.
- Don't round rectangles or add drop shadows.
- Don't use default fonts or tracked mono eyebrows.
- Don't describe the design system in the copy.

### Accessibility

Text colours clear AA on the glaze and on surface wells (ink 10.9:1, muted 5.9:1, jade 5.4:1, semantic inks 5.5 to 6.0:1). The field is aria-hidden with the same facts in text; hover readouts are an addition, never the only source. Reduced motion draws new cracks at once.

### Usage Context

Places kept slowly with a record that grows over time: gardens, archives, reading rooms, sanctuaries, membership schemes.

## Imagery Direction

### Pairs With

celadon-glaze

### Art Style Id

en-019efdd9-1129-76b2-9677-bd3f1bc46341

### Summary

A glaze ground fired for the page in the Celadon Glaze technique: cool jade-grey crazed ceramic, open and calm at the left for copy, with no subject and no persimmon. The year's cracks are drawn over it as a vector layer so the raster stays quiet.

### Subjects

- an empty crazed celadon glaze plate
- a glaze ground with an open pale zone at left
- a close detail of crackle with iron staining
- a plain glazed tile edge to edge

### Usage

One full-bleed glaze ground per landing, driven by --hero-image, beneath the data layer; elsewhere only flat jade-grey and wells.

### Avoid

Subjects, scenes, pooled colour and persimmon in the ground; the data layer carries the story.
DESIGN.md file
---
version: "alpha"
name: "Celadon"
description: "Celadon is a contemplative interface language for gardens, archives and other places kept slowly. The glaze itself is the ground: a hand-drawn network of craze lines spreads under the first screen, and every crack is a real, logged event..."
colors:
  bg: "#D3DDD2"
  surface: "#C3D1C1"
  text: "#28251F"
  muted: "#48523F"
  border: "#B3C2B1"
  accent: "#335C4A"
  on_accent: "#FFFFFF"
  success: "#2E5E2D"
  warning: "#6B4812"
  error: "#8A3020"
  info: "#245866"
  season: "#C9582B"
typography:
  headline-lg:
    fontFamily: "Shippori Mincho"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "Shippori Mincho"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "Zen Kaku Gothic New"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "none"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  md: "0px"
  lg: "0px"
  full: "0px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "72px"
  step-8: "96px"
  step-9: "120px"
components:
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-season:
    backgroundColor: "{colors.season}"
  button-primary:
    backgroundColor: "{colors.accent}"
    textColor: "{colors.on_accent}"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Celadon

## Overview

Celadon is a contemplative interface language for gardens, archives and other places kept slowly. The glaze itself is the ground: a hand-drawn network of craze lines spreads under the first screen, and every crack is a real, logged event. The x axis is the year, the y axis the hour of the day, and one crack is one visit set on its date at the hour it happened. The smooth glaze is the part of the year still to come, a day nobody came is left smooth, and today's cracks are drawn in white. Content sits inside the field on a cool jade-grey ground in Shippori Mincho and Zen Kaku Gothic New, with deep jade for the one action and a single persimmon bar for the season in fruit.

### Values

- The ground is the data: every crack is a logged visit, every staple a dated repair, and a day nobody came is left smooth.
- Content sits inside the field. The glaze is the first screen, not a backdrop behind a card.
- One season-mark: a single persimmon bar for what is in fruit now, and nothing else warm.
- Square and quiet: radius 0 on every rectangle, no borders, no shadows except an open menu or dialog.
- Say what happened. Copy states facts (2,003 visits since April), never describes the design.

### Anti-Values

- Decoration: a crack that is not a record, a bloom, a gradient pool or a blurred wash.
- Boxing the glaze into tiles, season cards or pill tags.
- Persimmon on more than one thing at a time.
- Default fonts, drop shadows and rounded cards.
- Copy about the design system instead of the garden.

### Visual Character

- A cool jade-grey #D3DDD2 glaze with a fine network of iron-dark craze lines.
- Today's cracks in pure white, the future as smooth open glaze.
- Iron staples (a small bracket glyph) for dated repairs, as on the Bakohan bowl.
- Deep jade #335C4A for the one filled button and links; persimmon #C9582B as a 5px season bar.
- Shippori Mincho for the one large line and titles; Zen Kaku Gothic New for everything read.
- Square wells, rows without rules, and generous air around every group.

### Lineage

> Celadon began as a warm bisque garden of glaze pools and stepping stones. This revision is the approved texture-field take: it keeps the celadon glaze world, the jade and persimmon palette and the Stoneworks Garden keepers' pass, and replaces tiles and pools with a crazed glaze whose cracks are real visits.

## 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 | `#D3DDD2` |
| surface | `#C3D1C1` |
| text | `#28251F` |
| muted | `#48523F` |
| border | `#B3C2B1` |
| accent | `#335C4A` |
| on_accent | `#FFFFFF` |
| success | `#2E5E2D` |
| warning | `#6B4812` |
| error | `#8A3020` |
| info | `#245866` |
| season | `#C9582B` |

## Typography

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

- **Headline-Lg**: Shippori Mincho, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Shippori Mincho, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Zen Kaku Gothic New, 17px, weight 400, line-height 1.5.
- **Label-Md**: none, 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**: `72px`
- **Step-8**: `96px`
- **Step-9**: `120px`

### Grid

- **Type**: texture field then ledger
- **Max Width**: 1240px, centred above 1440px
- **Gutter**: clamp(16px, 4.4vw, 56px)
- **Column Behavior**: Two-column heads and reads use minmax(0,1fr) pairs; every grid child has min-width:0.

### Whitespace

- **Section Gap**: 72 to 120px
- **Card Gap**: no cards; 9 to 12px between day rows
- **Content Padding**: content sits on the glaze at the grid edge; the pass pads 26 to 40px
- **Approach**: The glaze is the field and space does the separating.

### Density

- **Default**: comfortable
- **Comfortable**: {"button_height":"48px","input_height":"52px","row_height":"40px to 76px"}

### Responsive

Desktop shows the year across with hours on the right edge. Tablet shortens the labels and keeps both columns. Phone turns the field upright: the future sits on top as open glaze and the crazed half-year runs down the page from today.

### Breakpoints

- **Mobile**: 390px, one column, upright field
- **Phone Max**: 600px
- **Tablet**: 601px to 1199px, shorter labels
- **Desktop**: 1200px and up
- **Wide**: 1440px, content capped and centred
- **Ultrawide**: 2560px, same cap, field still full bleed

## Elevation & Depth

### Shadows

- **Lift**: 0 1px 2px rgb(40 37 31 / .25), 0 16px 32px -14px rgb(40 37 31 / .4), only on an open menu or dialog
- **None**: everything else is flat

## Shapes

### Rounded

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

### Surfaces

- **Treatment**: glaze-field
- **Material**: The crazed glaze is the only texture and it is data: a raster ground fired for the page with the year's cracks drawn over it as a vector layer. Everything else is flat jade-grey with surface wells.
- **Card Style**: No cards. Rows, forms and the ledger sit straight on the glaze, parted by space; the keeper's pass is one surface well.
- **Wells**: Surface #C3D1C1 for inputs, the chosen tab, meter tracks and the pass.
- **Bg Pattern**: the glaze ground, only in the field; text sections are flat

### Borders

- **Default Width**: 0
- **Style**: none
- **Character**: No borders. Cracks are the only lines and each one is a record; the 1px front line marks today. Focus is a 2px jade outline at 3px offset; a focused field draws a 2px ink line under its well.

## Components

### Composition

- Make the first screen the glaze: the craze ground spans it edge to edge, with the copy set on open glaze beside it.
- Place every crack by data: x is the date, y is the hour; never draw a crack that is not a record.
- Keep one persimmon bar per view, under the season in fruit.
- Below the field, show the same glaze closer (by week, by month) before any other content.
- Put the pass and other actions on a single surface well; one filled jade button per view.

### Hierarchy

- One large line per view in Shippori Mincho 600 (40 to 64px) that states a fact.
- Titles in Shippori Mincho 26 to 30px; reading in Zen Kaku Gothic New 17px, labels 14.5px in muted.
- Numbers sit in tabular figures, right aligned, with a small muted unit beneath.
- Ink is for what happened, muted is for what it means.

### Density

Comfortable: 9px day rows, 72 to 120px between sections, 17px reading text, 14.5px table rows.

### Signature Patterns

- The crazed ground: a year-long strip of cracks, hours on the right edge, months along the foot.
- Log a visit: a white crack grows along its own path and the totals step up by one.
- Point to read: hovering the glaze names the day, the hour and the visit count.
- Iron staples: a small bracket glyph on every dated repair.
- The stain table: a month's cracks drawn at their age, darker with time.

## 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-01a0fe73-eb91-7e50-9805-c020b2f9004e/DESIGN.with-shadcn.md`.

Machine-readable companions for automation: `/language/en-01a0fe73-eb91-7e50-9805-c020b2f9004e/shadcn.json` (registry theme), `/language/en-01a0fe73-eb91-7e50-9805-c020b2f9004e/shadcn-components.md` (component recipes) and `/language/en-01a0fe73-eb91-7e50-9805-c020b2f9004e/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 Let every mark be a record and say what it records.
- Do Keep the glaze smooth where nothing happened.
- Do Use one persimmon bar for the season in fruit.
- Do Set copy as facts with numbers and dates.
- Do Style every control explicitly: square, borderless, 2px jade focus.
- Do Draw today's marks in white and age the rest toward iron.
- Do Keep text on open glaze, never on cracks.
- Don't Don't add decorative cracks, blooms or gradient pools.
- Don't Don't box content into cards, tiles or pills.
- Don't Don't use persimmon on more than one thing in a view.
- Don't Don't round rectangles or add drop shadows.
- Don't Don't use default fonts or tracked mono eyebrows.
- Don't Don't describe the design system in the copy.

### Accessibility

Text colours clear AA on the glaze and on surface wells (ink 10.9:1, muted 5.9:1, jade 5.4:1, semantic inks 5.5 to 6.0:1). The field is aria-hidden with the same facts in text; hover readouts are an addition, never the only source. Reduced motion draws new cracks at once.

### Usage Context

Places kept slowly with a record that grows over time: gardens, archives, reading rooms, sanctuaries, membership schemes.

## Imagery Direction

### Pairs With

celadon-glaze

### Art Style Id

en-019efdd9-1129-76b2-9677-bd3f1bc46341

### Summary

A glaze ground fired for the page in the Celadon Glaze technique: cool jade-grey crazed ceramic, open and calm at the left for copy, with no subject and no persimmon. The year's cracks are drawn over it as a vector layer so the raster stays quiet.

### Subjects

- an empty crazed celadon glaze plate
- a glaze ground with an open pale zone at left
- a close detail of crackle with iron staining
- a plain glazed tile edge to edge

### Usage

One full-bleed glaze ground per landing, driven by --hero-image, beneath the data layer; elsewhere only flat jade-grey and wells.

### Avoid

Subjects, scenes, pooled colour and persimmon in the ground; the data layer carries the story.
shadcn/ui theme file
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "celadon",
  "type": "registry:theme",
  "title": "Celadon shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#D3DDD2",
      "foreground": "#28251F",
      "card": "#C3D1C1",
      "card-foreground": "#28251F",
      "popover": "#C3D1C1",
      "popover-foreground": "#28251F",
      "primary": "#28251F",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#48523F",
      "muted-foreground": "#28251F",
      "accent": "#335C4A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3020",
      "border": "#B3C2B1",
      "input": "#B3C2B1",
      "ring": "#335C4A",
      "chart-1": "#28251F",
      "chart-2": "#f4f4f5",
      "chart-3": "#335C4A",
      "chart-4": "#2E5E2D",
      "chart-5": "#6B4812",
      "sidebar": "#C3D1C1",
      "sidebar-foreground": "#28251F",
      "sidebar-primary": "#28251F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#245866",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#B3C2B1",
      "sidebar-ring": "#335C4A",
      "radius": "0px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#28251F",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#335C4A",
      "accent-foreground": "#ffffff",
      "destructive": "#8A3020",
      "border": "#303642",
      "input": "#303642",
      "ring": "#335C4A",
      "chart-1": "#28251F",
      "chart-2": "#f4f4f5",
      "chart-3": "#335C4A",
      "chart-4": "#2E5E2D",
      "chart-5": "#6B4812",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#28251F",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#335C4A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#335C4A",
      "radius": "0px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-01a0fe73-eb91-7e50-9805-c020b2f9004e",
    "slug": "celadon",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "bg",
        "border",
        "error",
        "info",
        "muted",
        "on_accent",
        "season",
        "success",
        "surface",
        "text",
        "warning"
      ],
      "derived": [
        "lift",
        "row_hover",
        "stain"
      ],
      "typography": [
        "base_size",
        "body_font",
        "body_weight",
        "button_weight",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none"
      ],
      "shadows": [
        "lift",
        "none"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "material",
        "treatment",
        "wells"
      ],
      "borders": [
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "crack",
        "duration",
        "easing",
        "philosophy"
      ],
      "controls": [
        "height",
        "radius",
        "well_height"
      ]
    }
  }
}
```

shadcn/ui kit