# Color & Theme Plan (Material 3) Goals - Remove Glassmorphism. Use Material 3 ColorScheme/typography/shape/elevation consistently. - Ensure light/dark/system modes with accessible contrast; no dark-on-dark text. - Semantic colors: primary/secondary/info/success/warning/error. Phases 1) Audit + Baseline - Inventory AppColors and Glass usages; map to ColorScheme. - Set `ColorScheme.error=#EF4444` (light/dark) and verify Snackbar uses. 2) Core Components - Settings: unify to `onSurface/onSurfaceVariant/primary` and fix Switch deprecations. - Home Summary: surface/elevation + on-colors; badges use surfaceContainer variants. - Add Subscription: selectors/fields to M3; disable glass flags. 3) Analysis & Lists - Charts: grid/labels to onSurfaceVariant; tooltips to inverseSurface. - Event/Detail sections: containers to surface + outline; text/icons to onSurface. 4) Theme & Cleanup - Refactor `app_theme.dart` to remove glass defaults; prefer ColorScheme-driven themes. - Replace remaining hard-coded colors (AppColors.*) with scheme; keep gradients sparingly. - Resolve lints: const constructors, deprecated APIs (activeColor, scale). Validation - Run `scripts/check.sh` every change. - Visual check in light/dark/system; confirm no low-contrast text. Current Status (2025-09-10) - Settings screen updated to ColorScheme; Switch deprecations fixed. - AddSubscription selectors use M3 (glass flags off). - MainSummaryCard event-savings text = primary. - Monthly chart tooltips use inverseSurface/onInverseSurface. - Next: theme/app_theme.dart cleanup; remaining AppColors usages; chart palette alignment. Current Status (2025-09-11) - Billing/Currency/Category selectors: use ColorScheme (selected=primary/onPrimary, unselected=surface+outline, text=onSurface). Glass/grad props deprecated and ignored. - AnalysisBadge: remove AppColors, use surface + outline + subtle shadow. - SubscriptionCard: header strip uses error/warning/category; price and badges use ColorScheme (error/primary/onSurfaceVariant); due-chip uses success/warning extension; removed hard-coded reds/grays. - Checks: scripts/check.sh passes (format/analyze/test). - Next: migrate remaining AppColors usages (detail sections, snackbars, splash), reduce hard-coded Colors in adaptive_theme.dart, optional: revisit success/warning harmonization. Update (2025-09-11, PM) - DetailEventSection: replaced green constants with ColorScheme.success; onPrimary for pill text. - AddSubscriptionEventSection: info boxes use tertiary; removed AppColors. - SMS Scan widgets: progress/button now use ColorScheme.primary. - SubscriptionPieChartCard: no AppColors; chart palette uses scheme.success/warning; in-chart labels are white; exchange-rate chip uses primary soft background/border. - EventAnalysisCard: discount/current price and discount badge use scheme.success/error. - TotalExpenseSummaryCard: success icon uses scheme.success. - AppLock/Main screen SnackBars: unified to scheme.error/success with onPrimary text. - Splash: overlay/particles/title/subtitle/progress use ColorScheme; particle color bound to scheme.primary. - Checks: scripts/check.sh passes. Update (2025-09-11, PM-2) - Dark Theme(adaptive_theme.dart): replaced hard-coded widget colors with ColorScheme-driven values. - Inputs: fill=surface, borders=outline/primary/error, labels/hints=onSurfaceVariant. - Buttons/Switch/Checkbox/Radio/Slider/TabBar/Divider: all use scheme tokens. - AppBar/Card: background=surface, foreground/on-colors from scheme. - OLED: inherits dark with surface override only. - Checks: scripts/check.sh passes (no issues). Update (2025-09-11, PM-3) - Light Theme(app_theme.dart): AppColors 의존을 ColorScheme 사용으로 축소. - InputDecorationTheme: fill=surface, border=outline/primary/error, label/hint=onSurfaceVariant. - Buttons/FAB: primary/onPrimary, Outlined side=outline. - SnackBarTheme: primary/onPrimary. - Scaffold background 유지(#F1F5F9) — ColorScheme.background 대신 직접 지정. - Checks: scripts/check.sh passes.