Theme-Migration in zwei Wellen, von der App-eigenen Lösung hin zur geteilten @mana/shared-ui/@mana/themes-Basis.
Welle 2b (b7ab882): app.css zieht base.css + all.css rein. Der who-eigene Theme-Store nutzte non-prefixed Tokens (--background, --card, --destructive); statt sie zu ersetzen, werden sie als Aliase auf das 12-Token-Vokabular gemappt (--background: var(--color-background)). Brand-Purple bleibt als --color-primary-Override stehen. FOUC-Init-Script in app.html mit Default-Variant neutral. Der Theme-Store wechselt von data-theme="dark"/"light" auf Variant-Wahl (neutral), der Hell/Dunkel-Modus läuft weiter über die .dark-Klasse. Bewusst als „partielle" Migration angelegt — der volle Variant-Picker mit mana-auth-Sync hätte mit dem bestehenden Store kollidiert, also vertagt.
Welle 5 (a67253d): kurz darauf der volle Schritt — der who-eigene Store (light/dark/system, localStorage-Key who.theme) komplett durch shared-uis createThemeStore ersetzt. Ein Backwards-compat-Wrapper hält die API stabil (theme.mode, isDark, initialize(), toggle() als Alias auf cycleMode), neu kommen variant, setVariant, effectiveMode. Alle 8 @mana/themes-Variants sind erreichbar, Default neutral. Cross-App-Sync über mana-auth noch nicht aktiv (who hängt an @mana/shared-auth statt shared-auth-sso) — Hook für authUrl/getAccessToken ist im Wrapper vorgesehen, sobald die Auth-Migration kommt.
Bekannter Migrations-Effekt: der alte Key who.theme wird nicht auf mana-theme:who migriert, die Mode-Wahl der User geht beim Update einmalig verloren — als akzeptabler Einmal-Verlust in Kauf genommen.