import 'package:flutter/material.dart';

/// Enterprise health app color system.
class AppColors {
  AppColors._();

  static const Color primary = Color(0xFF7C5CFF);
  static const Color primaryLight = Color(0xFFEDE9FF);
  static const Color primarySoft = Color(0xFFF7F4FF);
  static const Color primaryDark = Color(0xFF5B4BDB);
  static const Color blueMeasure = Color(0xFF60A5FA);
  static const Color doctorBlue = Color(0xFF3B82F6);
  static const Color auraLavender = Color(0xFFC4B5FD);
  static const Color auraIndigo = Color(0xFF8B5CF6);
  static const Color auraOrchid = Color(0xFFE879F9);
  static const Color auraDeepIndigo = Color(0xFF7C3AED);
  static const Color mintAccent = Color(0xFF67E8F9);
  static const Color peachAccent = Color(0xFFFBCFE8);
  static const Color roseAccent = Color(0xFFFB7185);
  static const Color meadowAccent = Color(0xFFBAE6FD);
  static const Color sageAccent = Color(0xFFE9D5FF);

  static const Color health = Color(0xFF2D9D8F);
  static const Color healthLight = Color(0xFFECF8F5);
  static const Color healthBorder = Color(0xFFCBE9E2);
  static const Color medication = Color(0xFF00B8D9);
  static const Color medicationLight = Color(0xFFEAFBFF);
  static const Color medicationBorder = Color(0xFFB8F0FA);
  static const Color exercise = Color(0xFF7C3AED);
  static const Color exerciseLight = Color(0xFFF3E8FF);
  static const Color exerciseBorder = Color(0xFFDDD6FE);
  static const Color report = Color(0xFF6366F1);
  static const Color reportLight = Color(0xFFEFFBFF);
  static const Color reportBorder = Color(0xFFBAE6FD);
  static const Color diet = Color(0xFFF7971E);
  static const Color dietLight = Color(0xFFFFF8DB);
  static const Color dietBorder = Color(0xFFFFE58A);
  static const Color device = Color(0xFF2563EB);
  static const Color deviceLight = Color(0xFFEFF6FF);
  static const Color deviceBorder = Color(0xFFBFDBFE);
  static const Color notification = Color(0xFF7C5CFF);
  static const Color notificationLight = Color(0xFFF5F3FF);
  static const Color notificationBorder = Color(0xFFDDD6FE);
  static const Color doctor = Color(0xFFFFAFBD);
  static const Color doctorLight = Color(0xFFFFF3EF);
  static const Color doctorBorder = Color(0xFFFFD7CB);
  static const Color calendar = Color(0xFF6366F1);
  static const Color calendarLight = Color(0xFFEEF2FF);
  static const Color calendarBorder = Color(0xFFC7D2FE);
  static const Color followup = Color(0xFFDB2777);
  static const Color followupLight = Color(0xFFFDF2F8);
  static const Color followupBorder = Color(0xFFFBCFE8);

  static const Color background = Color(0xFFF3F5F8);
  static const Color backgroundSoft = Color(0xFFFFFFFF);
  static const Color cardBackground = Color(0xFFFFFFFF);
  static const Color cardInner = Color(0xFFF1F5F9);
  static const Color pageGrey = background;
  static const Color iconBg = Color(0xFFEFF6FF);
  static const Color avatarBg = Color(0xFFF5F3FF);

  static const Color textPrimary = Color(0xFF1F2937);
  static const Color textSecondary = Color(0xFF475467);
  static const Color textHint = Color(0xFF667085);
  static const Color textOnGradient = Color(0xFFFFFFFF);

  static const Color border = Color(0xFFD5DCE5);
  static const Color borderLight = Color(0xFFE2E8F0);
  static const Color divider = Color(0xFFE5EAF1);

  static const Color success = Color(0xFF16A34A);
  static const Color successLight = Color(0xFFEAF8EF);
  static const Color successText = Color(0xFF15803D);
  static const Color error = Color(0xFFEF4444);
  static const Color errorLight = Color(0xFFFEECEF);
  static const Color errorText = Color(0xFFDC2626);
  static const Color warning = Color(0xFFF59E0B);
  static const Color warningLight = Color(0xFFFFF7E6);
  static const Color warningText = Color(0xFFB45309);
  static const Color infoLight = Color(0xFFEFF5FF);

  static const LinearGradient primaryGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF8B5CF6), Color(0xFF7C5CFF), Color(0xFF6366F1)],
    stops: [0.0, 0.5, 1.0],
  );

  static const LinearGradient bgGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [
      Color(0xFFFFFFFF),
      Color(0xFFEFF6FF),
      Color(0xFFF5F3FF),
      Color(0xFFFDF2F8),
    ],
    stops: [0.0, 0.42, 0.74, 1.0],
  );

  static const LinearGradient drawerGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFFFFFFF), Color(0xFFEFF6FF), Color(0xFFFDF2F8)],
    stops: [0.0, 0.52, 1.0],
  );

  static const LinearGradient surfaceGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFFFFFFF), Color(0xFFF8FAFC)],
  );

  static const LinearGradient softGlassGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFAFFFFFF), Color(0xF0FFFFFF)],
  );

  static const LinearGradient roseVioletGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF8B5CF6), Color(0xFFFB7185)],
  );

  static const LinearGradient sageVioletGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF60A5FA), Color(0xFFE879F9)],
  );

  static const LinearGradient meadowVioletGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFBAE6FD), Color(0xFFC4B5FD)],
  );

  static const LinearGradient calmHealthGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF60A5FA), Color(0xFFC4B5FD)],
  );

  static const LinearGradient warmCareGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFFBCFE8), Color(0xFFC4B5FD)],
  );

  static const LinearGradient actionOutlineGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [
      Color(0xFFC084FC),
      Color(0xFF818CF8),
      Color(0xFFC084FC),
      Color(0xFF818CF8),
    ],
    stops: [0.0, 0.3, 0.6, 1.0],
  );

  static const LinearGradient doctorGradient = LinearGradient(
    begin: Alignment.centerLeft,
    end: Alignment.centerRight,
    colors: [Color(0xFFFFC3A0), Color(0xFFFFAFBD)],
  );

  static const LinearGradient healthGradient = LinearGradient(
    begin: Alignment.centerLeft,
    end: Alignment.centerRight,
    colors: [Color(0xFF43E97B), Color(0xFF38F9D7)],
  );

  static const LinearGradient medicationGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF4FACFE), Color(0xFF00F2FE)],
  );

  static const LinearGradient exerciseGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFC4B5FD), Color(0xFF7C3AED)],
  );

  static const LinearGradient reportGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF38BDF8), Color(0xFF818CF8)],
  );

  static const LinearGradient dietGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFF7971E), Color(0xFFFFD200)],
  );

  static const LinearGradient deviceGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF60A5FA), Color(0xFF2563EB)],
  );

  static const LinearGradient notificationGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF8B5CF6), Color(0xFF6366F1)],
  );

  static const LinearGradient doctorCareGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF14B8A6), Color(0xFF0F766E)],
  );

  static const LinearGradient calendarGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFF818CF8), Color(0xFF4F46E5)],
  );

  static const LinearGradient followupGradient = LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(0xFFF472B6), Color(0xFFDB2777)],
  );

  static List<BoxShadow> get cardShadow => [
    BoxShadow(
      color: const Color(0xFF101828).withValues(alpha: 0.07),
      blurRadius: 22,
      offset: const Offset(0, 10),
    ),
  ];

  static List<BoxShadow> get cardShadowLight => [
    BoxShadow(
      color: const Color(0xFF101828).withValues(alpha: 0.045),
      blurRadius: 14,
      offset: const Offset(0, 6),
    ),
  ];

  static List<BoxShadow> get buttonShadow => [
    BoxShadow(
      color: primary.withValues(alpha: 0.22),
      blurRadius: 16,
      offset: const Offset(0, 8),
    ),
  ];

  static List<BoxShadow> get fabShadow => buttonShadow;

  static Color get iconColor => primary;
  static LinearGradient get purpleBlueGradient => primaryGradient;
  static Color get primaryPurple => primary;
  static Color get primaryBlue => blueMeasure;
  static Color get backgroundSecondary => background;
  static LinearGradient get successButtonGradient => primaryGradient;
  static LinearGradient get lightGradient => bgGradient;
}
