Changed
- Consistent loading feedback: a shared skeleton loading language (
public/utils/skeleton.js→renderSkeletonList()) replaces the per-module "loading…" text placeholders in Budget, Meals, and Housekeeping. The skeleton classes (.skeleton-list/.skeleton-card/.skeleton-line) now live globally inlayout.cssinstead of only indashboard.css. - Z-index discipline: the two remaining magic-number z-indexes (
9999skip link,1000kanban drag ghost) are mapped to new semantic tokens (--z-skip-link,--z-drag) on the documented scale.
Fixed
- Skeleton widths outside the dashboard: the
.skeleton-line--short/medium/fullvariants previously lived only indashboard.cssand silently had no effect on other pages (Tasks, Shopping), because CSS is loaded per module; they are now globally available. - Skeleton and reduced motion: the skeleton shimmer now respects
prefers-reduced-motion: reduce(static surface instead of animation).