import 'package:flutter/material.dart'; // --------------------------------------------------------------------------- // Shared design tokens // --------------------------------------------------------------------------- class AppRadii { static const double sm = 10; static const double md = 14; static const double lg = 20; static const double xl = 28; } class AppSpacing { static const double xs = 4; static const double sm = 8; static const double md = 12; static const double lg = 16; static const double xl = 24; } // --------------------------------------------------------------------------- // Dark theme — refined violet palette // --------------------------------------------------------------------------- const _violet = Color(0xFF8B5CF6); const _violetSoft = Color(0xFFB39DFF); const _bg = Color(0xFF111014); const _surface = Color(0xFF1A1920); const _surfaceRaised = Color(0xFF221F29); const _outline = Color(0x1FFFFFFF); // ~12% white final ThemeData darkTheme = ThemeData( useMaterial3: true, brightness: Brightness.dark, splashFactory: InkRipple.splashFactory, colorScheme: ColorScheme.fromSeed( seedColor: _violet, brightness: Brightness.dark, surface: _surface, error: const Color(0xFFFF6B6B), ), scaffoldBackgroundColor: _bg, canvasColor: _bg, appBarTheme: AppBarTheme( elevation: 0, centerTitle: false, backgroundColor: _bg, foregroundColor: Colors.white, surfaceTintColor: Colors.transparent, titleTextStyle: const TextStyle( fontSize: 22, fontWeight: FontWeight.w800, letterSpacing: -0.3, color: Colors.white, ), iconTheme: const IconThemeData(color: Colors.white70, size: 22), actionsIconTheme: const IconThemeData(color: Colors.white70, size: 22), ), iconButtonTheme: IconButtonThemeData( style: IconButton.styleFrom( backgroundColor: Colors.white.withValues(alpha: 0.05), foregroundColor: Colors.white70, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), padding: const EdgeInsets.all(10), ), ), cardTheme: CardThemeData( color: _surface, elevation: 0, margin: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.sm, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.lg), side: const BorderSide(color: _outline, width: 1), ), ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( elevation: 0, backgroundColor: _violet, foregroundColor: Colors.white, disabledBackgroundColor: Colors.white.withValues(alpha: 0.06), disabledForegroundColor: Colors.white24, padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), textStyle: const TextStyle( fontSize: 15, fontWeight: FontWeight.w700, letterSpacing: 0.1, ), ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( elevation: 0, backgroundColor: _violet, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w700), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: Colors.white, side: const BorderSide(color: _outline, width: 1.4), padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), ), ), textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( foregroundColor: Colors.white70, padding: const EdgeInsets.symmetric( horizontal: AppSpacing.lg, vertical: AppSpacing.md, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: _surfaceRaised, hintStyle: const TextStyle(color: Colors.white38), contentPadding: const EdgeInsets.symmetric( horizontal: AppSpacing.lg, vertical: AppSpacing.lg, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: BorderSide.none, ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: const BorderSide(color: _outline), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: const BorderSide(color: _violet, width: 2), ), ), dialogTheme: DialogThemeData( backgroundColor: _surfaceRaised, surfaceTintColor: Colors.transparent, elevation: 8, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.lg), ), titleTextStyle: const TextStyle( color: Colors.white, fontSize: 19, fontWeight: FontWeight.w800, ), contentTextStyle: const TextStyle(color: Colors.white70, height: 1.4), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: _violet, foregroundColor: Colors.white, elevation: 2, ), navigationBarTheme: NavigationBarThemeData( backgroundColor: _surface, indicatorColor: _violet.withValues(alpha: 0.25), labelTextStyle: const WidgetStatePropertyAll( TextStyle(fontWeight: FontWeight.w600), ), ), listTileTheme: ListTileThemeData( tileColor: Colors.transparent, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), iconColor: _violetSoft, textColor: Colors.white, contentPadding: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.xs, ), ), snackBarTheme: SnackBarThemeData( backgroundColor: _surfaceRaised, behavior: SnackBarBehavior.floating, elevation: 4, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), side: const BorderSide(color: _outline), ), contentTextStyle: const TextStyle(color: Colors.white), ), dividerTheme: const DividerThemeData(color: _outline, thickness: 1, space: 1), chipTheme: ChipThemeData( backgroundColor: _surfaceRaised, labelStyle: const TextStyle( color: Colors.white, fontWeight: FontWeight.w600, fontSize: 12, ), padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.sm), side: const BorderSide(color: _outline), ), ), textTheme: const TextTheme( displayLarge: TextStyle(color: Colors.white, fontWeight: FontWeight.w800), headlineMedium: TextStyle( color: Colors.white, fontWeight: FontWeight.w800, letterSpacing: -0.3, ), titleLarge: TextStyle( color: Colors.white, fontWeight: FontWeight.w800, letterSpacing: -0.2, ), titleMedium: TextStyle(color: Colors.white, fontWeight: FontWeight.w700), bodyLarge: TextStyle(color: Colors.white70, fontSize: 16, height: 1.5), bodyMedium: TextStyle(color: Colors.white60, height: 1.4), bodySmall: TextStyle(color: Colors.white38, height: 1.3), labelLarge: TextStyle(color: Colors.white, fontWeight: FontWeight.w700), ), ); // --------------------------------------------------------------------------- // Neo-brutalist dark theme — punchy, high-contrast alternative // --------------------------------------------------------------------------- const _nbBg = Color(0xFF0C0C0E); const _nbSurface = Color(0xFF1C1C20); const _nbYellow = Color(0xFFFFD60A); const _nbCyan = Color(0xFF00E5FF); const _nbPink = Color(0xFFFF3D81); final ThemeData neoBrutalDarkTheme = ThemeData( useMaterial3: true, brightness: Brightness.dark, colorScheme: const ColorScheme.dark( primary: _nbYellow, secondary: _nbCyan, surface: _nbSurface, error: _nbPink, ), scaffoldBackgroundColor: _nbBg, canvasColor: _nbBg, textTheme: const TextTheme( displayLarge: TextStyle( fontSize: 48, fontWeight: FontWeight.w900, color: Colors.white, letterSpacing: -1.5, ), headlineMedium: TextStyle( fontSize: 32, fontWeight: FontWeight.w900, color: Colors.white, letterSpacing: -0.5, ), titleLarge: TextStyle( fontSize: 22, fontWeight: FontWeight.w900, color: Colors.white, ), titleMedium: TextStyle( fontSize: 17, fontWeight: FontWeight.w800, color: Colors.white, ), bodyLarge: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, ), bodyMedium: TextStyle(fontSize: 14, color: Colors.white70), bodySmall: TextStyle( fontSize: 12, color: Colors.white54, fontWeight: FontWeight.w600, ), ), appBarTheme: const AppBarTheme( backgroundColor: _nbBg, foregroundColor: Colors.white, elevation: 0, centerTitle: false, titleTextStyle: TextStyle( fontSize: 26, fontWeight: FontWeight.w900, color: Colors.white, ), ), cardTheme: CardThemeData( color: _nbSurface, elevation: 0, margin: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.sm, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.white, width: 3), ), ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( backgroundColor: _nbYellow, foregroundColor: Colors.black, elevation: 0, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.black, width: 3), ), textStyle: const TextStyle(fontWeight: FontWeight.w900, fontSize: 16), ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: _nbYellow, foregroundColor: Colors.black, elevation: 0, shadowColor: Colors.transparent, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.black, width: 3), ), textStyle: const TextStyle(fontWeight: FontWeight.w900, fontSize: 16), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: Colors.white, side: const BorderSide(color: Colors.white, width: 3), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), textStyle: const TextStyle(fontWeight: FontWeight.w800), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: _nbSurface, hintStyle: const TextStyle( color: Colors.white38, fontWeight: FontWeight.w600, ), contentPadding: const EdgeInsets.all(18), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: Colors.white, width: 3), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: Colors.white, width: 3), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: _nbYellow, width: 4), ), ), dialogTheme: DialogThemeData( backgroundColor: _nbSurface, elevation: 0, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.white, width: 3), ), titleTextStyle: const TextStyle( color: Colors.white, fontSize: 20, fontWeight: FontWeight.w900, ), contentTextStyle: const TextStyle( color: Colors.white70, fontWeight: FontWeight.w600, ), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: _nbPink, foregroundColor: Colors.white, elevation: 0, shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(10)), side: BorderSide(color: Colors.white, width: 3), ), ), snackBarTheme: SnackBarThemeData( backgroundColor: _nbSurface, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.white, width: 3), ), behavior: SnackBarBehavior.floating, contentTextStyle: const TextStyle( color: Colors.white, fontWeight: FontWeight.w600, ), ), dividerTheme: const DividerThemeData(color: Colors.white, thickness: 3), listTileTheme: ListTileThemeData( tileColor: _nbSurface, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), side: const BorderSide(color: Colors.white, width: 3), ), textColor: Colors.white, iconColor: _nbYellow, ), ); const _violetL = Color(0xFF7C3AED); const _bgL = Color(0xFFF6F5F3); const _surfaceL = Color(0xFFFFFFFF); const _surfaceRaisedL = Color(0xFFF0EDE7); const _outlineL = Color(0x1A000000); // ~10% black final ThemeData lightTheme = ThemeData( useMaterial3: true, brightness: Brightness.light, splashFactory: InkRipple.splashFactory, colorScheme: ColorScheme.fromSeed( seedColor: _violetL, brightness: Brightness.light, surface: _surfaceL, error: const Color(0xFFDC2626), ), scaffoldBackgroundColor: _bgL, canvasColor: _bgL, appBarTheme: AppBarTheme( elevation: 0, centerTitle: false, backgroundColor: _bgL, foregroundColor: const Color(0xFF1A1A1A), surfaceTintColor: Colors.transparent, titleTextStyle: const TextStyle( fontSize: 22, fontWeight: FontWeight.w800, letterSpacing: -0.3, color: Color(0xFF1A1A1A), ), iconTheme: const IconThemeData( color: Color(0xFF5C5C5C), size: 22, ), actionsIconTheme: const IconThemeData( color: Color(0xFF5C5C5C), size: 22, ), ), iconButtonTheme: IconButtonThemeData( style: IconButton.styleFrom( backgroundColor: const Color(0x08000000), foregroundColor: const Color(0xFF5C5C5C), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), padding: const EdgeInsets.all(10), ), ), cardTheme: CardThemeData( color: _surfaceL, elevation: 1, shadowColor: const Color(0x0C000000), margin: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.sm, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.lg), side: const BorderSide(color: _outlineL, width: 1), ), ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( elevation: 0, backgroundColor: _violetL, foregroundColor: Colors.white, disabledBackgroundColor: const Color(0x0F000000), disabledForegroundColor: const Color(0x42000000), padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), textStyle: const TextStyle( fontSize: 15, fontWeight: FontWeight.w700, letterSpacing: 0.1, ), ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( elevation: 0, backgroundColor: _violetL, foregroundColor: Colors.white, padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w700), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: const Color(0xFF1A1A1A), side: const BorderSide(color: _outlineL, width: 1.4), padding: const EdgeInsets.symmetric( horizontal: AppSpacing.xl, vertical: AppSpacing.lg, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), ), ), textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( foregroundColor: const Color(0xFF5C5C5C), padding: const EdgeInsets.symmetric( horizontal: AppSpacing.lg, vertical: AppSpacing.md, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), ), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: _surfaceL, hintStyle: const TextStyle(color: Color(0xFF9E9E9E)), contentPadding: const EdgeInsets.symmetric( horizontal: AppSpacing.lg, vertical: AppSpacing.lg, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: BorderSide.none, ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: const BorderSide(color: _outlineL), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(AppRadii.md), borderSide: const BorderSide(color: _violetL, width: 2), ), ), dialogTheme: DialogThemeData( backgroundColor: _surfaceL, surfaceTintColor: Colors.transparent, elevation: 12, shadowColor: const Color(0x18000000), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.lg), ), titleTextStyle: const TextStyle( color: Color(0xFF1A1A1A), fontSize: 19, fontWeight: FontWeight.w800, ), contentTextStyle: const TextStyle( color: Color(0xFF5C5C5C), height: 1.4, ), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: _violetL, foregroundColor: Colors.white, elevation: 3, ), navigationBarTheme: NavigationBarThemeData( backgroundColor: _surfaceL, indicatorColor: _violetL.withValues(alpha: 0.12), labelTextStyle: const WidgetStatePropertyAll( TextStyle(fontWeight: FontWeight.w600), ), ), listTileTheme: ListTileThemeData( tileColor: Colors.transparent, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), iconColor: _violetL, textColor: const Color(0xFF1A1A1A), contentPadding: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.xs, ), ), snackBarTheme: SnackBarThemeData( backgroundColor: const Color(0xFF1E1E24), behavior: SnackBarBehavior.floating, elevation: 6, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.md), ), contentTextStyle: const TextStyle(color: Colors.white), ), dividerTheme: const DividerThemeData( color: _outlineL, thickness: 1, space: 1, ), chipTheme: ChipThemeData( backgroundColor: _surfaceRaisedL, labelStyle: const TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w600, fontSize: 12, ), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppRadii.sm), side: const BorderSide(color: _outlineL), ), ), textTheme: const TextTheme( displayLarge: TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w800, ), headlineMedium: TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w800, letterSpacing: -0.3, ), titleLarge: TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w800, letterSpacing: -0.2, ), titleMedium: TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w700, ), bodyLarge: TextStyle( color: Color(0xFF5C5C5C), fontSize: 16, height: 1.5, ), bodyMedium: TextStyle(color: Color(0xFF757575), height: 1.4), bodySmall: TextStyle( color: Color(0xFF9E9E9E), height: 1.3, ), labelLarge: TextStyle( color: Color(0xFF1A1A1A), fontWeight: FontWeight.w700, ), ), ); // --------------------------------------------------------------------------- // Ugly theme — intentionally repulsive // --------------------------------------------------------------------------- const _uglyFg = Color(0xFFFFF700); const _uglyBg = Color(0xFF00FFFF); const _uglySurface = Color(0xFFFF00FF); const _uglyPrimary = Color(0xFFCCFF00); const _uglySecondary = Color(0xFFFF1493); const _uglyError = Color(0xFFFF6600); final ThemeData uglyTheme = ThemeData( useMaterial3: true, brightness: Brightness.light, colorScheme: const ColorScheme.light( primary: _uglyPrimary, secondary: _uglySecondary, surface: _uglySurface, error: _uglyError, onPrimary: Color(0xFF0000FF), onSecondary: _uglyFg, onSurface: _uglyFg, onError: Color(0xFF000000), onSurfaceVariant: Color(0xFFFF0000), ), scaffoldBackgroundColor: _uglyBg, canvasColor: _uglyBg, appBarTheme: const AppBarTheme( elevation: 8, shadowColor: Color(0xFFFF0000), centerTitle: true, backgroundColor: _uglySecondary, foregroundColor: _uglyFg, surfaceTintColor: _uglyError, titleTextStyle: TextStyle( fontSize: 30, fontWeight: FontWeight.w900, letterSpacing: 4, color: _uglyFg, fontFamily: 'monospace', ), iconTheme: IconThemeData(color: _uglyBg, size: 30), actionsIconTheme: IconThemeData(color: _uglyFg, size: 30), toolbarHeight: 80, ), iconButtonTheme: IconButtonThemeData( style: IconButton.styleFrom( backgroundColor: _uglyError, foregroundColor: Colors.black, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(0), topRight: Radius.circular(20), bottomLeft: Radius.circular(20), bottomRight: Radius.circular(0), ), ), side: const BorderSide(color: _uglyPrimary, width: 3), padding: const EdgeInsets.all(16), ), ), cardTheme: CardThemeData( color: _uglySurface, elevation: 8, shadowColor: _uglyPrimary, margin: const EdgeInsets.symmetric(horizontal: 0, vertical: 18), shape: RoundedRectangleBorder( borderRadius: const BorderRadius.only( topLeft: Radius.circular(4), topRight: Radius.circular(30), bottomLeft: Radius.circular(30), bottomRight: Radius.circular(4), ), side: const BorderSide(color: _uglySecondary, width: 4), ), ), filledButtonTheme: FilledButtonThemeData( style: FilledButton.styleFrom( elevation: 4, backgroundColor: _uglyPrimary, foregroundColor: const Color(0xFF0000FF), shadowColor: _uglyError, disabledBackgroundColor: _uglyBg, disabledForegroundColor: _uglyError, padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 22), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(2), side: const BorderSide(color: _uglySecondary, width: 3), ), textStyle: const TextStyle( fontSize: 18, fontWeight: FontWeight.w900, letterSpacing: 3, fontFamily: 'monospace', ), ), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( elevation: 6, backgroundColor: _uglyError, foregroundColor: _uglyBg, shadowColor: _uglyPrimary, padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 20), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(24), side: const BorderSide(color: _uglyFg, width: 4), ), textStyle: const TextStyle( fontSize: 17, fontWeight: FontWeight.w900, fontFamily: 'monospace', ), ), ), outlinedButtonTheme: OutlinedButtonThemeData( style: OutlinedButton.styleFrom( foregroundColor: _uglyFg, side: const BorderSide(color: _uglySecondary, width: 5), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0)), textStyle: const TextStyle( fontWeight: FontWeight.w900, fontFamily: 'monospace', ), ), ), textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( foregroundColor: _uglyError, padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), textStyle: const TextStyle(fontWeight: FontWeight.w900, fontSize: 16), ), ), inputDecorationTheme: const InputDecorationTheme( filled: true, fillColor: Color(0xFFAAFFAA), hintStyle: TextStyle( color: Color(0xFFFF0000), fontWeight: FontWeight.w900, fontStyle: FontStyle.italic, fontFamily: 'monospace', ), contentPadding: EdgeInsets.symmetric(horizontal: 24, vertical: 20), border: OutlineInputBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(16), bottomRight: Radius.circular(16), ), borderSide: BorderSide(color: _uglySecondary, width: 4), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(16), bottomRight: Radius.circular(16), ), borderSide: BorderSide(color: _uglyError, width: 4), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(16), bottomRight: Radius.circular(16), ), borderSide: BorderSide(color: _uglyPrimary, width: 6), ), ), dialogTheme: DialogThemeData( backgroundColor: _uglySurface, elevation: 16, shadowColor: _uglyFg, surfaceTintColor: _uglyError, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(0), side: const BorderSide(color: _uglyPrimary, width: 5), ), titleTextStyle: const TextStyle( color: _uglyFg, fontSize: 26, fontWeight: FontWeight.w900, fontFamily: 'monospace', ), contentTextStyle: const TextStyle( color: _uglyBg, fontWeight: FontWeight.w700, height: 1.8, ), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: _uglySecondary, foregroundColor: _uglyFg, elevation: 8, shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(30), bottomRight: Radius.circular(30), ), side: BorderSide(color: _uglyPrimary, width: 4), ), ), listTileTheme: ListTileThemeData( tileColor: _uglyFg, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(0), side: const BorderSide(color: _uglySecondary, width: 3), ), iconColor: _uglyBg, textColor: _uglySurface, contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16), ), snackBarTheme: SnackBarThemeData( backgroundColor: _uglyPrimary, behavior: SnackBarBehavior.floating, elevation: 8, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(0), side: const BorderSide(color: _uglySecondary, width: 4), ), contentTextStyle: const TextStyle( color: Color(0xFF0000FF), fontWeight: FontWeight.w900, fontFamily: 'monospace', ), ), dividerTheme: const DividerThemeData( color: _uglySecondary, thickness: 5, space: 8, ), chipTheme: const ChipThemeData( backgroundColor: _uglyError, labelStyle: TextStyle( color: _uglyFg, fontWeight: FontWeight.w900, fontSize: 14, fontFamily: 'monospace', ), padding: EdgeInsets.symmetric(horizontal: 16, vertical: 10), shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topRight: Radius.circular(20), bottomLeft: Radius.circular(20), ), side: BorderSide(color: _uglyPrimary, width: 3), ), ), textTheme: const TextTheme( displayLarge: TextStyle( color: _uglyFg, fontWeight: FontWeight.w900, fontSize: 52, letterSpacing: 5, fontFamily: 'monospace', ), headlineMedium: TextStyle( color: _uglyPrimary, fontWeight: FontWeight.w900, fontSize: 34, letterSpacing: 3, fontFamily: 'monospace', ), titleLarge: TextStyle( color: _uglyFg, fontWeight: FontWeight.w900, fontSize: 26, letterSpacing: 2, fontFamily: 'monospace', ), titleMedium: TextStyle( color: _uglyPrimary, fontWeight: FontWeight.w900, fontSize: 20, fontFamily: 'monospace', ), bodyLarge: TextStyle( color: _uglyFg, fontSize: 18, fontWeight: FontWeight.w700, height: 1.8, fontFamily: 'monospace', ), bodyMedium: TextStyle( color: _uglyBg, fontWeight: FontWeight.w700, fontSize: 14, fontFamily: 'monospace', ), bodySmall: TextStyle( color: _uglyError, fontWeight: FontWeight.w900, fontSize: 12, fontFamily: 'monospace', ), labelLarge: TextStyle( color: _uglySecondary, fontWeight: FontWeight.w900, fontSize: 16, fontFamily: 'monospace', ), ), );