- Add SidebarTrigger import (NAV-04)
- Replace plain h2 with gradient span wordmark using oklch 260-300 purple sweep (NAV-02)
- Override SidebarMenuButton active state with sidebar-primary for high contrast (NAV-03)
- Add header bar with SidebarTrigger inside SidebarInset (NAV-04)
- Add p-4 padding to main content area
- NAV-01 satisfied by existing bg-sidebar token on sidebar element
- Fix palette.test.ts: use type-only import for CategoryType (verbatimModuleSyntax)
- Fix vite.config.ts: import defineConfig from vitest/config for test property support
- Fix tsconfig.node.json: add vitest/globals to types array
- Fix AvailableBalance.tsx: split typed array and filter to preserve CategoryType literal
- Shared TableCell with display/edit mode toggle
- Calls onSave(number) on blur or Enter key
- Skips save when value unchanged or NaN
- Accepts className for amount coloring
- renders formatted currency in display mode
- enters edit mode on click
- calls onSave with parsed number on blur/Enter
- does not call onSave when value unchanged
- Export CategoryType union type with 7 category strings
- Export CategoryShades interface with light/medium/base fields
- Export palette Record with oklch values matching --chart-* CSS tokens
- Export headerGradient() returning CSSProperties with linear-gradient
- Export overviewHeaderGradient() with multi-stop sky/lavender/green gradient
- Export amountColorClass() for text-success/text-warning/text-destructive
- All 20 unit tests pass
- Tests cover all 7 CategoryType values with 3 shades each
- Tests for headerGradient returning valid CSSProperties with linear-gradient
- Tests for overviewHeaderGradient multi-stop gradient
- Tests for amountColorClass: income, available, and expense paths
- Update all :root tokens with lavender-tinted pastel oklch values
- Map --chart-1 through --chart-5 to category base colors (bill, variable_expense, debt, saving, investment)
- Add --success and --warning semantic tokens with foreground pairs
- Register --color-success and --color-warning in @theme inline for Tailwind utility access
- Preserve --card and --popover as pure white (intentional locked decision)
- Leave .dark block unchanged (out of scope)