Previously sageReloadMenu only set sidebar width when collapsed (64px).
When expanded, the inline width was never restored, leaving the sidebar
potentially stuck at collapsed width after menu rebuild. The menu text
widgets (filler class with overflow:hidden) would clip labels to ~1 char.
Now both collapsed (64px) and expanded (240px) states explicitly set
sidebar.el.style.width and updateSidebarIcon after menu rebuild.
1. load_dashboard.py: get_today_usage/amount and trend functions now
filter out accounting_status='failed' records so failed transactions
are not counted as successful.
2. stat_errors.ui: added click bind to navigate to llmage failed
accounting records page (app.sage_main_content target).
- Add 5 virtual human API endpoints (rl_virtual_create_group, rl_virtual_groups, rl_virtual_upload, rl_virtual_status, rl_virtual_assets)
- Include complete request/response examples with curl test cases
- Add virtual human error documentation
- Restore real person asset error documentation
- Add get_usage_trend() and get_amount_trend() functions for day-over-day comparison
- Display trend arrows (up/down/flat) with percentage change in stat_today_usage and stat_today_amount
- Add colored left borders to all stat cards for visual distinction:
- Blue: usage, total users
- Purple: amount, total orgs
- Green: active users, new users this month
- Cyan: concurrent users
- Red: errors
- Enhance visual hierarchy with accent colors matching SVG icons
- Change top models from Top 3 to Top 5
- Simplify titles: remove 'Top X' and parenthetical details
- Replace separate user tables (by amount/by count) with single ChartBar
- Replace separate provider tables with single ChartBar
- Add get_top_users_combined and get_top_providers_combined functions
Remove duplicate unprotected card that was always rendered regardless
of role, causing 403 for non-customer users. Keep only the customer-
only version wrapped in {% if 'customer.*' in roles %}.