2026-04-27 02:52:15 +00:00
{
"sumi" : {
2026-04-27 14:57:12 +00:00
"_comment" : "Light theme overrides — washi paper aesthetic ([data-theme=\"light\"]). Theme-tuned hex/opacity values (preserved byte-for-byte from former apps/web/src/index.css [data-theme=\"light\"] block). The rest inherits from dark.json :root selector." ,
refactor(design-system): tokenize all theme-independent --sumi-* (Sprint 2 follow-up #1)
Migrate ink tones, washi tones, mizu/ai/vermillion aliases, semantic feedback
aliases, full typography (font/text/leading/tracking/weight), spacing scale,
radius, motion (durations + easings + transition shorthands), z-index, layout
primitives, and circadian state vars from apps/web/src/index.css to
packages/design-system/tokens/semantic/dark.json.
apps/web/src/index.css :
- Removed ~125 lines of duplicate --sumi-* declarations (theme-independent only).
- Kept theme-tuned values (bg/surface/border/text/accent/error/sage/gold/kin/
shadow/glass/scrollbar/live) — different opacities and hex per theme.
- Kept --sumi-patina-warmth (runtime state) + --sumi-grain-opacity (theme-dep).
- Kept --duration-fast / --duration-normal (non-prefixed Tailwind aliases).
- Kept shadcn/Radix mapping + layout primitives (--header-height: 4rem etc.).
packages/design-system/tokens/ :
- primitive/color.json : added vermillion-ink (#a04050), ai (#2a4e68 indigo),
contextual accents (graffiti/gaming/terminal/sakura), alpha.ivory-08.
- semantic/dark.json : exhaustive expansion (~150 tokens) covering all the
--sumi-* vars deleted from index.css, plus glass/scrollbar/shadow/transition
shorthands authored as full CSS values where references aren't sufficient.
- semantic/light.json : minimal overrides (theme-specific only) + grain-opacity
override (0.06 vs dark 0.04).
Result :
- index.css : 1523 → 1398 LOC (-125, ~8% smaller).
- tokens.css : 245 → 379 LOC (+134, full coverage of theme-independent vars).
- vite build OK (14s). No visual regression — theme-tuned values intact.
Light theme block (lines ~259-329 in index.css) intentionally left for a future
commit : every override there is theme-tuned with subtle hex/opacity diffs
that don't yet have 1:1 mappings in tokens. Will be migrated when light.json
expands to match tuned values exactly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:39:20 +00:00
2026-04-27 02:52:15 +00:00
"bg" : {
2026-04-27 14:57:12 +00:00
"void" : { "$value" : "#E8E3DB" , "$type" : "color" } ,
"base" : { "$value" : "#F2EDE6" , "$type" : "color" } ,
"raised" : { "$value" : "#F2EDE6" , "$type" : "color" } ,
"overlay" : { "$value" : "#F2EDE6" , "$type" : "color" } ,
"hover" : { "$value" : "#E8E3DB" , "$type" : "color" } ,
"active" : { "$value" : "#DED9D1" , "$type" : "color" } ,
"wash" : { "$value" : "#ECE7DF" , "$type" : "color" }
2026-04-27 02:52:15 +00:00
} ,
"surface" : {
2026-04-27 14:57:12 +00:00
"inset" : { "$value" : "#E0DBD3" , "$type" : "color" } ,
"subtle" : { "$value" : "#E8E3DB" , "$type" : "color" } ,
"card" : { "$value" : "#F2EDE6" , "$type" : "color" } ,
"elevated" : { "$value" : "#F7F2EB" , "$type" : "color" }
2026-04-27 02:52:15 +00:00
} ,
"border" : {
2026-04-27 14:57:12 +00:00
"faint" : { "$value" : "rgba(26,26,30, 0.04)" , "$type" : "color" } ,
"default" : { "$value" : "rgba(26,26,30, 0.06)" , "$type" : "color" } ,
"strong" : { "$value" : "rgba(26,26,30, 0.12)" , "$type" : "color" } ,
"focus" : { "$value" : "rgba(0,122,148, 0.45)" , "$type" : "color" } ,
"accent" : { "$value" : "rgba(0,122,148, 0.20)" , "$type" : "color" }
2026-04-27 02:52:15 +00:00
} ,
refactor(design-system): tokenize all theme-independent --sumi-* (Sprint 2 follow-up #1)
Migrate ink tones, washi tones, mizu/ai/vermillion aliases, semantic feedback
aliases, full typography (font/text/leading/tracking/weight), spacing scale,
radius, motion (durations + easings + transition shorthands), z-index, layout
primitives, and circadian state vars from apps/web/src/index.css to
packages/design-system/tokens/semantic/dark.json.
apps/web/src/index.css :
- Removed ~125 lines of duplicate --sumi-* declarations (theme-independent only).
- Kept theme-tuned values (bg/surface/border/text/accent/error/sage/gold/kin/
shadow/glass/scrollbar/live) — different opacities and hex per theme.
- Kept --sumi-patina-warmth (runtime state) + --sumi-grain-opacity (theme-dep).
- Kept --duration-fast / --duration-normal (non-prefixed Tailwind aliases).
- Kept shadcn/Radix mapping + layout primitives (--header-height: 4rem etc.).
packages/design-system/tokens/ :
- primitive/color.json : added vermillion-ink (#a04050), ai (#2a4e68 indigo),
contextual accents (graffiti/gaming/terminal/sakura), alpha.ivory-08.
- semantic/dark.json : exhaustive expansion (~150 tokens) covering all the
--sumi-* vars deleted from index.css, plus glass/scrollbar/shadow/transition
shorthands authored as full CSS values where references aren't sufficient.
- semantic/light.json : minimal overrides (theme-specific only) + grain-opacity
override (0.06 vs dark 0.04).
Result :
- index.css : 1523 → 1398 LOC (-125, ~8% smaller).
- tokens.css : 245 → 379 LOC (+134, full coverage of theme-independent vars).
- vite build OK (14s). No visual regression — theme-tuned values intact.
Light theme block (lines ~259-329 in index.css) intentionally left for a future
commit : every override there is theme-tuned with subtle hex/opacity diffs
that don't yet have 1:1 mappings in tokens. Will be migrated when light.json
expands to match tuned values exactly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:39:20 +00:00
2026-04-27 14:57:12 +00:00
"text-primary" : { "$value" : "#1A1A1E" , "$type" : "color" } ,
"text-secondary" : { "$value" : "#4A4A50" , "$type" : "color" } ,
"text-tertiary" : { "$value" : "#6B6660" , "$type" : "color" } ,
"text-disabled" : { "$value" : "#B5B0A8" , "$type" : "color" } ,
"text-inverse" : { "$value" : "#E8E3DB" , "$type" : "color" } ,
"text-link" : { "$value" : "#006B7F" , "$type" : "color" } ,
"accent" : { "$value" : "#007A94" , "$type" : "color" } ,
"accent-hover" : { "$value" : "#006B7F" , "$type" : "color" } ,
"accent-active" : { "$value" : "#008DAD" , "$type" : "color" } ,
"accent-subtle" : { "$value" : "rgba(0,122,148, 0.08)" , "$type" : "color" } ,
"accent-muted" : { "$value" : "rgba(0,122,148, 0.15)" , "$type" : "color" } ,
"accent-emphasis" : { "$value" : "#005A6B" , "$type" : "color" } ,
"error" : { "$value" : "rgba(180,80,70, 0.70)" , "$type" : "color" } ,
"error-hover" : { "$value" : "rgba(180,80,70, 0.80)" , "$type" : "color" } ,
"error-subtle" : { "$value" : "rgba(180,80,70, 0.08)" , "$type" : "color" } ,
"sage" : { "$value" : "rgba(60,100,70, 0.75)" , "$type" : "color" } ,
"sage-hover" : { "$value" : "rgba(60,100,70, 0.85)" , "$type" : "color" } ,
"sage-subtle" : { "$value" : "rgba(60,100,70, 0.08)" , "$type" : "color" } ,
"gold" : { "$value" : "rgba(160,125,40, 0.70)" , "$type" : "color" } ,
"gold-hover" : { "$value" : "rgba(160,125,40, 0.80)" , "$type" : "color" } ,
"gold-subtle" : { "$value" : "rgba(160,125,40, 0.08)" , "$type" : "color" } ,
"kin" : { "$value" : "#9a7208" , "$type" : "color" } ,
"kin-hover" : { "$value" : "#886008" , "$type" : "color" } ,
"kin-subtle" : { "$value" : "rgba(154,114,8, 0.06)" , "$type" : "color" } ,
"live" : { "$value" : "rgba(180,80,70, 0.70)" , "$type" : "color" } ,
"shadow-xs" : { "$value" : "0 0 4px rgba(26,26,30, 0.03)" , "$type" : "shadow" } ,
"shadow-sm" : { "$value" : "0 0 8px rgba(26,26,30, 0.04)" , "$type" : "shadow" } ,
"shadow-md" : { "$value" : "0 0 16px rgba(26,26,30, 0.06)" , "$type" : "shadow" } ,
"shadow-lg" : { "$value" : "0 0 24px rgba(26,26,30, 0.08)" , "$type" : "shadow" } ,
"shadow-xl" : { "$value" : "0 0 32px rgba(26,26,30, 0.10)" , "$type" : "shadow" } ,
"shadow-2xl" : { "$value" : "0 0 48px rgba(26,26,30, 0.12)" , "$type" : "shadow" } ,
"shadow-glow" : { "$value" : "0 0 0 3px rgba(0,122,148, 0.18)" , "$type" : "shadow" } ,
"shadow-kin" : { "$value" : "0 0 16px rgba(154,114,8, 0.12)" , "$type" : "shadow" } ,
"glass-bg" : { "$value" : "rgba(242,237,230, 0.85)" , "$type" : "color" } ,
"glass-border" : { "$value" : "rgba(26,26,30, 0.04)" , "$type" : "color" } ,
"scrollbar-thumb" : { "$value" : "rgba(26,26,30, 0.08)" , "$type" : "color" } ,
"scrollbar-hover" : { "$value" : "rgba(26,26,30, 0.16)" , "$type" : "color" } ,
refactor(design-system): tokenize all theme-independent --sumi-* (Sprint 2 follow-up #1)
Migrate ink tones, washi tones, mizu/ai/vermillion aliases, semantic feedback
aliases, full typography (font/text/leading/tracking/weight), spacing scale,
radius, motion (durations + easings + transition shorthands), z-index, layout
primitives, and circadian state vars from apps/web/src/index.css to
packages/design-system/tokens/semantic/dark.json.
apps/web/src/index.css :
- Removed ~125 lines of duplicate --sumi-* declarations (theme-independent only).
- Kept theme-tuned values (bg/surface/border/text/accent/error/sage/gold/kin/
shadow/glass/scrollbar/live) — different opacities and hex per theme.
- Kept --sumi-patina-warmth (runtime state) + --sumi-grain-opacity (theme-dep).
- Kept --duration-fast / --duration-normal (non-prefixed Tailwind aliases).
- Kept shadcn/Radix mapping + layout primitives (--header-height: 4rem etc.).
packages/design-system/tokens/ :
- primitive/color.json : added vermillion-ink (#a04050), ai (#2a4e68 indigo),
contextual accents (graffiti/gaming/terminal/sakura), alpha.ivory-08.
- semantic/dark.json : exhaustive expansion (~150 tokens) covering all the
--sumi-* vars deleted from index.css, plus glass/scrollbar/shadow/transition
shorthands authored as full CSS values where references aren't sufficient.
- semantic/light.json : minimal overrides (theme-specific only) + grain-opacity
override (0.06 vs dark 0.04).
Result :
- index.css : 1523 → 1398 LOC (-125, ~8% smaller).
- tokens.css : 245 → 379 LOC (+134, full coverage of theme-independent vars).
- vite build OK (14s). No visual regression — theme-tuned values intact.
Light theme block (lines ~259-329 in index.css) intentionally left for a future
commit : every override there is theme-tuned with subtle hex/opacity diffs
that don't yet have 1:1 mappings in tokens. Will be migrated when light.json
expands to match tuned values exactly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:39:20 +00:00
"grain-opacity" : { "$value" : "0.06" , "$type" : "number" , "$description" : "Grain plus prononcé sur papier washi" }
2026-04-27 02:52:15 +00:00
}
}