back to gallery
design language·aya-threadline-reading-system

AYA Threadline Reading System

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md source of truth for most agents and apps.

the spec

specification

philosophy
summary
A calm, evidence-forward reading and navigation language that treats dense text as a woven structure of passages, sources, and decisions. The metaphor remains architectural rather than illustrative: warp lines become narrow dividers and stable reading columns; weft lines become hover-revealed connectors between citations, breadcrumbs, and context bundles; knots mark only unresolved conflicts, key decisions, or active joins. The product should feel like warm paper with precise relational rules, not like a loom diagram or a decorative Japanese theme. Indigo identifies the active thread, selected passage, focus ring, and current source trail. Vermilion appears as a single knot per view to locate the one item that needs judgment. The system prioritizes reading flow, progressive disclosure, and source-trail accountability over dashboard chrome.
values
reading first: one dominant text column with context revealed at the point of needevidence trails that remain visible without becoming a node-link graphrestraint from katagami-like cutout logic: fine repeats, bridges, and negative space used as IA structuresingle active-thread accent instead of category color systemsprogressive disclosure for dense context, citations, and related passagesdecision clarity: one vermilion knot calls attention to the current conflict or joinquiet craft through spacing, hairlines, and text hierarchy rather than ornament
anti-values
×literal yarn, loom, shuttle, or woven-fabric illustrations×node-link graphs as the primary navigation model×rainbow thread categories or decorative color coding×sticky dense dashboard chrome surrounding the reading surface×Japanese motifs used as surface decoration without functional IA meaning×source lists detached from the exact passage they support×permanent context panels that compete with the main text
tokens
borders4 items
accent width
2px
character
Pale ash hairlines used as warp rules; indigo only for active path and focus; vermilion only for the single knot.
default width
1px
style
solid
colors13 items
accent
#D65A3A
background
#FBFAF7
border
#DDD8CE
error
#B9462E
focus
#6B8FB8
info
#2F5D8C
muted
#6F6A63
primary
#2F5D8C
success
#4F6F55
surface
#FBFAF7
surface_alt
#F3F1EB
text
#22211F
warning
#D65A3A
motion3 items
duration
140ms
easing
cubic-bezier(0.2, 0, 0, 1)
philosophy
Reveal connectors and bundles with short, quiet fades; no thread-drawing animation, bounce, or skeuomorphic weaving motion.
radii5 items
full
9999px
lg
10px
md
6px
none
0
sm
2px
shadows3 items
lg
0 18px 48px rgba(34,33,31,0.08)
md
0 8px 20px rgba(34,33,31,0.06)
sm
0 1px 2px rgba(34,33,31,0.04)
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces3 items
bg pattern
Optional 48px vertical hairline rhythm at extremely low contrast to support alignment, not decoration.
card style
Low-elevation paper panels with 1px ash borders, 10px radius only for bundles, and no decorative fills.
treatment
Warm paper field with slightly darker ash side annotations and inset context bundles.
typography7 items
base size
16px
body font
Source Sans 3
google fonts url
https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&family=Source+Serif+4:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
heading font
Source Serif 4
letter spacing
-0.01em
line height
1.62
mono font
IBM Plex Mono
rules
composition
Use a single-column reading core as the home position. On desktop, place a narrow right rail for active thread, source trail, and current path; on smaller screens, collapse the rail into a top breadcrumb/source-trail strip and inline drawers. Align all passages, citation handles, bundles, and rail markers to an 8px grid with 12, 24, and 48px rhythm. Let narrow dividers act as warp lines, but keep them structural and nearly neutral. Dashboard-style summaries may exist only as destinations reached from text selections or source chips, never as the default landing layout.
density
Medium-low density for long reading sessions: generous line height, 24px paragraph group spacing, 48px section breathing room, compact but legible source chips, and collapsible context bundles that open only on intent. Keep chrome light; avoid permanent dashboards and multi-panel clutter.
hierarchy
Text is primary. Use weight, line height, indentation, and spacing before color. Indigo marks active thread, active source path, selected passage, focus ring, or an inline connector only. Vermilion is limited to one knot per view and must identify an unresolved conflict, key decision, or active join. Muted metadata and tabular numerals support scanability without overwhelming the paragraph.
signature patterns
Thread breadcrumb: a top or right-rail path with thin indigo segment for the active thread and pale ash segments for ancestors.Source chip: compact claim-adjacent pill with source shortname, timestamp or page, and a hover/focus connector to the right rail.Inline citation handle: bracketed or superscript handle that opens a small evidence popover and can expand into an inline context bundle.Context bundle: collapsible paper inset directly beneath the relevant passage, with a pale ash left rule and optional indigo active connector.Knot marker: one small vermilion diamond/dot on the passage edge or rail, paired with text explaining the conflict or decision.Side rail source trail: quiet vertical path showing current passage, supporting sources, previous/next thread, and one active join if present.Hover-revealed connector: hairline indigo rule appears only on hover/focus/selection to connect claim, chip, and rail without permanent graph clutter.
layout
breakpoints
Mobile <= 640px stacks reading, breadcrumbs, and source trail; tablet 641-1024px keeps the rail collapsible; desktop >= 1025px shows the right rail persistently but quietly.
density

Reading core remains sparse and calm; context grows inline on demand. Metadata is compact and tabular but not sticky-heavy.

grid
8px base grid. Desktop uses a centered reading measure around 680-760px with a 224-280px quiet right rail and 24-48px gutters. Hairline dividers align with passage starts and rail nodes.
responsive
On mobile, source chips open bottom sheets or inline bundles, thread breadcrumbs wrap to a horizontal trail, and the vermilion knot remains visible near the relevant passage rather than in a distant rail.
whitespace
Use ma-like negative space as pacing: 24px between paragraph clusters, 48px before major sections, 12px for chip/bundle internals. Empty space should clarify the active path rather than feel unfinished.
guidance
do
  • Keep the reading column dominant and let navigation emerge from text selection, breadcrumbs, chips, and the right rail.
  • Use indigo consistently for active thread, focus, selection, and source trail path.
  • Use exactly one vermilion knot marker per view for the highest-order conflict, key decision, or active join.
  • Attach source chips and citation handles directly to the claims they support.
  • Reveal connectors on hover, focus, or selection instead of drawing a permanent graph.
  • Make context bundles collapsible inline and preserve the reader’s scroll position.
  • Use pale ash hairlines and warm paper surfaces to create structure before adding color.
  • Express katagami influence through repeat logic, bridges, restraint, and cutout-like spacing—not motifs.
avoid
  • Do not draw literal yarn, looms, shuttles, fabric texture, waves, cranes, fans, or decorative Japanese patterns.
  • Do not make a node-link graph the default navigation experience.
  • Do not assign a different color to every thread, source type, or category.
  • Do not fill the page with sticky dashboards, permanent metric cards, or dense chrome.
  • Do not use vermilion for routine warnings, badges, buttons, or decoration.
  • Do not detach source trails from the exact passage they support.
  • Do not use low-contrast gray body text to simulate calmness.
  • Do not over-animate connectors or create skeuomorphic weaving transitions.
katagami spec
# AYA Threadline Reading System

## Philosophy

A calm, evidence-forward reading and navigation language that treats dense text as a woven structure of passages, sources, and decisions. The metaphor remains architectural rather than illustrative: warp lines become narrow dividers and stable reading columns; weft lines become hover-revealed connectors between citations, breadcrumbs, and context bundles; knots mark only unresolved conflicts, key decisions, or active joins. The product should feel like warm paper with precise relational rules, not like a loom diagram or a decorative Japanese theme. Indigo identifies the active thread, selected passage, focus ring, and current source trail. Vermilion appears as a single knot per view to locate the one item that needs judgment. The system prioritizes reading flow, progressive disclosure, and source-trail accountability over dashboard chrome.

### Values

- reading first: one dominant text column with context revealed at the point of need
- evidence trails that remain visible without becoming a node-link graph
- restraint from katagami-like cutout logic: fine repeats, bridges, and negative space used as IA structure
- single active-thread accent instead of category color systems
- progressive disclosure for dense context, citations, and related passages
- decision clarity: one vermilion knot calls attention to the current conflict or join
- quiet craft through spacing, hairlines, and text hierarchy rather than ornament

### Anti-Values

- literal yarn, loom, shuttle, or woven-fabric illustrations
- node-link graphs as the primary navigation model
- rainbow thread categories or decorative color coding
- sticky dense dashboard chrome surrounding the reading surface
- Japanese motifs used as surface decoration without functional IA meaning
- source lists detached from the exact passage they support
- permanent context panels that compete with the main text

### Visual Character

- Warm white paper surfaces carry sumi-charcoal text and pale ash dividers.
- A single-column reading core is paired with a quiet right rail showing the active thread and source trail.
- Hairline rules act as warp lines: separators, passage anchors, and side-rail path segments.
- Inline citation handles and source chips sit close to claims; hovering or focusing reveals thin indigo connectors.
- Collapsible context bundles open inline under a paragraph rather than pushing the reader into a dashboard.
- One vermilion knot marker per view marks the unresolved conflict, key decision, or active join.
- Hierarchy is created by spacing, weight, and indentation before size jumps or color.

## Tokens

### Borders

- **Accent Width**: 2px
- **Character**: Pale ash hairlines used as warp rules; indigo only for active path and focus; vermilion only for the single knot.
- **Default Width**: 1px
- **Style**: solid

### Colors

| Name | Value |
|------|-------|
| accent | `#D65A3A` |
| background | `#FBFAF7` |
| border | `#DDD8CE` |
| error | `#B9462E` |
| focus | `#6B8FB8` |
| info | `#2F5D8C` |
| muted | `#6F6A63` |
| primary | `#2F5D8C` |
| success | `#4F6F55` |
| surface | `#FBFAF7` |
| surface_alt | `#F3F1EB` |
| text | `#22211F` |
| warning | `#D65A3A` |

### Motion

- **Duration**: 140ms
- **Easing**: cubic-bezier(0.2, 0, 0, 1)
- **Philosophy**: Reveal connectors and bundles with short, quiet fades; no thread-drawing animation, bounce, or skeuomorphic weaving motion.

### Radii

- **Full**: 9999px
- **Lg**: 10px
- **Md**: 6px
- **None**: 0
- **Sm**: 2px

### Shadows

- **Lg**: 0 18px 48px rgba(34,33,31,0.08)
- **Md**: 0 8px 20px rgba(34,33,31,0.06)
- **Sm**: 0 1px 2px rgba(34,33,31,0.04)

### Spacing

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

### Surfaces

- **Bg Pattern**: Optional 48px vertical hairline rhythm at extremely low contrast to support alignment, not decoration.
- **Card Style**: Low-elevation paper panels with 1px ash borders, 10px radius only for bundles, and no decorative fills.
- **Treatment**: Warm paper field with slightly darker ash side annotations and inset context bundles.

### Typography

- **Base Size**: 16px
- **Body Font**: Source Sans 3
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&family=Source+Serif+4:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap
- **Heading Font**: Source Serif 4
- **Letter Spacing**: -0.01em
- **Line Height**: 1.62
- **Mono Font**: IBM Plex Mono

## Rules

### Composition

Use a single-column reading core as the home position. On desktop, place a narrow right rail for active thread, source trail, and current path; on smaller screens, collapse the rail into a top breadcrumb/source-trail strip and inline drawers. Align all passages, citation handles, bundles, and rail markers to an 8px grid with 12, 24, and 48px rhythm. Let narrow dividers act as warp lines, but keep them structural and nearly neutral. Dashboard-style summaries may exist only as destinations reached from text selections or source chips, never as the default landing layout.

### Density

Medium-low density for long reading sessions: generous line height, 24px paragraph group spacing, 48px section breathing room, compact but legible source chips, and collapsible context bundles that open only on intent. Keep chrome light; avoid permanent dashboards and multi-panel clutter.

### Hierarchy

Text is primary. Use weight, line height, indentation, and spacing before color. Indigo marks active thread, active source path, selected passage, focus ring, or an inline connector only. Vermilion is limited to one knot per view and must identify an unresolved conflict, key decision, or active join. Muted metadata and tabular numerals support scanability without overwhelming the paragraph.

### Signature Patterns

- Thread breadcrumb: a top or right-rail path with thin indigo segment for the active thread and pale ash segments for ancestors.
- Source chip: compact claim-adjacent pill with source shortname, timestamp or page, and a hover/focus connector to the right rail.
- Inline citation handle: bracketed or superscript handle that opens a small evidence popover and can expand into an inline context bundle.
- Context bundle: collapsible paper inset directly beneath the relevant passage, with a pale ash left rule and optional indigo active connector.
- Knot marker: one small vermilion diamond/dot on the passage edge or rail, paired with text explaining the conflict or decision.
- Side rail source trail: quiet vertical path showing current passage, supporting sources, previous/next thread, and one active join if present.
- Hover-revealed connector: hairline indigo rule appears only on hover/focus/selection to connect claim, chip, and rail without permanent graph clutter.

## Layout

### Breakpoints

Mobile <= 640px stacks reading, breadcrumbs, and source trail; tablet 641-1024px keeps the rail collapsible; desktop >= 1025px shows the right rail persistently but quietly.

### Density

Reading core remains sparse and calm; context grows inline on demand. Metadata is compact and tabular but not sticky-heavy.

### Grid

8px base grid. Desktop uses a centered reading measure around 680-760px with a 224-280px quiet right rail and 24-48px gutters. Hairline dividers align with passage starts and rail nodes.

### Responsive

On mobile, source chips open bottom sheets or inline bundles, thread breadcrumbs wrap to a horizontal trail, and the vermilion knot remains visible near the relevant passage rather than in a distant rail.

### Whitespace

Use ma-like negative space as pacing: 24px between paragraph clusters, 48px before major sections, 12px for chip/bundle internals. Empty space should clarify the active path rather than feel unfinished.

## Guidance

### Do

- Keep the reading column dominant and let navigation emerge from text selection, breadcrumbs, chips, and the right rail.
- Use indigo consistently for active thread, focus, selection, and source trail path.
- Use exactly one vermilion knot marker per view for the highest-order conflict, key decision, or active join.
- Attach source chips and citation handles directly to the claims they support.
- Reveal connectors on hover, focus, or selection instead of drawing a permanent graph.
- Make context bundles collapsible inline and preserve the reader’s scroll position.
- Use pale ash hairlines and warm paper surfaces to create structure before adding color.
- Express katagami influence through repeat logic, bridges, restraint, and cutout-like spacing—not motifs.

### Don't

- Do not draw literal yarn, looms, shuttles, fabric texture, waves, cranes, fans, or decorative Japanese patterns.
- Do not make a node-link graph the default navigation experience.
- Do not assign a different color to every thread, source type, or category.
- Do not fill the page with sticky dashboards, permanent metric cards, or dense chrome.
- Do not use vermilion for routine warnings, badges, buttons, or decoration.
- Do not detach source trails from the exact passage they support.
- Do not use low-contrast gray body text to simulate calmness.
- Do not over-animate connectors or create skeuomorphic weaving transitions.

### Accessibility

Maintain WCAG AA contrast for charcoal text and muted metadata. Indigo focus rings must be visible at 2px with offset. Do not rely on color alone: active paths need labels, selected states need position/weight changes, and the vermilion knot requires a text explanation. Citation handles and bundles must be keyboard reachable and screen-reader labeled.

### Usage Context

Best for dense text products: research synthesis, legal or policy review, evidence-backed AI writing, editorial workflows, decision logs, and knowledge systems where readers need to trace claims without losing the narrative.
DESIGN.md
---
version: "alpha"
name: "AYA Threadline Reading System"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  accent: "#D65A3A"
  background: "#FBFAF7"
  border: "#DDD8CE"
  error: "#B9462E"
  focus: "#6B8FB8"
  info: "#2F5D8C"
  muted: "#6F6A63"
  primary: "#2F5D8C"
  success: "#4F6F55"
  surface: "#FBFAF7"
  surface_alt: "#F3F1EB"
  text: "#22211F"
  warning: "#D65A3A"
typography:
  headline-lg:
    fontFamily: "Source Serif 4"
    fontSize: "1.953rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.01em"
  headline-md:
    fontFamily: "Source Serif 4"
    fontSize: "1.563rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.01em"
  body-md:
    fontFamily: "Source Sans 3"
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.62
    letterSpacing: "-0.01em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  full: "9999px"
  lg: "10px"
  md: "6px"
  none: "0px"
  sm: "2px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-focus:
    backgroundColor: "{colors.focus}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_alt:
    backgroundColor: "{colors.surface_alt}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    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"
---

# AYA Threadline Reading System

## Overview

A calm, evidence-forward reading and navigation language that treats dense text as a woven structure of passages, sources, and decisions. The metaphor remains architectural rather than illustrative: warp lines become narrow dividers and stable reading columns; weft lines become hover-revealed connectors between citations, breadcrumbs, and context bundles; knots mark only unresolved conflicts, key decisions, or active joins. The product should feel like warm paper with precise relational rules, not like a loom diagram or a decorative Japanese theme. Indigo identifies the active thread, selected passage, focus ring, and current source trail. Vermilion appears as a single knot per view to locate the one item that needs judgment. The system prioritizes reading flow, progressive disclosure, and source-trail accountability over dashboard chrome.

### Values

- reading first: one dominant text column with context revealed at the point of need
- evidence trails that remain visible without becoming a node-link graph
- restraint from katagami-like cutout logic: fine repeats, bridges, and negative space used as IA structure
- single active-thread accent instead of category color systems
- progressive disclosure for dense context, citations, and related passages
- decision clarity: one vermilion knot calls attention to the current conflict or join
- quiet craft through spacing, hairlines, and text hierarchy rather than ornament

### Anti-Values

- literal yarn, loom, shuttle, or woven-fabric illustrations
- node-link graphs as the primary navigation model
- rainbow thread categories or decorative color coding
- sticky dense dashboard chrome surrounding the reading surface
- Japanese motifs used as surface decoration without functional IA meaning
- source lists detached from the exact passage they support
- permanent context panels that compete with the main text

### Visual Character

- Warm white paper surfaces carry sumi-charcoal text and pale ash dividers.
- A single-column reading core is paired with a quiet right rail showing the active thread and source trail.
- Hairline rules act as warp lines: separators, passage anchors, and side-rail path segments.
- Inline citation handles and source chips sit close to claims; hovering or focusing reveals thin indigo connectors.
- Collapsible context bundles open inline under a paragraph rather than pushing the reader into a dashboard.
- One vermilion knot marker per view marks the unresolved conflict, key decision, or active join.
- Hierarchy is created by spacing, weight, and indentation before size jumps or color.

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| accent | `#D65A3A` |
| background | `#FBFAF7` |
| border | `#DDD8CE` |
| error | `#B9462E` |
| focus | `#6B8FB8` |
| info | `#2F5D8C` |
| muted | `#6F6A63` |
| primary | `#2F5D8C` |
| success | `#4F6F55` |
| surface | `#FBFAF7` |
| surface_alt | `#F3F1EB` |
| text | `#22211F` |
| warning | `#D65A3A` |

## Typography

- **Headline-Lg**: Source Serif 4, 1.953rem, weight 700, line-height 1.1.
- **Headline-Md**: Source Serif 4, 1.563rem, weight 600, line-height 1.15.
- **Body-Md**: Source Sans 3, 16px, weight 400, line-height 1.62.
- **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`

### Breakpoints

Mobile <= 640px stacks reading, breadcrumbs, and source trail; tablet 641-1024px keeps the rail collapsible; desktop >= 1025px shows the right rail persistently but quietly.

### Density

Reading core remains sparse and calm; context grows inline on demand. Metadata is compact and tabular but not sticky-heavy.

### Grid

8px base grid. Desktop uses a centered reading measure around 680-760px with a 224-280px quiet right rail and 24-48px gutters. Hairline dividers align with passage starts and rail nodes.

### Responsive

On mobile, source chips open bottom sheets or inline bundles, thread breadcrumbs wrap to a horizontal trail, and the vermilion knot remains visible near the relevant passage rather than in a distant rail.

### Whitespace

Use ma-like negative space as pacing: 24px between paragraph clusters, 48px before major sections, 12px for chip/bundle internals. Empty space should clarify the active path rather than feel unfinished.

## Elevation & Depth

### Shadows

- **Lg**: 0 18px 48px rgba(34,33,31,0.08)
- **Md**: 0 8px 20px rgba(34,33,31,0.06)
- **Sm**: 0 1px 2px rgba(34,33,31,0.04)

## Shapes

### Rounded

- **Full**: `9999px`
- **Lg**: `10px`
- **Md**: `6px`
- **None**: `0px`
- **Sm**: `2px`

### Surfaces

- **Bg Pattern**: Optional 48px vertical hairline rhythm at extremely low contrast to support alignment, not decoration.
- **Card Style**: Low-elevation paper panels with 1px ash borders, 10px radius only for bundles, and no decorative fills.
- **Treatment**: Warm paper field with slightly darker ash side annotations and inset context bundles.

### Borders

- **Accent Width**: 2px
- **Character**: Pale ash hairlines used as warp rules; indigo only for active path and focus; vermilion only for the single knot.
- **Default Width**: 1px
- **Style**: solid

## Components

### Composition

Use a single-column reading core as the home position. On desktop, place a narrow right rail for active thread, source trail, and current path; on smaller screens, collapse the rail into a top breadcrumb/source-trail strip and inline drawers. Align all passages, citation handles, bundles, and rail markers to an 8px grid with 12, 24, and 48px rhythm. Let narrow dividers act as warp lines, but keep them structural and nearly neutral. Dashboard-style summaries may exist only as destinations reached from text selections or source chips, never as the default landing layout.

### Density

Medium-low density for long reading sessions: generous line height, 24px paragraph group spacing, 48px section breathing room, compact but legible source chips, and collapsible context bundles that open only on intent. Keep chrome light; avoid permanent dashboards and multi-panel clutter.

### Hierarchy

Text is primary. Use weight, line height, indentation, and spacing before color. Indigo marks active thread, active source path, selected passage, focus ring, or an inline connector only. Vermilion is limited to one knot per view and must identify an unresolved conflict, key decision, or active join. Muted metadata and tabular numerals support scanability without overwhelming the paragraph.

### Signature Patterns

- Thread breadcrumb: a top or right-rail path with thin indigo segment for the active thread and pale ash segments for ancestors.
- Source chip: compact claim-adjacent pill with source shortname, timestamp or page, and a hover/focus connector to the right rail.
- Inline citation handle: bracketed or superscript handle that opens a small evidence popover and can expand into an inline context bundle.
- Context bundle: collapsible paper inset directly beneath the relevant passage, with a pale ash left rule and optional indigo active connector.
- Knot marker: one small vermilion diamond/dot on the passage edge or rail, paired with text explaining the conflict or decision.
- Side rail source trail: quiet vertical path showing current passage, supporting sources, previous/next thread, and one active join if present.
- Hover-revealed connector: hairline indigo rule appears only on hover/focus/selection to connect claim, chip, and rail without permanent graph clutter.

## 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-019ee038-8c08-7de2-bc16-23b20df617d2/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 Keep the reading column dominant and let navigation emerge from text selection, breadcrumbs, chips, and the right rail.
- Do Use indigo consistently for active thread, focus, selection, and source trail path.
- Do Use exactly one vermilion knot marker per view for the highest-order conflict, key decision, or active join.
- Do Attach source chips and citation handles directly to the claims they support.
- Do Reveal connectors on hover, focus, or selection instead of drawing a permanent graph.
- Do Make context bundles collapsible inline and preserve the reader’s scroll position.
- Do Use pale ash hairlines and warm paper surfaces to create structure before adding color.
- Do Express katagami influence through repeat logic, bridges, restraint, and cutout-like spacing—not motifs.
- Don't Do not draw literal yarn, looms, shuttles, fabric texture, waves, cranes, fans, or decorative Japanese patterns.
- Don't Do not make a node-link graph the default navigation experience.
- Don't Do not assign a different color to every thread, source type, or category.
- Don't Do not fill the page with sticky dashboards, permanent metric cards, or dense chrome.
- Don't Do not use vermilion for routine warnings, badges, buttons, or decoration.
- Don't Do not detach source trails from the exact passage they support.
- Don't Do not use low-contrast gray body text to simulate calmness.
- Don't Do not over-animate connectors or create skeuomorphic weaving transitions.

### Accessibility

Maintain WCAG AA contrast for charcoal text and muted metadata. Indigo focus rings must be visible at 2px with offset. Do not rely on color alone: active paths need labels, selected states need position/weight changes, and the vermilion knot requires a text explanation. Citation handles and bundles must be keyboard reachable and screen-reader labeled.

### Usage Context

Best for dense text products: research synthesis, legal or policy review, evidence-backed AI writing, editorial workflows, decision logs, and knowledge systems where readers need to trace claims without losing the narrative.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "aya-threadline-reading-system",
  "type": "registry:theme",
  "title": "AYA Threadline Reading System shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FBFAF7",
      "foreground": "#22211F",
      "card": "#FBFAF7",
      "card-foreground": "#22211F",
      "popover": "#FBFAF7",
      "popover-foreground": "#22211F",
      "primary": "#2F5D8C",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#6F6A63",
      "muted-foreground": "#22211F",
      "accent": "#D65A3A",
      "accent-foreground": "#ffffff",
      "destructive": "#B9462E",
      "border": "#DDD8CE",
      "input": "#DDD8CE",
      "ring": "#D65A3A",
      "chart-1": "#2F5D8C",
      "chart-2": "#f4f4f5",
      "chart-3": "#D65A3A",
      "chart-4": "#4F6F55",
      "chart-5": "#D65A3A",
      "sidebar": "#FBFAF7",
      "sidebar-foreground": "#22211F",
      "sidebar-primary": "#2F5D8C",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2F5D8C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#DDD8CE",
      "sidebar-ring": "#D65A3A",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#2F5D8C",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D65A3A",
      "accent-foreground": "#ffffff",
      "destructive": "#B9462E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D65A3A",
      "chart-1": "#2F5D8C",
      "chart-2": "#f4f4f5",
      "chart-3": "#D65A3A",
      "chart-4": "#4F6F55",
      "chart-5": "#D65A3A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#2F5D8C",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#D65A3A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D65A3A",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ee038-8c08-7de2-bc16-23b20df617d2",
    "slug": "aya-threadline-reading-system",
    "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": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "focus",
        "info",
        "muted",
        "primary",
        "success",
        "surface",
        "surface_alt",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font"
      ]
    }
  }
}
```
in the wild

embodiments

Design Language Preview

AYA Threadline Reading System

Color Palette

primary
secondary
accent
background
surface
text
muted
border
error
success
warning
info

Typography

h1

Heading One

h2

Heading Two

h3

Heading Three

h4

Heading Four

body

Body text demonstrates the reading experience. Good typography is invisible — it lets the content speak without drawing attention to the letterforms themselves.

caption

Caption text for supplementary information and metadata.

code
const theme = applyTokens(designLanguage);
render(<App theme={theme} />);

Buttons

Form Controls

Navigation

tabs
Overview content area with contextual information about the design language.
segmented control
dropdown menu

Feedback & Status

badges
NewDefaultActivePendingErrorOutline
alerts
Info: A new version is available.
Success: Changes saved successfully.
Warning: Storage is almost full.
Error: Failed to process request.
progress
66% complete
tooltip
avatar
AKJDML

Containers & Overlays

card

Card Title

Cards group related content and actions. This example shows a basic content card with a title and description.

accordion

Design tokens are the atomic values of a design system — colors, spacing, typography, and other values stored as key-value pairs.

dialog
separator

Data Display

table
NameStatusCategoryScore
Neo BrutalismPublishedMaximalist94
Aero GlassDraftSpatial87
Signal UIReviewEnterprise91
stat cards
Languages
42
+12%
Elements
3,150
+8%
Usage
18.4k
+23%
DESIGN.md

at a glance

Palette

Typography

headline-lgSource Serif 4 · 31px · 700

The quick brown fox jumps

headline-mdSource Serif 4 · 25px · 600

The quick brown fox jumps

body-mdSource Sans 3 · 16px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

Components

New
Card title

Components rendered with this language’s tokens — colors, type, and rounded corners as specified.

Spacing

  • base8px
  • xs4px
  • sm8px
  • md12px
  • lg16px
  • xl24px
  • 2xl32px
  • 3xl48px
  • 4xl64px
  • step-896px

Shape

full9999px
lg10px
md6px
none0px
sm2px
shadcn/ui

implementation kit

needs agent-authored kitcompatibility fallback
shadcn compatibility only
The generated theme variables are available, but the polished shadcn component recipes and shots have not been authored by the Katagami agent yet.
fallbackprimitives render
Compatibility proof
Local shadcn-style primitives accept the generated theme variables.
primaryaccentsurfacemutederror
table rhythm
buttonok
cardok
inputok
recommendedcompatibility fallback

DESIGN.md with shadcn

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.

advanced implementation filesoptional machine-readable theme, CSS, TSX starter, recipes, and preview contract
shadcn add
npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table
theme css
:root {
  --background: #FBFAF7;
  --foreground: #22211F;
  --card: #FBFAF7;
  --card-foreground: #22211F;
  --popover: #FBFAF7;
  --popover-foreground: #22211F;
  --primary: #2F5D8C;
  --primary-foreground: #ffffff;
  --secondary: #f4f4f5;
  --secondary-foreground: #111111;
  --muted: #6F6A63;
  --muted-foreground: #22211F;
  --accent: #D65A3A;
  --accent-foreground: #ffffff;
  --destructive: #B9462E;
  --border: #DDD8CE;
  --input: #DDD8CE;
  --ring: #D65A3A;
  --chart-1: #2F5D8C;
  --chart-2: #f4f4f5;
  --chart-3: #D65A3A;
  --chart-4: #4F6F55;
  --chart-5: #D65A3A;
  --sidebar: #FBFAF7;
  --sidebar-foreground: #22211F;
  --sidebar-primary: #2F5D8C;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #2F5D8C;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #DDD8CE;
  --sidebar-ring: #D65A3A;
  --radius: 6px;
}

.dark {
  --background: #0f1115;
  --foreground: #f8fafc;
  --card: #181b22;
  --card-foreground: #f8fafc;
  --popover: #181b22;
  --popover-foreground: #f8fafc;
  --primary: #2F5D8C;
  --primary-foreground: #ffffff;
  --secondary: #252a33;
  --secondary-foreground: #f8fafc;
  --muted: #252a33;
  --muted-foreground: #a1a1aa;
  --accent: #D65A3A;
  --accent-foreground: #ffffff;
  --destructive: #B9462E;
  --border: #303642;
  --input: #303642;
  --ring: #D65A3A;
  --chart-1: #2F5D8C;
  --chart-2: #f4f4f5;
  --chart-3: #D65A3A;
  --chart-4: #4F6F55;
  --chart-5: #D65A3A;
  --sidebar: #181b22;
  --sidebar-foreground: #f8fafc;
  --sidebar-primary: #2F5D8C;
  --sidebar-primary-foreground: #ffffff;
  --sidebar-accent: #D65A3A;
  --sidebar-accent-foreground: #ffffff;
  --sidebar-border: #303642;
  --sidebar-ring: #D65A3A;
  --radius: 6px;
}
tsx starter
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 AyaThreadlineReadingSystemShadcnKit() {
  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">AYA Threadline Reading System</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>
  );
}
theme JSONcompatibility fallback
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "aya-threadline-reading-system",
  "type": "registry:theme",
  "title": "AYA Threadline Reading System shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FBFAF7",
      "foreground": "#22211F",
      "card": "#FBFAF7",
      "card-foreground": "#22211F",
      "popover": "#FBFAF7",
      "popover-foreground": "#22211F",
      "primary": "#2F5D8C",
      "primary-foreground": "#ffffff",
      "secondary": "#f4f4f5",
      "secondary-foreground": "#111111",
      "muted": "#6F6A63",
      "muted-foreground": "#22211F",
      "accent": "#D65A3A",
      "accent-foreground": "#ffffff",
      "destructive": "#B9462E",
      "border": "#DDD8CE",
      "input": "#DDD8CE",
      "ring": "#D65A3A",
      "chart-1": "#2F5D8C",
      "chart-2": "#f4f4f5",
      "chart-3": "#D65A3A",
      "chart-4": "#4F6F55",
      "chart-5": "#D65A3A",
      "sidebar": "#FBFAF7",
      "sidebar-foreground": "#22211F",
      "sidebar-primary": "#2F5D8C",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#2F5D8C",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#DDD8CE",
      "sidebar-ring": "#D65A3A",
      "radius": "6px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#2F5D8C",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#D65A3A",
      "accent-foreground": "#ffffff",
      "destructive": "#B9462E",
      "border": "#303642",
      "input": "#303642",
      "ring": "#D65A3A",
      "chart-1": "#2F5D8C",
      "chart-2": "#f4f4f5",
      "chart-3": "#D65A3A",
      "chart-4": "#4F6F55",
      "chart-5": "#D65A3A",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#2F5D8C",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#D65A3A",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#303642",
      "sidebar-ring": "#D65A3A",
      "radius": "6px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ee038-8c08-7de2-bc16-23b20df617d2",
    "slug": "aya-threadline-reading-system",
    "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": {
      "borders": [
        "accent_width",
        "character",
        "default_width",
        "style"
      ],
      "colors": [
        "accent",
        "background",
        "border",
        "error",
        "focus",
        "info",
        "muted",
        "primary",
        "success",
        "surface",
        "surface_alt",
        "text",
        "warning"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "letter_spacing",
        "line_height",
        "mono_font"
      ]
    }
  }
}
component recipescompatibility fallback
# AYA Threadline Reading System shadcn/ui Components

Artifact: `component-recipes-v1`
Author: `katagami-ui-projection`
Language ID: `en-019ee038-8c08-7de2-bc16-23b20df617d2`
Slug: `aya-threadline-reading-system`

## Intent

A calm, evidence-forward reading and navigation language that treats dense text as a woven structure of passages, sources, and decisions. The metaphor remains architectural rather than illustrative: warp lines become narrow dividers and stable reading columns; weft lines become hover-revealed connectors between citations, breadcrumbs, and context bundles; knots mark only unresolved conflicts, key decisions, or active joins. The product should feel like warm paper with precise relational rules, not like a loom diagram or a decorative Japanese theme. Indigo identifies the active thread, selected passage, focus ring, and current source trail. Vermilion appears as a single knot per view to locate the one item that needs judgment. The system prioritizes reading flow, progressive disclosure, and source-trail accountability over dashboard chrome.

## Required primitives

- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Install with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

## Token cues

Colors:

{
  "accent": "#D65A3A",
  "background": "#FBFAF7",
  "border": "#DDD8CE",
  "error": "#B9462E",
  "focus": "#6B8FB8",
  "info": "#2F5D8C",
  "muted": "#6F6A63",
  "primary": "#2F5D8C",
  "success": "#4F6F55",
  "surface": "#FBFAF7",
  "surface_alt": "#F3F1EB",
  "text": "#22211F",
  "warning": "#D65A3A"
}

Typography:

{
  "base_size": "16px",
  "body_font": "Source Sans 3",
  "google_fonts_url": "https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@400;500;600;700&family=Source+Serif+4:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap",
  "heading_font": "Source Serif 4",
  "letter_spacing": "-0.01em",
  "line_height": 1.62,
  "mono_font": "IBM Plex Mono"
}

## Visual character to preserve

- Warm white paper surfaces carry sumi-charcoal text and pale ash dividers.
- A single-column reading core is paired with a quiet right rail showing the active thread and source trail.
- Hairline rules act as warp lines: separators, passage anchors, and side-rail path segments.
- Inline citation handles and source chips sit close to claims; hovering or focusing reveals thin indigo connectors.
- Collapsible context bundles open inline under a paragraph rather than pushing the reader into a dashboard.
- One vermilion knot marker per view marks the unresolved conflict, key decision, or active join.
- Hierarchy is created by spacing, weight, and indentation before size jumps or color.

## ShadSync visual profile

{
  "family": "paper-collage",
  "material": "paper",
  "contour": "pebble",
  "border": "solid",
  "underlay": false,
  "grain": true,
  "stickerBadges": true,
  "motion": "still",
  "density": "dense",
  "accents": [
    "primary",
    "accent",
    "secondary",
    "muted"
  ]
}

## Signature component recipes

### Button
Use `Button` for primary, secondary, outline, and ghost actions. Primary actions must expose the language's strongest contrast pair, while secondary and ghost actions should preserve the surface treatment instead of falling back to default neutral SaaS styling.

### Card
Use `Card`, `CardHeader`, `CardContent`, `CardFooter`, and `CardAction` as the main composition frame. Cards should demonstrate the language's surface, border, hierarchy, and density rules rather than appearing as generic rounded rectangles.

### Input and Textarea
Use `Input` and `Textarea` with visible focus rings, field labels, validation states, and the language's rhythm. Forms should show real product content, not placeholder-only controls.

### Select, Tabs, and Table
Use `Select`, `Tabs`, and `Table` to prove navigation, filtering, and dense data states. The table should show row rhythm, separators, hover/focus states, and an empty or status state when the language calls for it.

### Dialog and Sheet
Use `Dialog` for centered decisions and `Sheet` for contextual editing. Both should inherit the language's spacing, border, overlay, and motion rules.

## Preview shots

- `application-shell`: dashboard or workspace shell with navigation, cards, forms, and state badges.
- `detail-editor`: focused editing flow using input, textarea, select, switch/checkbox, dialog or sheet, and action buttons.
- `data-operations`: table-heavy operational view with tabs, dropdown menu affordances, badges, and destructive/empty states.
- Each preview shot must include a renderable `scene` payload with concrete headline, description, actions, and rows/fields/stats for the UI preview.

## Implementation contract

- Start from local `ui/src/components/ui` shadcn-style primitives; do not create a second component system.
- Apply `/katagami/shadcn/aya-threadline-reading-system/registry-theme.json` variables, then use these recipes for composition and state design.
- Preserve Katagami token names as source metadata; shadcn semantic names are only the export surface.
- Do: Keep the reading column dominant and let navigation emerge from text selection, breadcrumbs, chips, and the right rail.; Use indigo consistently for active thread, focus, selection, and source trail path.; Use exactly one vermilion knot marker per view for the highest-order conflict, key decision, or active join.; Attach source chips and citation handles directly to the claims they support.; Reveal connectors on hover, focus, or selection instead of drawing a permanent graph.; Make context bundles collapsible inline and preserve the reader’s scroll position.; Use pale ash hairlines and warm paper surfaces to create structure before adding color.; Express katagami influence through repeat logic, bridges, restraint, and cutout-like spacing—not motifs.
- Do not: Do not draw literal yarn, looms, shuttles, fabric texture, waves, cranes, fans, or decorative Japanese patterns.; Do not make a node-link graph the default navigation experience.; Do not assign a different color to every thread, source type, or category.; Do not fill the page with sticky dashboards, permanent metric cards, or dense chrome.; Do not use vermilion for routine warnings, badges, buttons, or decoration.; Do not detach source trails from the exact passage they support.; Do not use low-contrast gray body text to simulate calmness.; Do not over-animate connectors or create skeuomorphic weaving transitions.

## Copy-paste component example

This generated starter proves the import shape. Production Katagami agents should replace it with a language-specific product composition.

```tsx
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 AyaThreadlineReadingSystemShadcnKit() {
  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">AYA Threadline Reading System</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>
  );
}
```

## Layout notes

{
  "breakpoints": "Mobile <= 640px stacks reading, breadcrumbs, and source trail; tablet 641-1024px keeps the rail collapsible; desktop >= 1025px shows the right rail persistently but quietly.",
  "density": "Reading core remains sparse and calm; context grows inline on demand. Metadata is compact and tabular but not sticky-heavy.",
  "grid": "8px base grid. Desktop uses a centered reading measure around 680-760px with a 224-280px quiet right rail and 24-48px gutters. Hairline dividers align with passage starts and rail nodes.",
  "responsive": "On mobile, source chips open bottom sheets or inline bundles, thread breadcrumbs wrap to a horizontal trail, and the vermilion knot remains visible near the relevant passage rather than in a distant rail.",
  "whitespace": "Use ma-like negative space as pacing: 24px between paragraph clusters, 48px before major sections, 12px for chip/bundle internals. Empty space should clarify the active path rather than feel unfinished."
}
preview shotscompatibility fallback
{
  "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-019ee038-8c08-7de2-bc16-23b20df617d2",
    "name": "AYA Threadline Reading System",
    "slug": "aya-threadline-reading-system"
  },
  "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": [
    "Warm white paper surfaces carry sumi-charcoal text and pale ash dividers.",
    "A single-column reading core is paired with a quiet right rail showing the active thread and source trail.",
    "Hairline rules act as warp lines: separators, passage anchors, and side-rail path segments.",
    "Inline citation handles and source chips sit close to claims; hovering or focusing reveals thin indigo connectors.",
    "Collapsible context bundles open inline under a paragraph rather than pushing the reader into a dashboard.",
    "One vermilion knot marker per view marks the unresolved conflict, key decision, or active join.",
    "Hierarchy is created by spacing, weight, and indentation before size jumps or color."
  ],
  "visualProfile": {
    "family": "paper-collage",
    "material": "paper",
    "contour": "pebble",
    "border": "solid",
    "underlay": false,
    "grain": true,
    "stickerBadges": true,
    "motion": "still",
    "density": "dense",
    "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": "AYA Threadline Reading System 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": [
      "Keep the reading column dominant and let navigation emerge from text selection, breadcrumbs, chips, and the right rail.",
      "Use indigo consistently for active thread, focus, selection, and source trail path.",
      "Use exactly one vermilion knot marker per view for the highest-order conflict, key decision, or active join.",
      "Attach source chips and citation handles directly to the claims they support.",
      "Reveal connectors on hover, focus, or selection instead of drawing a permanent graph.",
      "Make context bundles collapsible inline and preserve the reader’s scroll position.",
      "Use pale ash hairlines and warm paper surfaces to create structure before adding color.",
      "Express katagami influence through repeat logic, bridges, restraint, and cutout-like spacing—not motifs."
    ],
    "dont": [
      "Do not draw literal yarn, looms, shuttles, fabric texture, waves, cranes, fans, or decorative Japanese patterns.",
      "Do not make a node-link graph the default navigation experience.",
      "Do not assign a different color to every thread, source type, or category.",
      "Do not fill the page with sticky dashboards, permanent metric cards, or dense chrome.",
      "Do not use vermilion for routine warnings, badges, buttons, or decoration.",
      "Do not detach source trails from the exact passage they support.",
      "Do not use low-contrast gray body text to simulate calmness.",
      "Do not over-animate connectors or create skeuomorphic weaving transitions."
    ]
  }
}
related

More like this