Dark mode switched to a standard library
No visible change, but dark/light appearance now runs on a well-tested third-party library instead of hand-rolled code, as groundwork for rebuilding the app's cards, buttons, and dialogs on a shared component library.