Challenge 2: A Custom MaterialTheme — Solution private val AppColorScheme = lightColorScheme( primary = Color(0xFF3DDC84), onPrimary = Color(0xFF0F1117) ) @Composable fun MyAppTheme(content: @Composable () -> Unit) { MaterialTheme( colorScheme = AppColorScheme, typography = Typography(), content = content ) } @Composable fun DemoScreen() { MyAppTheme { Column(modifier = Modifier.padding(16.dp)) { Text("Themed Screen") Button(onClick = { }) { Text("Click Me") } } } } Notes: - Every composable nested inside MyAppTheme { } (Text, Button, and anything they themselves contain) can implicitly read MaterialTheme.colorScheme — a default Material Button reads colorScheme.primary for its background automatically, without being individually styled, exactly like an unstyled Button picked up colorPrimary from an XML theme back in Course 1 Chapter 8. - lightColorScheme(...) only needs to override the specific colors that differ from Material's defaults (primary, onPrimary here) — every other color role (secondary, background, surface, etc.) falls back to Compose's built-in Material defaults automatically. - DemoScreen must be wrapped in MyAppTheme (or MyAppTheme applied higher up, e.g. around setContent { } in MainActivity) for the custom colors to actually take effect — a composable outside any MaterialTheme wrapper falls back to Compose's own built-in default theme instead.