The auth pages looked wrong in light mode. Not broken — just wrong. The marketing site and the dashboard both lived in Nebula Dark, but the login screen defaulted to the user's theme preference. A visitor flowing from the dark marketing page to a bright white login form felt a visual whiplash that undermined the brand before they'd even authenticated.

Login, Register, and ForgotPassword now force dark mode on mount and restore the previous state on unmount. The theme isn't a preference on these pages — it's part of the experience.

The terms and privacy links were broken in production. Built with Inertia's <Link> component, they pointed to /terms on the app domain. But in production, those pages live on the marketing domain — a different subdomain. Changed to standard <a> tags pointing to the marketing URL. Added a /privacy route alias so both /privacy and /privacy-policy resolve, because both URLs had been shared with customers at different times.

The dashboard gained a migration progress ticker. A banner at the top of the Command Center showing how many orders have been linked to properties during the backfill — total, migrated, remaining. Polls every ten seconds. Auto-hides when complete. The kind of visibility that turns a background job from a mystery into a status bar.

The backfill itself: a BackfillOrderProperties queued job that processes orders per tenant, chunks of 200, ten-minute timeout. An artisan command dispatches the jobs with options for single-tenant mode, synchronous execution, and custom chunk sizes. Seventy thousand orders across multiple tenants, each one getting linked to its property record. The performance story of this backfill is told in the companion post about going from Eloquent to bulk SQL — a 175,000x speedup that made the difference between "runs overnight" and "runs in seconds."