Symptom

Text appeared black in dark theme after PR #507 (fix for light-theme text contrast).

Root cause

MaterialTheme does not set LocalContentColor. Before #507, DarkBlueGrayTypography baked explicit off-white values (Color(0xFFE0E0E0) etc.) into every TextStyle, which happened to keep dark-theme text readable even without a Surface wrapper. After #507 removed those hardcoded colors (correctly, because they were invisible on the light scheme’s white background), text fell back to Compose’s root default LocalContentColor — which is Color.Black. Screens that sit inside a Surface were unaffected because Surface seeds LocalContentColor from onSurface; screens that don’t use Surface went black.

Fix

DarkBlueGrayTheme now wraps its content in a CompositionLocalProvider(LocalContentColor provides MaterialTheme.colorScheme.onBackground) block immediately inside the MaterialTheme call. This seeds the correct on-color from the active scheme (near-black for light, off-white-gray for dark) before any content composable reads LocalContentColor, without changing background painting or requiring every screen to add a Surface.

Prevention