Salt
A white salt flat at noon, used as an interface.
Its pictures are drawn in Halite.
Made by Claude · Claude Code · claude-opus-5-5
Download DESIGN.md
Tokens, rules and the paired art style Halite.
Preview
Typography
Each face set in this language's own words.
Salt
Salt
A white salt flat at noon, used as an interface.
A white salt flat at noon, used as an interface.
Specification
Philosophy
summary
A white salt flat at noon, used as an interface. The ground is blank white to one razor-thin horizon, and everything on the page is either set on the salt or pressed into it. Black ink sets the words, a cool steel grey carries what is quiet, and one stamp red is kept for verdicts: a rubber stamp pressed onto a tasting card. Cards stand on the white like place cards on a long table, with a pale cool shadow and never a border, and the one huge word on each page is pressed into the ground instead of printed on it.
Tokens
colors16
typography4
- heading font
- Gloock
- body font
- Familjen Grotesk
- mono font
- Chivo Mono
- google fonts url
- https://fonts.googleapis.com/css2?family=Gloock&family=Familjen+Grotesk:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Chivo+Mono:wght@400;500;700&display=swap
radii2
- none
- 0px
- full
- 9999px
spacing8
- base
- 8px
- xs
- 4px
- sm
- 8px
- md
- 16px
- lg
- 24px
- xl
- 48px
- xxl
- 96px
- section
- 160px
Rules
components
- **Navigation.** The wordmark in Gloock 28px on the left; links in Familjen Grotesk 500 at 17px with 36px to 40px between them, the current one underlined in ink (2px, 8px below the baseline); on the right a Chivo Mono date line (`SUN 04 OCT · 13:42`) and one secondary button. The horizon runs under it. - **Buttons.** Primary: ink fill, white Familjen Grotesk 600 at 17px, 52px tall, 28px side padding, radius 0, one per view. Stamp: the one red button, white capitals in Familjen Grotesk 700, used only for the action that stamps a verdict. Secondary: white, ink text, the standing shadow, no border. Tertiary: an ink word with a 1px underline 4px below. Hover lifts 2px; active presses 1px and the ink lightens to `#2A2C30`; focus draws a 2px ink outline 3px outside; disabled is a `well` fill with `muted` text and no shadow. Labels never wrap. - **Inputs, selects and text areas.** A `well` fill pressed into the salt with a 1px `steel` line along its foot, no border, radius 0, 52px tall, Familjen Grotesk 18px in ink. The label sits above in Chivo Mono capitals in `muted`; help text sits below at 15px. Focus keeps the well and adds the 2px ink outline. An error turns the label red, adds a 2px red line along the well's foot and states the fix in one sentence in ink. Selects draw their own steel chevron; every control sets `appearance: none`. - **Checkboxes, radios and toggles.** A 22px white square with a 1.5px `muted` ring for a checkbox (ink fill and a white tick when on), a 22px round one for a radio (an ink dot inside the ring when on), and a 44 by 24px round track with a `muted` ring and a `muted` knob for a toggle (the track turns ink and the knob white when on). The rings keep every control above 3:1 against the salt; nothing else in Salt has a ring. - **Tasting card.** The core object. A Chivo Mono header (`COURSE 4 OF 9 · 13:42`), the dish in Gloock 32px to 48px, notes in Familjen Grotesk 18px in `text_2`, a footer with the best-before date in Chivo Mono, and a stamp area at the lower right where the verdict lands, inside the card or overlapping its right edge, never over its words. One card holds one course and at most one stamp. - **Verdict stamp.** The word in Familjen Grotesk 700 capitals inside a 3px frame with a 1px rule 4px inside it, the date line under the word in Chivo Mono. TASTE is stamp red; SLOP is ink. The impression is never solid: an SVG turbulence filter roughens the edges and lets the white show through in small specks, at 92% opacity. It lands with a 220ms press (scale 1.3 to 0.96 to 1). - **Place card.** A folded tent standing on the white: a guest's name in Gloock 24px, the seat and role in Chivo Mono under it, an initial disc on the left. Place cards name people: guests, critics, jurors, authors. - **Pressed word.** One per page, in Gloock at 160px to 320px, set in `well` with the pressed shadow and hidden from screen readers. It repeats something the page already says in ink, the course numeral or the verdict, so it decorates without carrying meaning. - **Course table.** Rows 64px tall in Familjen Grotesk 500 at 17px; number and time in Chivo Mono; the verdict column shows a small stamp; rows are separated by pressed grooves, never vertical lines; the hovered row is a well. Filter tabs sit above it as words with a Chivo Mono count, the chosen one underlined in ink. - **Best-before marker.** The date in Chivo Mono on a `peach` highlighter fill, only when a verdict turns within 48 hours. - **Toast.** A white card standing at the lower left with an ink sentence and a Chivo Mono time. A filed verdict shows its small stamp; nothing else is coloured. - **Questions.** Native `details` and `summary`: the question in Familjen Grotesk 600 at 20px, a steel plus that turns 45deg when open, a pressed groove between questions.
Layout
summary
The page is mostly empty salt, and the emptiness is the layout. - **Negative space first.** At least half of every first screen is empty white. Text never sits in the middle of the page: prose and forms take a column on the left or right third (prose 62ch, forms 560px, cards 520px to 640px), and the other two thirds stay open or hold one picture or one pressed word. - **Grid.** 12 columns with 24px gutters, outer margins of 96px from 1280px up, 48px on tablets and 20px on phones. Grid children carry `min-width: 0`; columns use `minmax(0, 1fr)`. - **Rhythm.** Sections sit 160px apart (96px on phones). Cards pad 48px (28px on phones), with at least 40px above any title, so no title is ever stuck to the top of its card. Space separates groups; a pressed groove separates rows; nothing else divides. - **The horizon.** One line per page, full bleed, directly under the header: 1px of `groove` with 1px of white beneath it. A landing that opens on a picture draws no line: the picture's own horizon is the page's horizon. Nothing else on the page is a drawn line. - **Pictures.** A landing opens on one full-bleed picture in the paired art style, its subject on one third and its empty white sky on the other two. On wide screens the headline is set in that empty sky; below 1024px the picture shows its subject and the headline moves underneath on the white. - **Phones (390px).** One column; place cards scroll sideways in a row; the course table becomes a list of number, dish and verdict; the pressed word drops to about a third of the screen's width and moves below the text it sat beside; stamps shrink and keep their tilt. Nothing scrolls the page sideways.
Guidance
Do
- leave at least half of every first screen empty white.
- keep red for stamp ink: verdicts, the one stamping action and refusals.
- stand cards on the salt with the cool shadow, and press words, wells and grooves into it.
- give every card one course, one note and at most one stamp.
- set every label, time and count in Chivo Mono capitals.
- keep exactly one horizon per page: the line under the header, or the hero picture's own horizon.
- style every control yourself, from the checkbox to the select chevron.
Avoid
- draw borders around cards, inputs or tables, and don't use grey boxes.
- use a second accent colour, a gradient, a glow or a tinted background.
- stamp text that is still being read; a stamp overlaps an edge or empty space.
- put more than one pressed word on a page, or let one carry meaning by itself.
- round rectangles, set Gloock in bold, or set display type below 22px.
- centre a lone paragraph in the middle of the page.
- put emoji on buttons or words inside pictures.
Imagery
pairs with
halite
art style id
en-01a1173b-f1ea-7220-92bd-2b9a4242d99e
Katagami spec file
# Salt ## Philosophy A white salt flat at noon, used as an interface. The ground is blank white to one razor-thin horizon, and everything on the page is either set on the salt or pressed into it. Black ink sets the words, a cool steel grey carries what is quiet, and one stamp red is kept for verdicts: a rubber stamp pressed onto a tasting card. Cards stand on the white like place cards on a long table, with a pale cool shadow and never a border, and the one huge word on each page is pressed into the ground instead of printed on it. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#FFFFFF` | | surface | `#FFFFFF` | | well | `#F2F4F6` | | text | `#0B0B0C` | | text_2 | `#3B3F45` | | muted | `#5F656D` | | steel | `#A7AEB6` | | groove | `#E3E7EB` | | shadow | `#C7D0DA` | | accent | `#D52B1E` | | on_accent | `#FFFFFF` | | peach | `#F7B994` | | success | `#0B0B0C` | | warning | `#F7B994` | | error | `#D52B1E` | | info | `#5F656D` | ### Typography - **Heading Font**: Gloock - **Body Font**: Familjen Grotesk - **Mono Font**: Chivo Mono - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Gloock&family=Familjen+Grotesk:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Chivo+Mono:wght@400;500;700&display=swap ### Radii - **None**: 0px - **Full**: 9999px ### Spacing - **Base**: 8px - **Xs**: 4px - **Sm**: 8px - **Md**: 16px - **Lg**: 24px - **Xl**: 48px - **Xxl**: 96px - **Section**: 160px ## Rules ### Components - **Navigation.** The wordmark in Gloock 28px on the left; links in Familjen Grotesk 500 at 17px with 36px to 40px between them, the current one underlined in ink (2px, 8px below the baseline); on the right a Chivo Mono date line (`SUN 04 OCT · 13:42`) and one secondary button. The horizon runs under it. - **Buttons.** Primary: ink fill, white Familjen Grotesk 600 at 17px, 52px tall, 28px side padding, radius 0, one per view. Stamp: the one red button, white capitals in Familjen Grotesk 700, used only for the action that stamps a verdict. Secondary: white, ink text, the standing shadow, no border. Tertiary: an ink word with a 1px underline 4px below. Hover lifts 2px; active presses 1px and the ink lightens to `#2A2C30`; focus draws a 2px ink outline 3px outside; disabled is a `well` fill with `muted` text and no shadow. Labels never wrap. - **Inputs, selects and text areas.** A `well` fill pressed into the salt with a 1px `steel` line along its foot, no border, radius 0, 52px tall, Familjen Grotesk 18px in ink. The label sits above in Chivo Mono capitals in `muted`; help text sits below at 15px. Focus keeps the well and adds the 2px ink outline. An error turns the label red, adds a 2px red line along the well's foot and states the fix in one sentence in ink. Selects draw their own steel chevron; every control sets `appearance: none`. - **Checkboxes, radios and toggles.** A 22px white square with a 1.5px `muted` ring for a checkbox (ink fill and a white tick when on), a 22px round one for a radio (an ink dot inside the ring when on), and a 44 by 24px round track with a `muted` ring and a `muted` knob for a toggle (the track turns ink and the knob white when on). The rings keep every control above 3:1 against the salt; nothing else in Salt has a ring. - **Tasting card.** The core object. A Chivo Mono header (`COURSE 4 OF 9 · 13:42`), the dish in Gloock 32px to 48px, notes in Familjen Grotesk 18px in `text_2`, a footer with the best-before date in Chivo Mono, and a stamp area at the lower right where the verdict lands, inside the card or overlapping its right edge, never over its words. One card holds one course and at most one stamp. - **Verdict stamp.** The word in Familjen Grotesk 700 capitals inside a 3px frame with a 1px rule 4px inside it, the date line under the word in Chivo Mono. TASTE is stamp red; SLOP is ink. The impression is never solid: an SVG turbulence filter roughens the edges and lets the white show through in small specks, at 92% opacity. It lands with a 220ms press (scale 1.3 to 0.96 to 1). - **Place card.** A folded tent standing on the white: a guest's name in Gloock 24px, the seat and role in Chivo Mono under it, an initial disc on the left. Place cards name people: guests, critics, jurors, authors. - **Pressed word.** One per page, in Gloock at 160px to 320px, set in `well` with the pressed shadow and hidden from screen readers. It repeats something the page already says in ink, the course numeral or the verdict, so it decorates without carrying meaning. - **Course table.** Rows 64px tall in Familjen Grotesk 500 at 17px; number and time in Chivo Mono; the verdict column shows a small stamp; rows are separated by pressed grooves, never vertical lines; the hovered row is a well. Filter tabs sit above it as words with a Chivo Mono count, the chosen one underlined in ink. - **Best-before marker.** The date in Chivo Mono on a `peach` highlighter fill, only when a verdict turns within 48 hours. - **Toast.** A white card standing at the lower left with an ink sentence and a Chivo Mono time. A filed verdict shows its small stamp; nothing else is coloured. - **Questions.** Native `details` and `summary`: the question in Familjen Grotesk 600 at 20px, a steel plus that turns 45deg when open, a pressed groove between questions. ## Layout ### Summary The page is mostly empty salt, and the emptiness is the layout. - **Negative space first.** At least half of every first screen is empty white. Text never sits in the middle of the page: prose and forms take a column on the left or right third (prose 62ch, forms 560px, cards 520px to 640px), and the other two thirds stay open or hold one picture or one pressed word. - **Grid.** 12 columns with 24px gutters, outer margins of 96px from 1280px up, 48px on tablets and 20px on phones. Grid children carry `min-width: 0`; columns use `minmax(0, 1fr)`. - **Rhythm.** Sections sit 160px apart (96px on phones). Cards pad 48px (28px on phones), with at least 40px above any title, so no title is ever stuck to the top of its card. Space separates groups; a pressed groove separates rows; nothing else divides. - **The horizon.** One line per page, full bleed, directly under the header: 1px of `groove` with 1px of white beneath it. A landing that opens on a picture draws no line: the picture's own horizon is the page's horizon. Nothing else on the page is a drawn line. - **Pictures.** A landing opens on one full-bleed picture in the paired art style, its subject on one third and its empty white sky on the other two. On wide screens the headline is set in that empty sky; below 1024px the picture shows its subject and the headline moves underneath on the white. - **Phones (390px).** One column; place cards scroll sideways in a row; the course table becomes a list of number, dish and verdict; the pressed word drops to about a third of the screen's width and moves below the text it sat beside; stamps shrink and keep their tilt. Nothing scrolls the page sideways. ## Guidance ### Do - leave at least half of every first screen empty white. - keep red for stamp ink: verdicts, the one stamping action and refusals. - stand cards on the salt with the cool shadow, and press words, wells and grooves into it. - give every card one course, one note and at most one stamp. - set every label, time and count in Chivo Mono capitals. - keep exactly one horizon per page: the line under the header, or the hero picture's own horizon. - style every control yourself, from the checkbox to the select chevron. ### Don't - draw borders around cards, inputs or tables, and don't use grey boxes. - use a second accent colour, a gradient, a glow or a tinted background. - stamp text that is still being read; a stamp overlaps an edge or empty space. - put more than one pressed word on a page, or let one carry meaning by itself. - round rectangles, set Gloock in bold, or set display type below 22px. - centre a lone paragraph in the middle of the page. - put emoji on buttons or words inside pictures. ## Imagery Direction ### Pairs With halite ### Art Style Id en-01a1173b-f1ea-7220-92bd-2b9a4242d99e
DESIGN.md file
---
version: "alpha"
name: "Salt"
description: "A white salt flat at noon, used as an interface. The ground is blank white to one razor-thin horizon, and everything on the page is either set on the salt or pressed into it. Black ink sets the words, a cool steel grey carries what is qu..."
colors:
bg: "#FFFFFF"
surface: "#FFFFFF"
well: "#F2F4F6"
text: "#0B0B0C"
text_2: "#3B3F45"
muted: "#5F656D"
steel: "#A7AEB6"
groove: "#E3E7EB"
shadow: "#C7D0DA"
accent: "#D52B1E"
on_accent: "#FFFFFF"
peach: "#F7B994"
success: "#0B0B0C"
warning: "#F7B994"
error: "#D52B1E"
info: "#5F656D"
typography:
headline-lg:
fontFamily: "Gloock"
fontSize: "1.953rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.02em"
headline-md:
fontFamily: "Gloock"
fontSize: "1.563rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.02em"
body-md:
fontFamily: "Familjen Grotesk"
fontSize: "16px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.02em"
label-md:
fontFamily: "Chivo Mono"
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: "48px"
xxl: "96px"
section: "160px"
components:
color-reference-bg:
backgroundColor: "{colors.bg}"
color-reference-surface:
backgroundColor: "{colors.surface}"
color-reference-well:
backgroundColor: "{colors.well}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-text_2:
backgroundColor: "{colors.text_2}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-steel:
backgroundColor: "{colors.steel}"
color-reference-groove:
backgroundColor: "{colors.groove}"
color-reference-shadow:
backgroundColor: "{colors.shadow}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-on_accent:
backgroundColor: "{colors.on_accent}"
color-reference-peach:
backgroundColor: "{colors.peach}"
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"
---
# Salt
## Overview
A white salt flat at noon, used as an interface. The ground is blank white to one razor-thin horizon, and everything on the page is either set on the salt or pressed into it. Black ink sets the words, a cool steel grey carries what is quiet, and one stamp red is kept for verdicts: a rubber stamp pressed onto a tasting card. Cards stand on the white like place cards on a long table, with a pale cool shadow and never a border, and the one huge word on each page is pressed into the ground instead of printed on it.
## 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 | `#FFFFFF` |
| surface | `#FFFFFF` |
| well | `#F2F4F6` |
| text | `#0B0B0C` |
| text_2 | `#3B3F45` |
| muted | `#5F656D` |
| steel | `#A7AEB6` |
| groove | `#E3E7EB` |
| shadow | `#C7D0DA` |
| accent | `#D52B1E` |
| on_accent | `#FFFFFF` |
| peach | `#F7B994` |
| success | `#0B0B0C` |
| warning | `#F7B994` |
| error | `#D52B1E` |
| info | `#5F656D` |
## Typography
Load the fonts from Google Fonts: https://fonts.googleapis.com/css2?family=Gloock&family=Familjen+Grotesk:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Chivo+Mono:wght@400;500;700&display=swap
- **Headline-Lg**: Gloock, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Gloock, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Familjen Grotesk, 16px, weight 400, line-height 1.5.
- **Label-Md**: Chivo Mono, 0.75rem, weight 600, line-height 1.
## Layout
### Spacing Tokens
- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `16px`
- **Lg**: `24px`
- **Xl**: `48px`
- **Xxl**: `96px`
- **Section**: `160px`
### Summary
The page is mostly empty salt, and the emptiness is the layout.
- **Negative space first.** At least half of every first screen is empty white. Text never sits in the middle of the page: prose and forms take a column on the left or right third (prose 62ch, forms 560px, cards 520px to 640px), and the other two thirds stay open or hold one picture or one pressed word.
- **Grid.** 12 columns with 24px gutters, outer margins of 96px from 1280px up, 48px on tablets and 20px on phones. Grid children carry `min-width: 0`; columns use `minmax(0, 1fr)`.
- **Rhythm.** Sections sit 160px apart (96px on phones). Cards pad 48px (28px on phones), with at least 40px above any title, so no title is ever stuck to the top of its card. Space separates groups; a pressed groove separates rows; nothing else divides.
- **The horizon.** One line per page, full bleed, directly under the header: 1px of `groove` with 1px of white beneath it. A landing that opens on a picture draws no line: the picture's own horizon is the page's horizon. Nothing else on the page is a drawn line.
- **Pictures.** A landing opens on one full-bleed picture in the paired art style, its subject on one third and its empty white sky on the other two. On wide screens the headline is set in that empty sky; below 1024px the picture shows its subject and the headline moves underneath on the white.
- **Phones (390px).** One column; place cards scroll sideways in a row; the course table becomes a list of number, dish and verdict; the pressed word drops to about a third of the screen's width and moves below the text it sat beside; stamps shrink and keep their tilt. Nothing scrolls the page sideways.
## Shapes
### Rounded
- **None**: `0px`
- **Full**: `9999px`
## Components
### Components
- **Navigation.** The wordmark in Gloock 28px on the left; links in Familjen Grotesk 500 at 17px with 36px to 40px between them, the current one underlined in ink (2px, 8px below the baseline); on the right a Chivo Mono date line (`SUN 04 OCT · 13:42`) and one secondary button. The horizon runs under it.
- **Buttons.** Primary: ink fill, white Familjen Grotesk 600 at 17px, 52px tall, 28px side padding, radius 0, one per view. Stamp: the one red button, white capitals in Familjen Grotesk 700, used only for the action that stamps a verdict. Secondary: white, ink text, the standing shadow, no border. Tertiary: an ink word with a 1px underline 4px below. Hover lifts 2px; active presses 1px and the ink lightens to `#2A2C30`; focus draws a 2px ink outline 3px outside; disabled is a `well` fill with `muted` text and no shadow. Labels never wrap.
- **Inputs, selects and text areas.** A `well` fill pressed into the salt with a 1px `steel` line along its foot, no border, radius 0, 52px tall, Familjen Grotesk 18px in ink. The label sits above in Chivo Mono capitals in `muted`; help text sits below at 15px. Focus keeps the well and adds the 2px ink outline. An error turns the label red, adds a 2px red line along the well's foot and states the fix in one sentence in ink. Selects draw their own steel chevron; every control sets `appearance: none`.
- **Checkboxes, radios and toggles.** A 22px white square with a 1.5px `muted` ring for a checkbox (ink fill and a white tick when on), a 22px round one for a radio (an ink dot inside the ring when on), and a 44 by 24px round track with a `muted` ring and a `muted` knob for a toggle (the track turns ink and the knob white when on). The rings keep every control above 3:1 against the salt; nothing else in Salt has a ring.
- **Tasting card.** The core object. A Chivo Mono header (`COURSE 4 OF 9 · 13:42`), the dish in Gloock 32px to 48px, notes in Familjen Grotesk 18px in `text_2`, a footer with the best-before date in Chivo Mono, and a stamp area at the lower right where the verdict lands, inside the card or overlapping its right edge, never over its words. One card holds one course and at most one stamp.
- **Verdict stamp.** The word in Familjen Grotesk 700 capitals inside a 3px frame with a 1px rule 4px inside it, the date line under the word in Chivo Mono. TASTE is stamp red; SLOP is ink. The impression is never solid: an SVG turbulence filter roughens the edges and lets the white show through in small specks, at 92% opacity. It lands with a 220ms press (scale 1.3 to 0.96 to 1).
- **Place card.** A folded tent standing on the white: a guest's name in Gloock 24px, the seat and role in Chivo Mono under it, an initial disc on the left. Place cards name people: guests, critics, jurors, authors.
- **Pressed word.** One per page, in Gloock at 160px to 320px, set in `well` with the pressed shadow and hidden from screen readers. It repeats something the page already says in ink, the course numeral or the verdict, so it decorates without carrying meaning.
- **Course table.** Rows 64px tall in Familjen Grotesk 500 at 17px; number and time in Chivo Mono; the verdict column shows a small stamp; rows are separated by pressed grooves, never vertical lines; the hovered row is a well. Filter tabs sit above it as words with a Chivo Mono count, the chosen one underlined in ink.
- **Best-before marker.** The date in Chivo Mono on a `peach` highlighter fill, only when a verdict turns within 48 hours.
- **Toast.** A white card standing at the lower left with an ink sentence and a Chivo Mono time. A filed verdict shows its small stamp; nothing else is coloured.
- **Questions.** Native `details` and `summary`: the question in Familjen Grotesk 600 at 20px, a steel plus that turns 45deg when open, a pressed groove between questions.
## 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-01a11744-358b-7cf2-849a-5de5ddf0acdd/DESIGN.with-shadcn.md`.
Machine-readable companions for automation: `/language/en-01a11744-358b-7cf2-849a-5de5ddf0acdd/shadcn.json` (registry theme), `/language/en-01a11744-358b-7cf2-849a-5de5ddf0acdd/shadcn-components.md` (component recipes) and `/language/en-01a11744-358b-7cf2-849a-5de5ddf0acdd/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 leave at least half of every first screen empty white.
- Do keep red for stamp ink: verdicts, the one stamping action and refusals.
- Do stand cards on the salt with the cool shadow, and press words, wells and grooves into it.
- Do give every card one course, one note and at most one stamp.
- Do set every label, time and count in Chivo Mono capitals.
- Do keep exactly one horizon per page: the line under the header, or the hero picture's own horizon.
- Do style every control yourself, from the checkbox to the select chevron.
- Don't draw borders around cards, inputs or tables, and don't use grey boxes.
- Don't use a second accent colour, a gradient, a glow or a tinted background.
- Don't stamp text that is still being read; a stamp overlaps an edge or empty space.
- Don't put more than one pressed word on a page, or let one carry meaning by itself.
- Don't round rectangles, set Gloock in bold, or set display type below 22px.
- Don't centre a lone paragraph in the middle of the page.
- Don't put emoji on buttons or words inside pictures.
## Imagery Direction
### Pairs With
halite
### Art Style Id
en-01a1173b-f1ea-7220-92bd-2b9a4242d99e
shadcn/ui theme file
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "salt",
"type": "registry:theme",
"title": "Salt shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#FFFFFF",
"foreground": "#0B0B0C",
"card": "#FFFFFF",
"card-foreground": "#0B0B0C",
"popover": "#FFFFFF",
"popover-foreground": "#0B0B0C",
"primary": "#0B0B0C",
"primary-foreground": "#ffffff",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#5F656D",
"muted-foreground": "#0B0B0C",
"accent": "#D52B1E",
"accent-foreground": "#ffffff",
"destructive": "#D52B1E",
"border": "#e4e4e7",
"input": "#e4e4e7",
"ring": "#D52B1E",
"chart-1": "#0B0B0C",
"chart-2": "#f4f4f5",
"chart-3": "#D52B1E",
"chart-4": "#0B0B0C",
"chart-5": "#F7B994",
"sidebar": "#FFFFFF",
"sidebar-foreground": "#0B0B0C",
"sidebar-primary": "#0B0B0C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#5F656D",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#e4e4e7",
"sidebar-ring": "#D52B1E",
"radius": "0.625rem"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#0B0B0C",
"primary-foreground": "#ffffff",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#D52B1E",
"accent-foreground": "#ffffff",
"destructive": "#D52B1E",
"border": "#303642",
"input": "#303642",
"ring": "#D52B1E",
"chart-1": "#0B0B0C",
"chart-2": "#f4f4f5",
"chart-3": "#D52B1E",
"chart-4": "#0B0B0C",
"chart-5": "#F7B994",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#0B0B0C",
"sidebar-primary-foreground": "#ffffff",
"sidebar-accent": "#D52B1E",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#D52B1E",
"radius": "0.625rem"
}
},
"meta": {
"source": "katagami",
"languageId": "en-01a11744-358b-7cf2-849a-5de5ddf0acdd",
"slug": "salt",
"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",
"error",
"groove",
"info",
"muted",
"on_accent",
"peach",
"shadow",
"steel",
"success",
"surface",
"text",
"text_2",
"warning",
"well"
],
"typography": [
"body_font",
"google_fonts_url",
"heading_font",
"mono_font"
],
"radii": [
"full",
"none"
],
"spacing": [
"base",
"lg",
"md",
"section",
"sm",
"xl",
"xs",
"xxl"
]
}
}
}
```