Sprint 2 high-priority cleanup: layout preference read/write called raw localStorage from a component, violating the no-raw-localStorage rule. Now uses the shared core/storage/LocalStorageService (same as cart/language/location services). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>