Root AGENTS.md is now the single source of truth for coding agents; CLAUDE.md, GEMINI.md and docs/CLAUDE.md are pointers. The product spec moves from docs/CLAUDE.md to PRODUCT.md, DESIGN.md records the shipped visual system, and docs/PERMISSIONS.md defines agent permission tiers rendered to .claude/, .codex/ and .gemini/. Adds docs/specs/ and docs/plans/, logs issues noticed (not fixed) in WorkBreakdown.md. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.8 KiB
1.8 KiB
Design
Derived from the shipped src/index.css (single stylesheet, plain CSS, no framework). Describes what
exists, not an aspiration. Update in the same commit as visual changes.
Foundations
- Theme: dark only.
:rootsetscolor: #e8e8e8; background-color: #16181d(also the PWAtheme_color).color-scheme: light darkis declared but there is no light palette. - Tokens (
:root):--panel #1f232b·--border #343a46·--accent #7aa2f7·--muted #9aa3b2. Everything else is a hard-coded hex. - Semantic colours in use (hard-coded): success/ready text
#9ad6ae(bg#1d2b23, border#3d6b4f); error text#f2b8b5(bg#2a1c1e, border#8b3a3a); live/recording#e0605e; raised surfaces#262b34/#232a38. - Type:
Inter, system-ui, …stack — Inter is not loaded, so it renders in the system font unless installed locally. Body line-height 1.5;h12.2rem / 1.15. Any webfont must be self-hosted (COEP, see AGENTS.md). - Layout: single centred column,
.app { max-width: 720px; padding: 2.5rem 1.25rem 3rem; gap: 1.5rem },body { min-width: 320px }. - Radius: 8px for controls (most common); 10–14px for panels/cards; 999px for pills/badges.
- Motion:
0.15scolour/border transitions;pulse(live dot) andblink(cursor) animations, disabled underprefers-reduced-motion.
Components
One BEM-ish class block per React component in src/components/ (.model-picker, .dropzone,
.live-controls, .engine-toggle, .auth-panel, .update-toast, …), with modifier classes like
-selected, -active, -disabled. Interactive states use :hover:enabled and :focus-visible.
.visually-hidden exists for screen-reader-only text.
TODO(maintainer): confirm whether the dark-only theme is intentional, and whether hard-coded semantic colours should become tokens.