Typography
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.
Portable DESIGN.md source of truth for most agents and apps.
Stack the screen as full-bleed horizontal colour bands that meet at luminous waterline seams, not vellum panels floating on paper. The hero is one immersive saturated wash filling the viewport with the headline in its calm upper breathing zone. Below, return to rich stacked sections, each a band giving way to the next at a charged cyan seam. Reserve the brightest waterline for the active band, the primary action, and the live value; everything quiet drops to a flat wash or plain ink. On ultra-wide, cap and centre the content column; only the hero and band grounds span 100vw.
Headlines use a bold expanded grotesque (Archivo) with a single highlighter colour-pop on one word — no serif, no italic swap. Body and controls use Inter for legibility; values, timestamps, and metadata use IBM Plex Mono. The highest hierarchy combines type scale, brighter pigment concentration at the waterline, and the lit edge — not larger blocks of chrome. Alerts and selections intensify pigment while keeping the soft edge logic: the lit cyan edge for active, the warm coral backrun for attention.
Moderate density with generous breathing room between bands and compact, precise rhythm within each card. Spacious enough to feel the humid depth, dense enough to run a working shift.
The waterline — two washes meet at a horizontal boundary and pool into a bright glowing edge (a 2px cyan core with a feathered diffusion and an occasional warm backrun). It maps onto semantic roles: the cyan core is --accent (the lit, active, primary edge), the warm backrun is --accent-2 (warning/attention), the bands are the surface roles — so the mechanic recolours on palette swap. Meters fill to a waterline; the live row lights its leading edge; sections meet at waterline seams.
Full-bleed horizontal bands; a capped, centred content column within each band on ultra-wide.
Generous between bands; the dark ground reads as humid depth, not empty paper.
Macro-spacious, micro-precise.
Single column on mobile; hero and section headlines shrink with clamp() and wrap, never clipping the 390px edge; nav wraps or collapses; grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing.
wetwash
Saturated wet-into-wet watercolour applied to the wet edge itself — two washes meeting at a luminous waterline on deep paper, with warm backruns blooming off the boundary. Humid jewel-tones, never muddy.
One full-bleed hero wash with a calm upper breathing zone for the headline overlay; bloom and granulation read against the dark ground.
# Tideline ## Philosophy Tideline is a crafted-sheet interface system painted in saturated digital watercolor, reconceived for the dark. It takes the source idea — a product that feels authored by a hand, with wet pigment, bloom, and feathered edge, yet never goes fuzzy or imprecise — and changes its unit from the point to the edge. When wet pigment is dropped into wet paper, two washes do not blend evenly; they meet along a waterline and pool there, granulating and blooming into a bright glowing boundary. That wet edge is the whole system. Tideline organizes the screen as horizontal strata of colour that meet at luminous waterlines, and reserves the brightest charged edge for the moments that matter: the primary action, the active band, the live value. The ground is deep indigo wet paper, never white, so the bright waterlines read like light caught on a wet surface and the quiet reads as depth rather than emptiness. Type is a bold expanded grotesque with a single colour-pop on one headline word — no serif, no italic swap. The result is humid, luminous, and disciplined: soft where it should feel human, exact where a number has to be right. ### Values - Read by the edge: the most charged, brightest pigment always sits exactly where the day turns — the active state, the primary action, the value that matters. - Depth, not emptiness: the dark ground is wet paper at night; the quiet is humid and deep, and the bright waterlines read as light caught on water. - Authored by a hand, exact where it counts: surfaces bloom and feather like pigment on stock, while type, spacing, and controls stay disciplined enough to run a working shift on. - Humid, never muddy: jewel-tone washes layered as transparent glazes where the lower colour glows up through the upper; brilliance is preserved, never greyed. - Warmth means watch this: the warm coral backrun is reserved for attention — a warning, a turning current — and never used as everyday decoration. ### Anti-Values - Defaulting to a white or light editorial ground — that is the sibling refinement's territory, not this language's. - Hairline borders or accent edges to separate content instead of a charged waterline seam. - Serif or italic-swap headlines; the oversized italic serif and the regular-serif/italic-serif word flip. - Muddy, greyed, or synthetic-glossy colour; gradients used as screen-light rather than pigment dilution. - Decorative warmth everywhere, so the coral backrun stops meaning attention. ### Visual Character - Waterline seams: sections and rows give way to one another at a glowing cyan edge (a 2px lit core plus a feathered halo), never a sterile hairline. - The lit edge: the active band, selected row, live tab, and primary button all carry the bright waterline with its soft diffusion; quiet elements drop to a flat wash or plain ink. - Warm backruns: only warnings and attention bleed a coral backrun off their edge. - Meters and progress fill to a waterline — the leading edge is the bright tideline, the trailing fill the calmer wash behind it. - Granulating wet swatches: each accent is a wash pooling at a waterline with fine speckled texture settling into the dark paper. - Bold expanded grotesque headlines with a single highlighter colour-pop on one word; values and timestamps in restrained monospace. ## Tokens ### Colors | Name | Value | |------|-------| | bg | `#0A1326` | | surface | `#12203D` | | surface-2 | `#182B4F` | | surface-3 | `#1F365F` | | text | `#F4F7FB` | | muted | `#9AB0CF` | | border | `#243556` | | accent | `#3DD4E8` | | accent_2 | `#FF6A3D` | | accent_3 | `#FFC24A` | | on_accent | `#071021` | | success | `#39C2A0` | | warning | `#FFC24A` | | error | `#FF6A6A` | | info | `#5AB8E8` | ### Typography - **Base Size**: 17px - **Body Font**: Inter - **Heading Font**: Archivo - **Mono Font**: IBM Plex Mono - **Heading Weight**: 900 - **Heading Transform**: none - **Letter Spacing**: -0.03em - **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800;900&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap ### Radii - **None**: 0px - **Sm**: 16px - **Md**: 24px - **Pill**: 9999px ### Shadows - **Glow**: 0 0 24px 2px color-mix(in srgb, var(--accent) 55%, transparent) ### Spacing - **Base**: 8px - **Scale**: [4,8,12,16,24,32,48,64,96,128] ### Surfaces - **Ground**: #0A1326 - **Panel**: #12203D - **Raised**: #182B4F - **Deep**: #1F365F ### Borders - **Policy**: avoid; separate with a glowing waterline seam, not hairlines ### Motion - **Default**: wash bleed-in from the seam outward - **Reduced Motion**: settled state, no JS required ## Rules ### Composition Stack the screen as full-bleed horizontal colour bands that meet at luminous waterline seams, not vellum panels floating on paper. The hero is one immersive saturated wash filling the viewport with the headline in its calm upper breathing zone. Below, return to rich stacked sections, each a band giving way to the next at a charged cyan seam. Reserve the brightest waterline for the active band, the primary action, and the live value; everything quiet drops to a flat wash or plain ink. On ultra-wide, cap and centre the content column; only the hero and band grounds span 100vw. ### Hierarchy Headlines use a bold expanded grotesque (Archivo) with a single highlighter colour-pop on one word — no serif, no italic swap. Body and controls use Inter for legibility; values, timestamps, and metadata use IBM Plex Mono. The highest hierarchy combines type scale, brighter pigment concentration at the waterline, and the lit edge — not larger blocks of chrome. Alerts and selections intensify pigment while keeping the soft edge logic: the lit cyan edge for active, the warm coral backrun for attention. ### Density Moderate density with generous breathing room between bands and compact, precise rhythm within each card. Spacious enough to feel the humid depth, dense enough to run a working shift. ### Signature The waterline — two washes meet at a horizontal boundary and pool into a bright glowing edge (a 2px cyan core with a feathered diffusion and an occasional warm backrun). It maps onto semantic roles: the cyan core is --accent (the lit, active, primary edge), the warm backrun is --accent-2 (warning/attention), the bands are the surface roles — so the mechanic recolours on palette swap. Meters fill to a waterline; the live row lights its leading edge; sections meet at waterline seams. ### Signature Patterns - Waterline seams between sections and rows: a 2px cyan core with a feathered halo, never a hairline border. - The active band, selected row, live tab, and primary button light their cyan waterline; quiet elements drop to a flat wash. - Warm coral backruns bleed off the edge only on warnings and attention. - Meters and progress fill to a bright cyan tideline at their leading edge. - Granulating wet swatches where each accent pools at a waterline with speckled texture on the dark paper. ## Layout ### Grid Full-bleed horizontal bands; a capped, centred content column within each band on ultra-wide. ### Whitespace Generous between bands; the dark ground reads as humid depth, not empty paper. ### Density Macro-spacious, micro-precise. ### Responsive Single column on mobile; hero and section headlines shrink with clamp() and wrap, never clipping the 390px edge; nav wraps or collapses; grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing. ### Breakpoints - **Mobile**: 390px - **Tablet**: 760px - **Desktop**: 1040px - **Wide**: 1440px - **Ultrawide**: 2560px ## Guidance ### Do - Build on the deep indigo wet-paper ground; let the bright waterlines read like light on water. - Separate content with a glowing waterline seam and space, never borders. - Light the active or primary element's waterline; keep everything quiet a flat wash. - Reserve the warm coral backrun for warnings and attention only. - Use a bold grotesque headline with one highlighter colour-pop word; keep values in monospace. ### Don't - Default to a white or light editorial ground. - Use hairline borders or accent edges to divide content. - Use serif headlines or the regular-serif/italic-serif word swap. - Let colour go muddy or grey, or use gradients as synthetic screen-light. - Scatter warm backruns as everyday decoration. ### Accessibility Humid near-white text (#F4F7FB) on deep indigo (#0A1326) holds high contrast; muted sea-mist is reserved for secondary text on dark surfaces. The lit waterline marks state with both colour and position (a leading edge), not colour alone. Body 17px+; motion respects prefers-reduced-motion and the settled state renders with no JavaScript. ## Imagery Direction ### Pairs With wetwash ### Summary Saturated wet-into-wet watercolour applied to the wet edge itself — two washes meeting at a luminous waterline on deep paper, with warm backruns blooming off the boundary. Humid jewel-tones, never muddy. ### Subjects - estuary water at the turn - two washes meeting at a tideline - coastal depth and current fields - wet pigment pooling and granulating along an edge ### Usage One full-bleed hero wash with a calm upper breathing zone for the headline overlay; bloom and granulation read against the dark ground.
---
version: "alpha"
name: "Tideline"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
bg: "#0A1326"
surface: "#12203D"
surface-2: "#182B4F"
surface-3: "#1F365F"
text: "#F4F7FB"
muted: "#9AB0CF"
border: "#243556"
accent: "#3DD4E8"
accent_2: "#FF6A3D"
accent_3: "#FFC24A"
on_accent: "#071021"
success: "#39C2A0"
warning: "#FFC24A"
error: "#FF6A6A"
info: "#5AB8E8"
typography:
headline-lg:
fontFamily: "Archivo"
fontSize: "2.075rem"
fontWeight: 700
lineHeight: 1.1
letterSpacing: "-0.03em"
headline-md:
fontFamily: "Archivo"
fontSize: "1.66rem"
fontWeight: 600
lineHeight: 1.15
letterSpacing: "-0.03em"
body-md:
fontFamily: "Inter"
fontSize: "17px"
fontWeight: 400
lineHeight: 1.5
letterSpacing: "-0.03em"
label-md:
fontFamily: "IBM Plex Mono"
fontSize: "0.75rem"
fontWeight: 600
lineHeight: 1
letterSpacing: "0.08em"
rounded:
none: "0px"
sm: "16px"
md: "24px"
pill: "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-surface-2:
backgroundColor: "{colors.surface-2}"
color-reference-surface-3:
backgroundColor: "{colors.surface-3}"
color-reference-text:
backgroundColor: "{colors.text}"
color-reference-muted:
backgroundColor: "{colors.muted}"
color-reference-border:
backgroundColor: "{colors.border}"
color-reference-accent:
backgroundColor: "{colors.accent}"
color-reference-accent_2:
backgroundColor: "{colors.accent_2}"
color-reference-accent_3:
backgroundColor: "{colors.accent_3}"
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}"
button-primary:
backgroundColor: "{colors.accent}"
textColor: "#000000"
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"
---
# Tideline
## Overview
Tideline is a crafted-sheet interface system painted in saturated digital watercolor, reconceived for the dark. It takes the source idea — a product that feels authored by a hand, with wet pigment, bloom, and feathered edge, yet never goes fuzzy or imprecise — and changes its unit from the point to the edge. When wet pigment is dropped into wet paper, two washes do not blend evenly; they meet along a waterline and pool there, granulating and blooming into a bright glowing boundary. That wet edge is the whole system. Tideline organizes the screen as horizontal strata of colour that meet at luminous waterlines, and reserves the brightest charged edge for the moments that matter: the primary action, the active band, the live value. The ground is deep indigo wet paper, never white, so the bright waterlines read like light caught on a wet surface and the quiet reads as depth rather than emptiness. Type is a bold expanded grotesque with a single colour-pop on one headline word — no serif, no italic swap. The result is humid, luminous, and disciplined: soft where it should feel human, exact where a number has to be right.
### Values
- Read by the edge: the most charged, brightest pigment always sits exactly where the day turns — the active state, the primary action, the value that matters.
- Depth, not emptiness: the dark ground is wet paper at night; the quiet is humid and deep, and the bright waterlines read as light caught on water.
- Authored by a hand, exact where it counts: surfaces bloom and feather like pigment on stock, while type, spacing, and controls stay disciplined enough to run a working shift on.
- Humid, never muddy: jewel-tone washes layered as transparent glazes where the lower colour glows up through the upper; brilliance is preserved, never greyed.
- Warmth means watch this: the warm coral backrun is reserved for attention — a warning, a turning current — and never used as everyday decoration.
### Anti-Values
- Defaulting to a white or light editorial ground — that is the sibling refinement's territory, not this language's.
- Hairline borders or accent edges to separate content instead of a charged waterline seam.
- Serif or italic-swap headlines; the oversized italic serif and the regular-serif/italic-serif word flip.
- Muddy, greyed, or synthetic-glossy colour; gradients used as screen-light rather than pigment dilution.
- Decorative warmth everywhere, so the coral backrun stops meaning attention.
### Visual Character
- Waterline seams: sections and rows give way to one another at a glowing cyan edge (a 2px lit core plus a feathered halo), never a sterile hairline.
- The lit edge: the active band, selected row, live tab, and primary button all carry the bright waterline with its soft diffusion; quiet elements drop to a flat wash or plain ink.
- Warm backruns: only warnings and attention bleed a coral backrun off their edge.
- Meters and progress fill to a waterline — the leading edge is the bright tideline, the trailing fill the calmer wash behind it.
- Granulating wet swatches: each accent is a wash pooling at a waterline with fine speckled texture settling into the dark paper.
- Bold expanded grotesque headlines with a single highlighter colour-pop on one word; values and timestamps in restrained monospace.
## 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 | `#0A1326` |
| surface | `#12203D` |
| surface-2 | `#182B4F` |
| surface-3 | `#1F365F` |
| text | `#F4F7FB` |
| muted | `#9AB0CF` |
| border | `#243556` |
| accent | `#3DD4E8` |
| accent_2 | `#FF6A3D` |
| accent_3 | `#FFC24A` |
| on_accent | `#071021` |
| success | `#39C2A0` |
| warning | `#FFC24A` |
| error | `#FF6A6A` |
| info | `#5AB8E8` |
## Typography
- **Headline-Lg**: Archivo, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: Archivo, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: Inter, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 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
Full-bleed horizontal bands; a capped, centred content column within each band on ultra-wide.
### Whitespace
Generous between bands; the dark ground reads as humid depth, not empty paper.
### Density
Macro-spacious, micro-precise.
### Responsive
Single column on mobile; hero and section headlines shrink with clamp() and wrap, never clipping the 390px edge; nav wraps or collapses; grids use minmax(0,1fr) + min-width:0 so children shrink instead of overflowing.
### Breakpoints
- **Mobile**: 390px
- **Tablet**: 760px
- **Desktop**: 1040px
- **Wide**: 1440px
- **Ultrawide**: 2560px
## Elevation & Depth
### Shadows
- **Glow**: 0 0 24px 2px color-mix(in srgb, var(--accent) 55%, transparent)
## Shapes
### Rounded
- **None**: `0px`
- **Sm**: `16px`
- **Md**: `24px`
- **Pill**: `9999px`
### Surfaces
- **Ground**: #0A1326
- **Panel**: #12203D
- **Raised**: #182B4F
- **Deep**: #1F365F
### Borders
- **Policy**: avoid; separate with a glowing waterline seam, not hairlines
## Components
### Composition
Stack the screen as full-bleed horizontal colour bands that meet at luminous waterline seams, not vellum panels floating on paper. The hero is one immersive saturated wash filling the viewport with the headline in its calm upper breathing zone. Below, return to rich stacked sections, each a band giving way to the next at a charged cyan seam. Reserve the brightest waterline for the active band, the primary action, and the live value; everything quiet drops to a flat wash or plain ink. On ultra-wide, cap and centre the content column; only the hero and band grounds span 100vw.
### Hierarchy
Headlines use a bold expanded grotesque (Archivo) with a single highlighter colour-pop on one word — no serif, no italic swap. Body and controls use Inter for legibility; values, timestamps, and metadata use IBM Plex Mono. The highest hierarchy combines type scale, brighter pigment concentration at the waterline, and the lit edge — not larger blocks of chrome. Alerts and selections intensify pigment while keeping the soft edge logic: the lit cyan edge for active, the warm coral backrun for attention.
### Density
Moderate density with generous breathing room between bands and compact, precise rhythm within each card. Spacious enough to feel the humid depth, dense enough to run a working shift.
### Signature
The waterline — two washes meet at a horizontal boundary and pool into a bright glowing edge (a 2px cyan core with a feathered diffusion and an occasional warm backrun). It maps onto semantic roles: the cyan core is --accent (the lit, active, primary edge), the warm backrun is --accent-2 (warning/attention), the bands are the surface roles — so the mechanic recolours on palette swap. Meters fill to a waterline; the live row lights its leading edge; sections meet at waterline seams.
### Signature Patterns
- Waterline seams between sections and rows: a 2px cyan core with a feathered halo, never a hairline border.
- The active band, selected row, live tab, and primary button light their cyan waterline; quiet elements drop to a flat wash.
- Warm coral backruns bleed off the edge only on warnings and attention.
- Meters and progress fill to a bright cyan tideline at their leading edge.
- Granulating wet swatches where each accent pools at a waterline with speckled texture on the dark paper.
## 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-019efdb7-abf0-7e83-bd9d-a2360932ebd6/DESIGN.with-shadcn.md`.
The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is 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 Build on the deep indigo wet-paper ground; let the bright waterlines read like light on water.
- Do Separate content with a glowing waterline seam and space, never borders.
- Do Light the active or primary element's waterline; keep everything quiet a flat wash.
- Do Reserve the warm coral backrun for warnings and attention only.
- Do Use a bold grotesque headline with one highlighter colour-pop word; keep values in monospace.
- Don't Default to a white or light editorial ground.
- Don't Use hairline borders or accent edges to divide content.
- Don't Use serif headlines or the regular-serif/italic-serif word swap.
- Don't Let colour go muddy or grey, or use gradients as synthetic screen-light.
- Don't Scatter warm backruns as everyday decoration.
### Accessibility
Humid near-white text (#F4F7FB) on deep indigo (#0A1326) holds high contrast; muted sea-mist is reserved for secondary text on dark surfaces. The lit waterline marks state with both colour and position (a leading edge), not colour alone. Body 17px+; motion respects prefers-reduced-motion and the settled state renders with no JavaScript.
## Imagery Direction
### Pairs With
wetwash
### Summary
Saturated wet-into-wet watercolour applied to the wet edge itself — two washes meeting at a luminous waterline on deep paper, with warm backruns blooming off the boundary. Humid jewel-tones, never muddy.
### Subjects
- estuary water at the turn
- two washes meeting at a tideline
- coastal depth and current fields
- wet pigment pooling and granulating along an edge
### Usage
One full-bleed hero wash with a calm upper breathing zone for the headline overlay; bloom and granulation read against the dark ground.
```json
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "tideline",
"type": "registry:theme",
"title": "Tideline shadcn Theme",
"cssVars": {
"theme": {},
"light": {
"background": "#0A1326",
"foreground": "#F4F7FB",
"card": "#12203D",
"card-foreground": "#F4F7FB",
"popover": "#12203D",
"popover-foreground": "#F4F7FB",
"primary": "#F4F7FB",
"primary-foreground": "#111111",
"secondary": "#f4f4f5",
"secondary-foreground": "#111111",
"muted": "#9AB0CF",
"muted-foreground": "#F4F7FB",
"accent": "#3DD4E8",
"accent-foreground": "#ffffff",
"destructive": "#FF6A6A",
"border": "#243556",
"input": "#243556",
"ring": "#3DD4E8",
"chart-1": "#F4F7FB",
"chart-2": "#f4f4f5",
"chart-3": "#3DD4E8",
"chart-4": "#39C2A0",
"chart-5": "#FFC24A",
"sidebar": "#12203D",
"sidebar-foreground": "#F4F7FB",
"sidebar-primary": "#F4F7FB",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#5AB8E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#243556",
"sidebar-ring": "#3DD4E8",
"radius": "24px"
},
"dark": {
"background": "#0f1115",
"foreground": "#f8fafc",
"card": "#181b22",
"card-foreground": "#f8fafc",
"popover": "#181b22",
"popover-foreground": "#f8fafc",
"primary": "#F4F7FB",
"primary-foreground": "#111111",
"secondary": "#252a33",
"secondary-foreground": "#f8fafc",
"muted": "#252a33",
"muted-foreground": "#a1a1aa",
"accent": "#3DD4E8",
"accent-foreground": "#ffffff",
"destructive": "#FF6A6A",
"border": "#303642",
"input": "#303642",
"ring": "#3DD4E8",
"chart-1": "#F4F7FB",
"chart-2": "#f4f4f5",
"chart-3": "#3DD4E8",
"chart-4": "#39C2A0",
"chart-5": "#FFC24A",
"sidebar": "#181b22",
"sidebar-foreground": "#f8fafc",
"sidebar-primary": "#F4F7FB",
"sidebar-primary-foreground": "#111111",
"sidebar-accent": "#3DD4E8",
"sidebar-accent-foreground": "#ffffff",
"sidebar-border": "#303642",
"sidebar-ring": "#3DD4E8",
"radius": "24px"
}
},
"meta": {
"source": "katagami",
"languageId": "en-019efdb7-abf0-7e83-bd9d-a2360932ebd6",
"slug": "tideline",
"componentManifest": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"nativeTokenNames": {
"colors": [
"accent",
"accent_2",
"accent_3",
"bg",
"border",
"error",
"info",
"muted",
"on_accent",
"success",
"surface",
"surface-2",
"surface-3",
"text",
"warning"
],
"typography": [
"base_size",
"body_font",
"google_fonts_url",
"heading_font",
"heading_transform",
"heading_weight",
"letter_spacing",
"mono_font"
],
"radii": [
"md",
"none",
"pill",
"sm"
],
"shadows": [
"glow"
],
"spacing": [
"base",
"scale"
],
"surfaces": [
"deep",
"ground",
"panel",
"raised"
],
"borders": [
"policy"
],
"motion": [
"default",
"reduced_motion"
]
}
}
}
```The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
The quick brown fox jumps
Agent-generated
produced by opus-4.8 · sourced by opus-4.8 · images by gpt-image-2
Keep Tidelineand swap a palette and an art style onto it — the landing & dashboard recolor live. The Studio does the same with all three lanes free.
Copy this when the target app uses shadcn/ui. It packages the Katagami DESIGN.md context with the install list, theme variables, component recipes, preview-shot contract, and starter TSX in one Markdown companion.
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table:root {
--background: #0A1326;
--foreground: #F4F7FB;
--card: #12203D;
--card-foreground: #F4F7FB;
--popover: #12203D;
--popover-foreground: #F4F7FB;
--primary: #F4F7FB;
--primary-foreground: #111111;
--secondary: #f4f4f5;
--secondary-foreground: #111111;
--muted: #9AB0CF;
--muted-foreground: #F4F7FB;
--accent: #3DD4E8;
--accent-foreground: #ffffff;
--destructive: #FF6A6A;
--border: #243556;
--input: #243556;
--ring: #3DD4E8;
--chart-1: #F4F7FB;
--chart-2: #f4f4f5;
--chart-3: #3DD4E8;
--chart-4: #39C2A0;
--chart-5: #FFC24A;
--sidebar: #12203D;
--sidebar-foreground: #F4F7FB;
--sidebar-primary: #F4F7FB;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #5AB8E8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #243556;
--sidebar-ring: #3DD4E8;
--radius: 24px;
}
.dark {
--background: #0f1115;
--foreground: #f8fafc;
--card: #181b22;
--card-foreground: #f8fafc;
--popover: #181b22;
--popover-foreground: #f8fafc;
--primary: #F4F7FB;
--primary-foreground: #111111;
--secondary: #252a33;
--secondary-foreground: #f8fafc;
--muted: #252a33;
--muted-foreground: #a1a1aa;
--accent: #3DD4E8;
--accent-foreground: #ffffff;
--destructive: #FF6A6A;
--border: #303642;
--input: #303642;
--ring: #3DD4E8;
--chart-1: #F4F7FB;
--chart-2: #f4f4f5;
--chart-3: #3DD4E8;
--chart-4: #39C2A0;
--chart-5: #FFC24A;
--sidebar: #181b22;
--sidebar-foreground: #f8fafc;
--sidebar-primary: #F4F7FB;
--sidebar-primary-foreground: #111111;
--sidebar-accent: #3DD4E8;
--sidebar-accent-foreground: #ffffff;
--sidebar-border: #303642;
--sidebar-ring: #3DD4E8;
--radius: 24px;
}
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
export function TidelineShadcnKit() {
return (
<section className="grid gap-4 rounded-[var(--radius)] border bg-background p-4 text-foreground">
<div className="flex items-start justify-between gap-4">
<div>
<Badge variant="outline">shadcn/ui</Badge>
<h2 className="mt-3 text-2xl font-semibold tracking-tight">Tideline</h2>
<p className="mt-1 max-w-xl text-sm text-muted-foreground">
Use the Katagami registry theme, then compose these shadcn primitives
with the language-specific component recipes.
</p>
</div>
<Button>Apply theme</Button>
</div>
<Tabs defaultValue="components">
<TabsList>
<TabsTrigger value="components">Components</TabsTrigger>
<TabsTrigger value="states">States</TabsTrigger>
<TabsTrigger value="export">Export</TabsTrigger>
</TabsList>
</Tabs>
<Card>
<CardHeader>
<CardTitle>Component recipe</CardTitle>
<CardDescription>
Replace this starter content with the agent-authored product scene
from components.md and preview-shots.json.
</CardDescription>
</CardHeader>
<CardContent className="grid gap-3 sm:grid-cols-[1fr_auto]">
<Input defaultValue="Tokenized shadcn surface" aria-label="Recipe name" />
<Button variant="secondary">Preview state</Button>
</CardContent>
<CardFooter className="justify-between">
<Badge>Ready</Badge>
<Button variant="outline">Copy recipe</Button>
</CardFooter>
</Card>
</section>
);
}
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "tideline",
"type": "registry:theme",
"cssVars": {
"theme": {
"font-sans": "Inter, system-ui, sans-serif",
"font-display": "Archivo, system-ui, sans-serif",
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
"radius": "1rem"
},
"dark": {
"background": "#0A1326",
"foreground": "#F4F7FB",
"card": "#12203D",
"card-foreground": "#F4F7FB",
"popover": "#182B4F",
"popover-foreground": "#F4F7FB",
"primary": "#3DD4E8",
"primary-foreground": "#071021",
"secondary": "#1F365F",
"secondary-foreground": "#F4F7FB",
"muted": "#182B4F",
"muted-foreground": "#9AB0CF",
"accent": "#FF6A3D",
"accent-foreground": "#071021",
"destructive": "#FF6A6A",
"destructive-foreground": "#071021",
"border": "#243556",
"input": "#243556",
"ring": "#3DD4E8",
"chart-1": "#3DD4E8",
"chart-2": "#FF6A3D",
"chart-3": "#FFC24A",
"chart-4": "#39C2A0",
"chart-5": "#5AB8E8"
},
"light": {
"background": "#0A1326",
"foreground": "#F4F7FB",
"card": "#12203D",
"card-foreground": "#F4F7FB",
"popover": "#182B4F",
"popover-foreground": "#F4F7FB",
"primary": "#3DD4E8",
"primary-foreground": "#071021",
"secondary": "#1F365F",
"secondary-foreground": "#F4F7FB",
"muted": "#182B4F",
"muted-foreground": "#9AB0CF",
"accent": "#FF6A3D",
"accent-foreground": "#071021",
"destructive": "#FF6A6A",
"destructive-foreground": "#071021",
"border": "#243556",
"input": "#243556",
"ring": "#3DD4E8"
}
},
"visualProfile": {
"mode": "dark",
"ground": "deep indigo wet paper (#0A1326); never white",
"radius": "pill for actions (9999px), 16/24px for surfaces; geometry drawn from {0,16,24,9999}",
"borders": "avoid; separate with a glowing waterline seam (2px accent + feathered halo), not hairlines",
"elevation": "no hard shadows; soft accent glow on active/primary only",
"signature": "the waterline — active/primary elements carry a bright cyan core with a feathered diffusion; warnings bleed a warm coral backrun; quiet elements drop to a flat wash",
"accentUse": "highlighter-style; primary=tideline cyan, attention=backrun coral, pop=pool amber",
"typography": "Archivo (bold expanded grotesque) display, Inter body, IBM Plex Mono for values/timestamps; no serif",
"motion": "wash bleed-in from the seam; gated and reduced-motion aware"
}
}
# Tideline shadcn/ui Components
Artifact: `component-recipes-v1`
Author: `katagami-agent`
## Intent
Tideline is a crafted-sheet interface system painted in saturated digital watercolor, reconceived
for the dark. One physical behaviour runs the whole system: two washes meet at a horizontal
**waterline** and pool there, granulating and blooming into a bright glowing edge. These recipes
map that single mechanic onto every shadcn primitive — the active or primary element lights its
waterline; warnings bleed a warm coral backrun; everything quiet steps back to a flat wash.
The ground is deep indigo wet paper (`#0A1326`), never white. The quiet is depth, not emptiness.
## Required primitives
`button, card, input, textarea, select, dialog, sheet, tabs, badge, separator, checkbox, switch,
slider, tooltip, dropdown-menu, table` — all 16.
```
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
```
## Token cues
- `--background #0A1326` · `--card #12203D` · `--popover #182B4F` · `--secondary #1F365F`
- `--foreground #F4F7FB` · `--muted-foreground #9AB0CF`
- `--primary #3DD4E8` (tideline cyan) · `--primary-foreground #071021`
- `--accent #FF6A3D` (backrun coral) · pop `#FFC24A` (pool amber)
- `--destructive #FF6A6A` · `--ring #3DD4E8`
- `--radius 1rem`; geometry from {0, 16, 24, 9999}. Pills for actions, 16/24px for surfaces.
- Fonts: Archivo (display), Inter (body), IBM Plex Mono (values, timestamps, labels).
## Visual character to preserve
- Sections and rows are separated by a **waterline seam** (2px cyan core + a feathered halo),
never a hairline border. Avoid borders entirely.
- **Active = lit.** The selected row, live tab, primary button and current meter carry the bright
cyan waterline with its soft diffusion.
- **Warm = watch this.** Only warnings and attention bleed the coral backrun off their edge.
- No hard drop shadows; elevation reads as soft accent glow on the lit element only.
- No serif type. No emoji on controls. No down-arrow scroll cues.
## ShadSync visual profile
`family: tideline · material: wet-wash · contour: soft · border: none · underlay: true ·
grain: true · motion: wash-bleed · density: balanced · accents: [accent, accent-2, warning]`
## Signature component recipes
### Button
Pill (9999px), Archivo 700, label optically centred, fixed height across the set. Primary fills
cyan on dark ink with a soft cyan glow that intensifies on hover; secondary is a quiet surface
wash; the warn variant fills coral. One primary per view.
### Card
Dark surface, 24px radius, no border. A 3px cyan underbar can mark a focal card. Cards never nest;
they meet siblings at a waterline seam.
### Input and Textarea
Dark recessed field, 16px radius, no border. Focus draws a 2px cyan waterline under the field plus
a faint cyan ring; placeholder text is muted sea-mist. Textarea resizes vertically.
### Select, Tabs, and Table
Select mirrors the input with a cyan chevron and removed native appearance. Tabs use tone plus a
glowing cyan underline wash on the active tab — never a boxed pill bar. Table headers are mono;
rows are split by faint cyan inset lines; the live row gets a 3px cyan leading edge and a thin cyan
wash, a warning row a coral leading edge.
### Dialog and Sheet
Dialog is a dark popover over a dimmed indigo scrim with one lit-cyan primary action. Sheet slides
in as a dark vellum slip with a waterline seam at its leading edge.
### Badge, Switch, Slider, Tooltip, Separator, Checkbox, Dropdown-menu
Badge is a mono pill with a glowing pip — cyan (live), coral (warning), muted (held). Switch washes
its track cyan and glows the knob when on. Slider fills its track to a bright cyan tideline at the
thumb. Tooltip is a small dark slip with mono text and a faint cyan edge. Separator IS the waterline.
Checkbox fills cyan with a dark check when on. Dropdown-menu lights a cyan leading edge on the
highlighted item.
## Preview shots
Three renderable scenes ship in `shadcn-preview-shots.json` (`renderable-v1`): a desktop water
console (shell), a tablet reading form (detail editor), and a mobile shift feed (data operations).
Each names the primitives it exercises and the identity cues it must show.
## Implementation contract
- Render on the dark ground; never substitute a white chassis.
- Separate with waterlines and space, not borders.
- Exactly one cyan primary per view; warnings use the coral backrun.
- Active state is always the lit waterline; quiet state is a flat wash.
- Respect `prefers-reduced-motion`; the settled state needs no JavaScript.
## Copy-paste component example
```tsx
import { Button } from "@/components/ui/button"
import { Card } from "@/components/ui/card"
export function LogReadingCard() {
return (
<Card className="rounded-3xl bg-card p-6 text-card-foreground">
<p className="font-mono text-xs text-muted-foreground">the turn</p>
<h3 className="mt-1 font-[Archivo] text-xl font-bold tracking-tight">
Slack water in <span className="text-primary">00:42</span>
</h3>
{/* meter fills to a bright cyan tideline at its leading edge */}
<div className="relative mt-5 h-2 rounded-full bg-background">
<div className="absolute inset-y-0 left-0 w-[62%] rounded-full
bg-gradient-to-r from-accent/40 to-primary
shadow-[0_0_12px_2px_var(--ring)]" />
</div>
<Button className="mt-6 h-11 rounded-full bg-primary px-6
font-[Archivo] font-bold text-primary-foreground
shadow-[0_0_0_0] transition-shadow hover:shadow-[0_0_24px_2px_var(--ring)]">
Log the reading
</Button>
</Card>
)
}
```
## Layout notes
Stack content as full-bleed colour bands meeting at waterline seams. On ultra-wide, cap and centre
the content column; only the hero and band grounds span full width. On mobile, collapse to a single
column, wrap or hide secondary nav, and never overflow horizontally — meters and tables shrink with
`minmax(0,1fr)` and `min-width:0`.
{
"artifact": "katagami:shadcn-preview-shots",
"version": "preview-shots-v1",
"generator": "katagami-ui-compatibility-projection",
"generatedBy": "katagami-ui-projection",
"requiresVisualProfile": true,
"schema": "katagami:shadcn-preview-shots/renderable-v1",
"renderable": true,
"language": {
"id": "en-019efdb7-abf0-7e83-bd9d-a2360932ebd6",
"name": "Tideline",
"slug": "tideline"
},
"installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"dialog",
"sheet",
"tabs",
"badge",
"separator",
"checkbox",
"switch",
"slider",
"tooltip",
"dropdown-menu",
"table"
],
"identityNotes": [
"Waterline seams: sections and rows give way to one another at a glowing cyan edge (a 2px lit core plus a feathered halo), never a sterile hairline.",
"The lit edge: the active band, selected row, live tab, and primary button all carry the bright waterline with its soft diffusion; quiet elements drop to a flat wash or plain ink.",
"Warm backruns: only warnings and attention bleed a coral backrun off their edge.",
"Meters and progress fill to a waterline — the leading edge is the bright tideline, the trailing fill the calmer wash behind it.",
"Granulating wet swatches: each accent is a wash pooling at a waterline with fine speckled texture settling into the dark paper.",
"Bold expanded grotesque headlines with a single highlighter colour-pop on one word; values and timestamps in restrained monospace."
],
"visualProfile": {
"family": "paper-collage",
"material": "paper",
"contour": "default",
"border": "solid",
"underlay": false,
"grain": true,
"stickerBadges": true,
"motion": "still",
"density": "balanced",
"accents": [
"primary",
"accent",
"secondary",
"muted"
]
},
"shots": [
{
"id": "application-shell",
"title": "Application shell",
"viewport": "desktop",
"primitives": [
"button",
"card",
"input",
"select",
"tabs",
"badge",
"separator",
"table"
],
"composition": "A real product workspace with navigation, summary cards, filtering controls, and one dense content region.",
"mustShow": [
"primary and secondary actions",
"card hierarchy",
"filterable state",
"table or list density"
],
"avoid": [
"component inventory walls",
"placeholder-only content",
"generic rounded SaaS chrome"
],
"scene": {
"eyebrow": "workspace spread",
"headline": "Tideline launch room",
"description": "A product team workspace where navigation, filters, metrics, and dense rows carry the language's visible structure.",
"primaryAction": "Apply theme",
"secondaryAction": "Review states",
"stats": [
{
"label": "components",
"value": "16",
"tone": "accent"
},
{
"label": "states",
"value": "ready"
},
{
"label": "density",
"value": "balanced",
"tone": "warning"
}
],
"rows": [
{
"label": "Primary flow",
"value": "mapped",
"status": "active"
},
{
"label": "Token coverage",
"value": "semantic",
"status": "synced"
},
{
"label": "Responsive proof",
"value": "queued",
"status": "review"
}
],
"statuses": [
"Active",
"Synced",
"Draft"
]
}
},
{
"id": "detail-editor",
"title": "Detail editor",
"viewport": "tablet",
"primitives": [
"button",
"card",
"input",
"textarea",
"select",
"checkbox",
"switch",
"slider",
"dialog",
"sheet"
],
"composition": "A focused editing flow with form fields, validation, confirmation, and a contextual side panel.",
"mustShow": [
"focus ring",
"error or destructive state",
"dialog or sheet treatment",
"written guidance content"
],
"avoid": [
"unstyled browser controls",
"floating cards inside cards",
"missing labels"
],
"scene": {
"eyebrow": "editing flow",
"headline": "Language recipe editor",
"description": "A focused form proving labels, validation, toggles, panel rhythm, and action hierarchy.",
"primaryAction": "Save recipe",
"secondaryAction": "Open sheet",
"fields": [
{
"label": "Component family",
"value": "Narrative cards"
},
{
"label": "State treatment",
"value": "Visible focus + validation"
},
{
"label": "Motion",
"value": "Small lift, no opacity-only fade"
}
],
"statuses": [
"Focus",
"Invalid",
"Confirmed"
]
}
},
{
"id": "data-operations",
"title": "Data operations",
"viewport": "mobile",
"primitives": [
"button",
"tabs",
"badge",
"dropdown-menu",
"table",
"tooltip",
"separator"
],
"composition": "A compact operational view proving row rhythm, stacked actions, menu states, badges, and empty/destructive states.",
"mustShow": [
"responsive reflow",
"dense row styling",
"menu affordance",
"status badge system"
],
"avoid": [
"desktop-only tables",
"text overflow",
"default shadcn spacing without Katagami character"
],
"scene": {
"eyebrow": "operations",
"headline": "Compact review queue",
"description": "A narrow viewport scene with rows, menus, tooltips, badges, and destructive affordances.",
"primaryAction": "Resolve",
"secondaryAction": "Filter",
"rows": [
{
"label": "Button hierarchy",
"value": "approved",
"status": "ok"
},
{
"label": "Table rhythm",
"value": "needs pass",
"status": "watch"
},
{
"label": "Empty state",
"value": "designed",
"status": "done"
}
],
"statuses": [
"Queued",
"Blocked",
"Done"
]
}
}
],
"componentRecipes": [
{
"primitive": "button",
"intent": "Prove action hierarchy, focus, disabled, and destructive states."
},
{
"primitive": "card",
"intent": "Carry the language surface, border, elevation, and density rules."
},
{
"primitive": "input",
"intent": "Show labels, focus rings, validation, and spacing rhythm."
},
{
"primitive": "textarea",
"intent": "Show longer guidance, validation copy, and writing density."
},
{
"primitive": "select",
"intent": "Show filtering, selection contrast, and menu trigger styling."
},
{
"primitive": "dialog",
"intent": "Show centered decision states and overlay treatment."
},
{
"primitive": "sheet",
"intent": "Show contextual side panels and responsive editing."
},
{
"primitive": "tabs",
"intent": "Show navigational structure and active/inactive contrast."
},
{
"primitive": "badge",
"intent": "Show compact status vocabulary and semantic colors."
},
{
"primitive": "separator",
"intent": "Show section rhythm without generic gray dividers."
},
{
"primitive": "checkbox",
"intent": "Show binary selection with visible focus and checked states."
},
{
"primitive": "switch",
"intent": "Show settings toggles and on/off contrast."
},
{
"primitive": "slider",
"intent": "Show numeric adjustment with track/thumb styling."
},
{
"primitive": "tooltip",
"intent": "Show concise explanation styling above compact controls."
},
{
"primitive": "dropdown-menu",
"intent": "Show action menus, destructive items, and grouped choices."
},
{
"primitive": "table",
"intent": "Show dense operational data, separators, row states, and responsive behavior."
}
],
"qualityRules": {
"do": [
"Build on the deep indigo wet-paper ground; let the bright waterlines read like light on water.",
"Separate content with a glowing waterline seam and space, never borders.",
"Light the active or primary element's waterline; keep everything quiet a flat wash.",
"Reserve the warm coral backrun for warnings and attention only.",
"Use a bold grotesque headline with one highlighter colour-pop word; keep values in monospace."
],
"dont": [
"Default to a white or light editorial ground.",
"Use hairline borders or accent edges to divide content.",
"Use serif headlines or the regular-serif/italic-serif word swap.",
"Let colour go muddy or grey, or use gradients as synthetic screen-light.",
"Scatter warm backruns as everyday decoration."
]
}
}