import 'package:flutter/material.dart';
import '../constants/colors.dart';
import '../constants/design_system.dart';

/// Classe qui définit les thèmes de l'application AfterWork.
///
/// Thème moderne et cohérent avec Material Design 3, optimisé pour:
/// - Border radius: 4-12px (DesignSystem)
/// - Padding: 6-20px (compact)
/// - Typography: 11-17px (lisible et dense)
/// - Élévations: 0.5-3 max (subtil)
class AppTheme {
  /// Thème clair - Design moderne Material 3
  static final ThemeData lightTheme = ThemeData(
    useMaterial3: true,
    brightness: Brightness.light,

    // =========================================================================
    // COULEURS DE BASE
    // =========================================================================

    primaryColor: AppColors.lightPrimary,
    scaffoldBackgroundColor: AppColors.lightBackground,
    cardColor: AppColors.lightCardColor,

    // =========================================================================
    // COLOR SCHEME - Material 3 complet
    // =========================================================================

    colorScheme: ColorScheme.light(
      // Couleurs primaires
      primary: AppColors.lightPrimary,
      onPrimary: AppColors.lightOnPrimary,
      primaryContainer: AppColors.lightPrimary.withOpacity(0.12),
      onPrimaryContainer: AppColors.lightPrimary,

      // Couleurs secondaires
      secondary: AppColors.lightSecondary,
      onSecondary: AppColors.lightOnSecondary,
      secondaryContainer: AppColors.lightSecondary.withOpacity(0.12),
      onSecondaryContainer: AppColors.lightSecondary,

      // Couleur tertiaire
      tertiary: AppColors.lightAccentColor,
      onTertiary: Colors.white,
      tertiaryContainer: AppColors.lightAccentColor.withOpacity(0.12),
      onTertiaryContainer: AppColors.lightAccentColor,

      // Surfaces
      surface: AppColors.lightSurface,
      onSurface: AppColors.lightTextPrimary,
      surfaceVariant: const Color(0xFFF5F5F5),
      onSurfaceVariant: AppColors.lightTextSecondary,

      // Erreur
      error: AppColors.lightError,
      onError: AppColors.lightOnPrimary,
      errorContainer: AppColors.lightError.withOpacity(0.12),
      onErrorContainer: AppColors.lightError,

      // Autres
      outline: const Color(0xFFE0E0E0),
      outlineVariant: const Color(0xFFF5F5F5),
      shadow: Colors.black.withOpacity(0.1),
      scrim: Colors.black.withOpacity(0.5),
      inverseSurface: const Color(0xFF212121),
      onInverseSurface: Colors.white,
      inversePrimary: AppColors.lightPrimary.withOpacity(0.8),
    ),

    // =========================================================================
    // APP BAR
    // =========================================================================

    appBarTheme: const AppBarTheme(
      backgroundColor: Colors.transparent,
      foregroundColor: AppColors.lightTextPrimary,
      elevation: 0,
      scrolledUnderElevation: 2,
      centerTitle: false,
      iconTheme: IconThemeData(
        color: AppColors.lightTextPrimary,
        size: 22,
      ),
      titleTextStyle: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.5,
      ),
    ),

    // =========================================================================
    // NAVIGATION BAR - Material 3
    // =========================================================================

    navigationBarTheme: NavigationBarThemeData(
      height: 64,
      elevation: 0,
      backgroundColor: AppColors.lightSurface,
      indicatorColor: AppColors.lightPrimary.withOpacity(0.12),
      iconTheme: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return const IconThemeData(
            color: AppColors.lightPrimary,
            size: 26,
          );
        }
        return IconThemeData(
          color: AppColors.lightTextSecondary,
          size: 24,
        );
      }),
      labelTextStyle: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return const TextStyle(
            color: AppColors.lightPrimary,
            fontSize: 12,
            fontWeight: FontWeight.w600,
          );
        }
        return TextStyle(
          color: AppColors.lightTextSecondary,
          fontSize: 12,
          fontWeight: FontWeight.w500,
        );
      }),
      labelBehavior: NavigationDestinationLabelBehavior.onlyShowSelected,
    ),

    // =========================================================================
    // TAB BAR
    // =========================================================================

    tabBarTheme: TabBarTheme(
      indicatorSize: TabBarIndicatorSize.tab,
      labelColor: AppColors.lightPrimary,
      unselectedLabelColor: AppColors.lightTextSecondary,
      labelStyle: const TextStyle(
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      unselectedLabelStyle: const TextStyle(
        fontSize: 14,
        fontWeight: FontWeight.w500,
      ),
      indicator: UnderlineTabIndicator(
        borderSide: BorderSide(
          color: AppColors.lightPrimary,
          width: 2,
        ),
        borderRadius: const BorderRadius.vertical(
          top: Radius.circular(DesignSystem.radiusSm),
        ),
      ),
    ),

    // =========================================================================
    // TYPOGRAPHY
    // =========================================================================

    textTheme: const TextTheme(
      // Display
      displayLarge: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 28,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.5,
      ),
      displayMedium: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 24,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.25,
      ),
      displaySmall: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.bold,
      ),

      // Headline
      headlineLarge: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.w600,
      ),
      headlineMedium: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 18,
        fontWeight: FontWeight.w600,
      ),
      headlineSmall: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.w600,
      ),

      // Title
      titleLarge: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.w600,
      ),
      titleMedium: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 15,
        fontWeight: FontWeight.w600,
      ),
      titleSmall: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),

      // Body
      bodyLarge: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 15,
        height: 1.5,
      ),
      bodyMedium: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 14,
        height: 1.5,
      ),
      bodySmall: TextStyle(
        color: AppColors.lightTextSecondary,
        fontSize: 13,
        height: 1.4,
      ),

      // Label
      labelLarge: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      labelMedium: TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 13,
        fontWeight: FontWeight.w600,
      ),
      labelSmall: TextStyle(
        color: AppColors.lightTextSecondary,
        fontSize: 11,
        fontWeight: FontWeight.w500,
      ),
    ),

    // =========================================================================
    // BUTTONS
    // =========================================================================

    // ElevatedButton
    elevatedButtonTheme: ElevatedButtonThemeData(
      style: ElevatedButton.styleFrom(
        backgroundColor: AppColors.lightPrimary,
        foregroundColor: AppColors.lightOnPrimary,
        elevation: 1,
        shadowColor: Colors.black.withOpacity(0.1),
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // FilledButton (Material 3)
    filledButtonTheme: FilledButtonThemeData(
      style: FilledButton.styleFrom(
        backgroundColor: AppColors.lightPrimary,
        foregroundColor: AppColors.lightOnPrimary,
        elevation: 0,
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // OutlinedButton
    outlinedButtonTheme: OutlinedButtonThemeData(
      style: OutlinedButton.styleFrom(
        foregroundColor: AppColors.lightPrimary,
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        side: const BorderSide(color: AppColors.lightPrimary, width: 1.5),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // TextButton
    textButtonTheme: TextButtonThemeData(
      style: TextButton.styleFrom(
        foregroundColor: AppColors.lightPrimary,
        padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // =========================================================================
    // INPUT DECORATION
    // =========================================================================

    inputDecorationTheme: InputDecorationTheme(
      filled: true,
      fillColor: AppColors.lightSurface,
      labelStyle: TextStyle(
        color: AppColors.lightTextSecondary,
        fontSize: 14,
      ),
      hintStyle: TextStyle(
        color: AppColors.lightTextSecondary.withOpacity(0.6),
        fontSize: 14,
      ),
      contentPadding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
      border: OutlineInputBorder(
        borderSide: BorderSide(color: const Color(0xFFE0E0E0)),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      enabledBorder: OutlineInputBorder(
        borderSide: BorderSide(color: const Color(0xFFE0E0E0)),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      focusedBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.lightPrimary, width: 2),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      errorBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.lightError, width: 1.5),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      focusedErrorBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.lightError, width: 2),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
    ),

    // =========================================================================
    // FLOATING ACTION BUTTON
    // =========================================================================

    floatingActionButtonTheme: FloatingActionButtonThemeData(
      backgroundColor: AppColors.lightPrimary,
      foregroundColor: AppColors.lightOnPrimary,
      elevation: 2,
      focusElevation: 4,
      hoverElevation: 4,
      highlightElevation: 6,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusLg),
      ),
    ),

    // =========================================================================
    // CARD
    // =========================================================================

    cardTheme: CardTheme(
      color: AppColors.lightCardColor,
      elevation: 1,
      shadowColor: Colors.black.withOpacity(0.05),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      margin: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
    ),

    // =========================================================================
    // DIALOG
    // =========================================================================

    dialogTheme: DialogTheme(
      backgroundColor: AppColors.lightSurface,
      elevation: 3,
      shadowColor: Colors.black.withOpacity(0.1),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      titleTextStyle: const TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.bold,
      ),
      contentTextStyle: const TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 14,
        height: 1.5,
      ),
    ),

    // =========================================================================
    // BOTTOM SHEET
    // =========================================================================

    bottomSheetTheme: BottomSheetThemeData(
      backgroundColor: AppColors.lightSurface,
      elevation: 3,
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(
          top: Radius.circular(DesignSystem.radiusLg),
        ),
      ),
      modalElevation: 8,
      modalBackgroundColor: AppColors.lightSurface,
    ),

    // =========================================================================
    // DIVIDER
    // =========================================================================

    dividerTheme: DividerThemeData(
      color: const Color(0xFFE0E0E0),
      thickness: 1,
      space: 1,
    ),

    // =========================================================================
    // ICON THEME
    // =========================================================================

    iconTheme: const IconThemeData(
      color: AppColors.lightTextPrimary,
      size: 22,
    ),

    // =========================================================================
    // LIST TILE
    // =========================================================================

    listTileTheme: ListTileThemeData(
      contentPadding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
      iconColor: AppColors.lightTextPrimary,
      textColor: AppColors.lightTextPrimary,
      titleTextStyle: const TextStyle(
        color: AppColors.lightTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      subtitleTextStyle: TextStyle(
        color: AppColors.lightTextSecondary,
        fontSize: 13,
      ),
    ),

    // =========================================================================
    // CHIP
    // =========================================================================

    chipTheme: ChipThemeData(
      backgroundColor: AppColors.lightPrimary.withOpacity(0.12),
      deleteIconColor: AppColors.lightPrimary,
      labelStyle: const TextStyle(
        color: AppColors.lightPrimary,
        fontSize: 13,
        fontWeight: FontWeight.w500,
      ),
      padding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingSm,
        vertical: 4,
      ),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusSm),
      ),
    ),

    // =========================================================================
    // PROGRESS INDICATOR
    // =========================================================================

    progressIndicatorTheme: const ProgressIndicatorThemeData(
      color: AppColors.lightPrimary,
      linearTrackColor: Color(0xFFE0E0E0),
      circularTrackColor: Color(0xFFE0E0E0),
    ),
  );

  /// Thème sombre - Design moderne Material 3
  static final ThemeData darkTheme = ThemeData(
    useMaterial3: true,
    brightness: Brightness.dark,

    // =========================================================================
    // COULEURS DE BASE
    // =========================================================================

    primaryColor: AppColors.darkPrimary,
    scaffoldBackgroundColor: AppColors.darkBackground,
    cardColor: AppColors.darkCardColor,

    // =========================================================================
    // COLOR SCHEME - Material 3 complet
    // =========================================================================

    colorScheme: ColorScheme.dark(
      // Couleurs primaires
      primary: AppColors.darkSecondary,
      onPrimary: AppColors.darkOnPrimary,
      primaryContainer: AppColors.darkSecondary.withOpacity(0.2),
      onPrimaryContainer: AppColors.darkSecondary,

      // Couleurs secondaires
      secondary: AppColors.darkAccentColor,
      onSecondary: Colors.black,
      secondaryContainer: AppColors.darkAccentColor.withOpacity(0.2),
      onSecondaryContainer: AppColors.darkAccentColor,

      // Couleur tertiaire
      tertiary: const Color(0xFF64B5F6),
      onTertiary: Colors.black,
      tertiaryContainer: const Color(0xFF64B5F6).withOpacity(0.2),
      onTertiaryContainer: const Color(0xFF64B5F6),

      // Surfaces
      surface: AppColors.darkSurface,
      onSurface: AppColors.darkTextPrimary,
      surfaceVariant: const Color(0xFF2C2C2C),
      onSurfaceVariant: AppColors.darkTextSecondary,

      // Erreur
      error: AppColors.darkError,
      onError: Colors.white,
      errorContainer: AppColors.darkError.withOpacity(0.2),
      onErrorContainer: AppColors.darkError,

      // Autres
      outline: const Color(0xFF424242),
      outlineVariant: const Color(0xFF2C2C2C),
      shadow: Colors.black.withOpacity(0.3),
      scrim: Colors.black.withOpacity(0.7),
      inverseSurface: Colors.white,
      onInverseSurface: Colors.black,
      inversePrimary: AppColors.darkSecondary.withOpacity(0.8),
    ),

    // =========================================================================
    // APP BAR
    // =========================================================================

    appBarTheme: const AppBarTheme(
      backgroundColor: Colors.transparent,
      foregroundColor: AppColors.darkTextPrimary,
      elevation: 0,
      scrolledUnderElevation: 2,
      centerTitle: false,
      iconTheme: IconThemeData(
        color: AppColors.darkTextPrimary,
        size: 22,
      ),
      titleTextStyle: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.5,
      ),
    ),

    // =========================================================================
    // NAVIGATION BAR - Material 3
    // =========================================================================

    navigationBarTheme: NavigationBarThemeData(
      height: 64,
      elevation: 0,
      backgroundColor: AppColors.darkSurface,
      indicatorColor: AppColors.darkSecondary.withOpacity(0.2),
      iconTheme: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return const IconThemeData(
            color: AppColors.darkSecondary,
            size: 26,
          );
        }
        return IconThemeData(
          color: AppColors.darkTextSecondary,
          size: 24,
        );
      }),
      labelTextStyle: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return const TextStyle(
            color: AppColors.darkSecondary,
            fontSize: 12,
            fontWeight: FontWeight.w600,
          );
        }
        return TextStyle(
          color: AppColors.darkTextSecondary,
          fontSize: 12,
          fontWeight: FontWeight.w500,
        );
      }),
      labelBehavior: NavigationDestinationLabelBehavior.onlyShowSelected,
    ),

    // =========================================================================
    // TAB BAR
    // =========================================================================

    tabBarTheme: TabBarTheme(
      indicatorSize: TabBarIndicatorSize.tab,
      labelColor: AppColors.darkSecondary,
      unselectedLabelColor: AppColors.darkTextSecondary,
      labelStyle: const TextStyle(
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      unselectedLabelStyle: const TextStyle(
        fontSize: 14,
        fontWeight: FontWeight.w500,
      ),
      indicator: UnderlineTabIndicator(
        borderSide: BorderSide(
          color: AppColors.darkSecondary,
          width: 2,
        ),
        borderRadius: const BorderRadius.vertical(
          top: Radius.circular(DesignSystem.radiusSm),
        ),
      ),
    ),

    // =========================================================================
    // TYPOGRAPHY
    // =========================================================================

    textTheme: const TextTheme(
      // Display
      displayLarge: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 28,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.5,
      ),
      displayMedium: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 24,
        fontWeight: FontWeight.bold,
        letterSpacing: -0.25,
      ),
      displaySmall: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.bold,
      ),

      // Headline
      headlineLarge: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 20,
        fontWeight: FontWeight.w600,
      ),
      headlineMedium: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 18,
        fontWeight: FontWeight.w600,
      ),
      headlineSmall: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.w600,
      ),

      // Title
      titleLarge: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.w600,
      ),
      titleMedium: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 15,
        fontWeight: FontWeight.w600,
      ),
      titleSmall: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),

      // Body
      bodyLarge: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 15,
        height: 1.5,
      ),
      bodyMedium: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 14,
        height: 1.5,
      ),
      bodySmall: TextStyle(
        color: AppColors.darkTextSecondary,
        fontSize: 13,
        height: 1.4,
      ),

      // Label
      labelLarge: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      labelMedium: TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 13,
        fontWeight: FontWeight.w600,
      ),
      labelSmall: TextStyle(
        color: AppColors.darkTextSecondary,
        fontSize: 11,
        fontWeight: FontWeight.w500,
      ),
    ),

    // =========================================================================
    // BUTTONS
    // =========================================================================

    // ElevatedButton
    elevatedButtonTheme: ElevatedButtonThemeData(
      style: ElevatedButton.styleFrom(
        backgroundColor: AppColors.darkSecondary,
        foregroundColor: AppColors.darkOnPrimary,
        elevation: 1,
        shadowColor: Colors.black.withOpacity(0.3),
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // FilledButton (Material 3)
    filledButtonTheme: FilledButtonThemeData(
      style: FilledButton.styleFrom(
        backgroundColor: AppColors.darkSecondary,
        foregroundColor: AppColors.darkOnPrimary,
        elevation: 0,
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // OutlinedButton
    outlinedButtonTheme: OutlinedButtonThemeData(
      style: OutlinedButton.styleFrom(
        foregroundColor: AppColors.darkSecondary,
        padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
        side: const BorderSide(color: AppColors.darkSecondary, width: 1.5),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
        ),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // TextButton
    textButtonTheme: TextButtonThemeData(
      style: TextButton.styleFrom(
        foregroundColor: AppColors.darkSecondary,
        padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
        textStyle: const TextStyle(
          fontSize: 14,
          fontWeight: FontWeight.w600,
        ),
      ),
    ),

    // =========================================================================
    // INPUT DECORATION
    // =========================================================================

    inputDecorationTheme: InputDecorationTheme(
      filled: true,
      fillColor: AppColors.darkSurface,
      labelStyle: TextStyle(
        color: AppColors.darkTextSecondary,
        fontSize: 14,
      ),
      hintStyle: TextStyle(
        color: AppColors.darkTextSecondary.withOpacity(0.6),
        fontSize: 14,
      ),
      contentPadding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
      border: OutlineInputBorder(
        borderSide: BorderSide(color: const Color(0xFF424242)),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      enabledBorder: OutlineInputBorder(
        borderSide: BorderSide(color: const Color(0xFF424242)),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      focusedBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.darkSecondary, width: 2),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      errorBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.darkError, width: 1.5),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      focusedErrorBorder: OutlineInputBorder(
        borderSide: const BorderSide(color: AppColors.darkError, width: 2),
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
    ),

    // =========================================================================
    // FLOATING ACTION BUTTON
    // =========================================================================

    floatingActionButtonTheme: FloatingActionButtonThemeData(
      backgroundColor: AppColors.darkSecondary,
      foregroundColor: AppColors.darkOnPrimary,
      elevation: 2,
      focusElevation: 4,
      hoverElevation: 4,
      highlightElevation: 6,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusLg),
      ),
    ),

    // =========================================================================
    // CARD
    // =========================================================================

    cardTheme: CardTheme(
      color: AppColors.darkCardColor,
      elevation: 1,
      shadowColor: Colors.black.withOpacity(0.3),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      margin: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
    ),

    // =========================================================================
    // DIALOG
    // =========================================================================

    dialogTheme: DialogTheme(
      backgroundColor: AppColors.darkSurface,
      elevation: 3,
      shadowColor: Colors.black.withOpacity(0.5),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusMd),
      ),
      titleTextStyle: const TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 17,
        fontWeight: FontWeight.bold,
      ),
      contentTextStyle: const TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 14,
        height: 1.5,
      ),
    ),

    // =========================================================================
    // BOTTOM SHEET
    // =========================================================================

    bottomSheetTheme: BottomSheetThemeData(
      backgroundColor: AppColors.darkSurface,
      elevation: 3,
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(
          top: Radius.circular(DesignSystem.radiusLg),
        ),
      ),
      modalElevation: 8,
      modalBackgroundColor: AppColors.darkSurface,
    ),

    // =========================================================================
    // DIVIDER
    // =========================================================================

    dividerTheme: DividerThemeData(
      color: const Color(0xFF424242),
      thickness: 1,
      space: 1,
    ),

    // =========================================================================
    // ICON THEME
    // =========================================================================

    iconTheme: const IconThemeData(
      color: AppColors.darkTextPrimary,
      size: 22,
    ),

    // =========================================================================
    // LIST TILE
    // =========================================================================

    listTileTheme: ListTileThemeData(
      contentPadding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingMd,
        vertical: DesignSystem.spacingSm,
      ),
      iconColor: AppColors.darkTextPrimary,
      textColor: AppColors.darkTextPrimary,
      titleTextStyle: const TextStyle(
        color: AppColors.darkTextPrimary,
        fontSize: 14,
        fontWeight: FontWeight.w600,
      ),
      subtitleTextStyle: TextStyle(
        color: AppColors.darkTextSecondary,
        fontSize: 13,
      ),
    ),

    // =========================================================================
    // CHIP
    // =========================================================================

    chipTheme: ChipThemeData(
      backgroundColor: AppColors.darkSecondary.withOpacity(0.2),
      deleteIconColor: AppColors.darkSecondary,
      labelStyle: const TextStyle(
        color: AppColors.darkSecondary,
        fontSize: 13,
        fontWeight: FontWeight.w500,
      ),
      padding: const EdgeInsets.symmetric(
        horizontal: DesignSystem.spacingSm,
        vertical: 4,
      ),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(DesignSystem.radiusSm),
      ),
    ),

    // =========================================================================
    // PROGRESS INDICATOR
    // =========================================================================

    progressIndicatorTheme: const ProgressIndicatorThemeData(
      color: AppColors.darkSecondary,
      linearTrackColor: Color(0xFF424242),
      circularTrackColor: Color(0xFF424242),
    ),
  );
}
