- Remove italic styling from headers throughout app
- Reduce excessive font-black to font-bold
- Clean up tracking-widest to tracking-wider
- Normalize button styling across pages
- Boost text contrast in both themes
- Strengthen border visibility (subtle borders now visible)
- Convert 39 files from hardcoded dark:/light: to CSS vars
- Tertiary text now more readable on both backgrounds
- Add cn import to UserMenu.tsx
- Add Plus import to RoomDetailPage.tsx
- Fix MOCK_ROOMS strains readonly type in DashboardPage.tsx
- Refactor RoomsPage.tsx with Control Room aesthetic
- Room cards now have colored header backgrounds per type (VEG=green, FLOWER=purple, DRY=amber, CURE=orange, etc.)
- Cards are clickable, linking to /rooms/:id
- New RoomDetailPage with gradient header, sensor metrics with sparklines, active batches list
- Backend: GET /rooms/:id endpoint returns room with batches
- Temp/humidity now large and center with colored icons
- Size and capacity compressed to header subtitle
- Batch count with status indicator dot
- Cleaner visual hierarchy
- Complete UI refactor with charcoal/bone color palette
- Add Space Grotesk font for headlines, Inter for body
- Update all 24+ pages with new design system
- Add LinearPrimitives reusable components
- Improve dark mode support throughout
- Add subtle micro-animations and transitions
- Lazy load all pages for 24% bundle size reduction (575KB → 436KB)
- Created templates: PageTemplate, ComponentTemplate, WidgetTemplate
- Updated RoomsPage and IPMDashboardPage with PageHeader
- All routes wrapped in Suspense with PageLoader component
- Fixed malformed router.tsx structure