import 'package:flutter/material.dart';

/// UnionFlow Color System - Palette Signature
/// Inspirée des valeurs de solidarité, prospérité et modernité africaine
class UnionFlowColors {
  UnionFlowColors._();

  // ═══════════════════════════════════════════════════════════════
  // COULEURS PRIMAIRES (Identité UnionFlow)
  // ═══════════════════════════════════════════════════════════════

  /// Vert UnionFlow - Symbole de croissance et prospérité
  static const Color unionGreen = Color(0xFF0F6B4F);
  static const Color unionGreenLight = Color(0xFF1F8A67);
  static const Color unionGreenPale = Color(0xFFEEF5F2);

  /// Or - Symbole de richesse et communauté
  static const Color gold = Color(0xFFD4A017);
  static const Color goldLight = Color(0xFFE8C568);
  static const Color goldPale = Color(0xFFFFF9E6);

  /// Indigo - Modernité et confiance
  static const Color indigo = Color(0xFF1E2A44);
  static const Color indigoLight = Color(0xFF3A4A6B);

  // ═══════════════════════════════════════════════════════════════
  // COULEURS SECONDAIRES (Accents culturels)
  // ═══════════════════════════════════════════════════════════════

  /// Terracotta - Chaleur et tradition
  static const Color terracotta = Color(0xFFE07A5F);
  static const Color terracottaLight = Color(0xFFF2AC99);
  static const Color terracottaPale = Color(0xFFFFF3F0);

  /// Ambre - Énergie et optimisme
  static const Color amber = Color(0xFFF4A261);
  static const Color amberLight = Color(0xFFF8C590);

  /// Sable - Neutralité élégante
  static const Color sand = Color(0xFFE9DCC9);
  static const Color sandLight = Color(0xFFF5F0E8);

  // ═══════════════════════════════════════════════════════════════
  // COULEURS SÉMANTIQUES
  // ═══════════════════════════════════════════════════════════════

  /// Succès - Validation, confirmation
  static const Color success = Color(0xFF22C55E);
  static const Color successLight = Color(0xFF86EFAC);
  static const Color successPale = Color(0xFFF0FDF4);

  /// Attention - Avertissements
  static const Color warning = Color(0xFFF59E0B);
  static const Color warningLight = Color(0xFFFBBF24);
  static const Color warningPale = Color(0xFFFEFCE8);

  /// Erreur - Actions négatives
  static const Color error = Color(0xFFEF4444);
  static const Color errorLight = Color(0xFFFCA5A5);
  static const Color errorPale = Color(0xFFFEF2F2);

  /// Info - Informations neutres
  static const Color info = Color(0xFF3B82F6);
  static const Color infoLight = Color(0xFF93C5FD);
  static const Color infoPale = Color(0xFFEFF6FF);

  // ═══════════════════════════════════════════════════════════════
  // COULEURS DE SURFACE
  // ═══════════════════════════════════════════════════════════════

  /// Background principal
  static const Color background = Color(0xFFF7F9FA);

  /// Surface des cards
  static const Color surface = Color(0xFFFFFFFF);

  /// Surface variant (légèrement teintée)
  static const Color surfaceVariant = Color(0xFFF5F7F8);

  /// Surface avec effet glassmorphism
  static const Color surfaceGlass = Color(0xFFFAFBFC);

  // ═══════════════════════════════════════════════════════════════
  // TEXTE & BORDURES
  // ═══════════════════════════════════════════════════════════════

  /// Texte principal
  static const Color textPrimary = Color(0xFF111827);

  /// Texte secondaire
  static const Color textSecondary = Color(0xFF6B7280);

  /// Texte tertiaire
  static const Color textTertiary = Color(0xFF9CA3AF);

  /// Bordures subtiles
  static const Color border = Color(0xFFE5E7EB);

  /// Bordures moyennes
  static const Color borderMedium = Color(0xFFD1D5DB);

  /// Bordures fortes
  static const Color borderStrong = Color(0xFF9CA3AF);

  // ═══════════════════════════════════════════════════════════════
  // GRADIENTS SIGNATURE
  // ═══════════════════════════════════════════════════════════════

  /// Gradient principal (Vert → Or)
  static const LinearGradient primaryGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [unionGreen, unionGreenLight],
  );

  /// Gradient chaleureux (Terracotta → Ambre)
  static const LinearGradient warmGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [terracotta, amber],
  );

  /// Gradient or (Gold → Gold Light)
  static const LinearGradient goldGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [gold, goldLight],
  );

  /// Gradient subtil pour backgrounds
  static const LinearGradient subtleGradient = LinearGradient(
    begin: Alignment.topCenter,
    end: Alignment.bottomCenter,
    colors: [Color(0xFFFAFBFC), Color(0xFFF7F9FA)],
  );

  // ═══════════════════════════════════════════════════════════════
  // OMBRES SIGNATURE
  // ═══════════════════════════════════════════════════════════════

  /// Ombre douce (cards, buttons)
  static List<BoxShadow> get softShadow => [
    BoxShadow(
      color: const Color(0xFF000000).withOpacity(0.08),
      blurRadius: 24,
      offset: const Offset(0, 8),
    ),
  ];

  /// Ombre moyenne (modals, floating elements)
  static List<BoxShadow> get mediumShadow => [
    BoxShadow(
      color: const Color(0xFF000000).withOpacity(0.12),
      blurRadius: 32,
      offset: const Offset(0, 12),
    ),
  ];

  /// Ombre forte (dialogs, overlays)
  static List<BoxShadow> get strongShadow => [
    BoxShadow(
      color: const Color(0xFF000000).withOpacity(0.16),
      blurRadius: 48,
      offset: const Offset(0, 16),
    ),
  ];

  /// Ombre colorée verte (pour CTAs)
  static List<BoxShadow> get greenGlowShadow => [
    BoxShadow(
      color: unionGreen.withOpacity(0.2),
      blurRadius: 20,
      offset: const Offset(0, 8),
    ),
  ];

  /// Ombre colorée dorée (pour éléments premium)
  static List<BoxShadow> get goldGlowShadow => [
    BoxShadow(
      color: gold.withOpacity(0.25),
      blurRadius: 20,
      offset: const Offset(0, 8),
    ),
  ];
}
