import 'package:flutter/material.dart';

/// Svrnty Brand Color System
/// Complete color palette following Material Design 3 specifications
class SvrntyColors {
  // Prevent instantiation
  SvrntyColors._();

  // ============================================
  // CORE BRAND COLORS
  // ============================================

  /// Crimson Red - Primary accent and brand signature
  static const Color crimsonRed = Color(0xFFDF2D45);

  /// Almost Black - Primary dark background
  static const Color almostBlack = Color(0xFF06080C);

  /// Dark Slate - Secondary dark tone
  static const Color darkSlate = Color(0xFF3A4958);

  /// Slate Gray - Mid-tone gray (WCAG AAA compliant: 7.2:1 on white)
  static const Color slateGray = Color(0xFF2D3843);

  /// Teal - Tertiary accent
  static const Color teal = Color(0xFF1D2C39);

  /// Light Gray - Neutral light (4.6:1 on white for UI elements)
  static const Color lightGray = Color(0xFF737A82);

  // ============================================
  // SEMANTIC COLORS
  // ============================================

  /// Success - Green for positive actions and completed states
  static const Color success = Color(0xFF22C55E);

  /// Warning - Amber for warnings and attention-needed states
  static const Color warning = Color(0xFFF59E0B);

  /// Info - Blue for informational and in-progress states
  static const Color info = Color(0xFF3B82F6);

  /// Error - Red for errors, failures, and destructive actions
  static const Color error = Color(0xFFEF4444);

  // ============================================
  // DELIVERY STATUS COLORS (OPTIMIZED SVRNTY MAPPING)
  // ============================================

  /// Status Pending - Awaiting action (Amber - attention needed)
  static const Color statusPending = warning; // #F59E0B

  /// Status In Transit - Currently being delivered (Teal Blue - active process)
  static const Color statusInTransit = slateGray; // #506576

  /// Status Completed - Successfully delivered (Green - success)
  static const Color statusCompleted = success; // #22C55E

  /// Status Failed - Failed delivery (Error Red - problem)
  static const Color statusFailed = error; // #EF4444

  /// Status Cancelled - Cancelled delivery (Cool Gray - inactive)
  static const Color statusCancelled = lightGray; // #AEB8BE

  /// Status On Hold - Paused/waiting (Slate Blue - informational)
  static const Color statusOnHold = darkSlate; // #3A4958

  // ============================================
  // STATUS COLOR LIGHT BACKGROUNDS
  // ============================================

  /// Pending background (light amber)
  static const Color statusPendingBg = Color(0xFFFEF3C7);

  /// In Transit background (light teal)
  static const Color statusInTransitBg = Color(0xFFE0E7ED);

  /// Completed background (light green)
  static const Color statusCompletedBg = Color(0xFFD1FAE5);

  /// Failed background (light red)
  static const Color statusFailedBg = Color(0xFFFEE2E2);

  /// Cancelled background (light gray)
  static const Color statusCancelledBg = Color(0xFFF3F4F6);

  /// On Hold background (light slate)
  static const Color statusOnHoldBg = Color(0xFFE2E8F0);

  // ============================================
  // SURFACE VARIANTS
  // ============================================

  /// Surface Elevated - Light elevated surface
  static const Color surfaceElevated = Color(0xFFF5F7FA);

  /// Surface Subdued - Subdued light surface
  static const Color surfaceSubdued = Color(0xFFE8EAEE);

  // ============================================
  // EXTENDED COLOR FAMILIES - SUCCESS (GREEN)
  // ============================================

  /// Success color light theme
  static const Color successLight = Color(0xFF22C55E);

  /// Success on color light theme
  static const Color onSuccessLight = Color(0xFFFFFFFF);

  /// Success container light theme
  static const Color successContainerLight = Color(0xFFDCFCE7);

  /// Success on container light theme
  static const Color onSuccessContainerLight = Color(0xFF14532D);

  /// Success color dark theme
  static const Color successDark = Color(0xFF4ADE80);

  /// Success on color dark theme
  static const Color onSuccessDark = Color(0xFF14532D);

  /// Success container dark theme
  static const Color successContainerDark = Color(0xFF15803D);

  /// Success on container dark theme
  static const Color onSuccessContainerDark = Color(0xFFDCFCE7);

  // ============================================
  // EXTENDED COLOR FAMILIES - WARNING (AMBER)
  // ============================================

  /// Warning color light theme
  static const Color warningLight = Color(0xFFF59E0B);

  /// Warning on color light theme
  static const Color onWarningLight = Color(0xFFFFFFFF);

  /// Warning container light theme
  static const Color warningContainerLight = Color(0xFFFEF3C7);

  /// Warning on container light theme
  static const Color onWarningContainerLight = Color(0xFF78350F);

  /// Warning color dark theme
  static const Color warningDark = Color(0xFFFBBF24);

  /// Warning on color dark theme
  static const Color onWarningDark = Color(0xFF78350F);

  /// Warning container dark theme
  static const Color warningContainerDark = Color(0xFFD97706);

  /// Warning on container dark theme
  static const Color onWarningContainerDark = Color(0xFFFEF3C7);

  // ============================================
  // EXTENDED COLOR FAMILIES - INFO (BLUE)
  // ============================================

  /// Info color light theme
  static const Color infoLight = Color(0xFF3B82F6);

  /// Info on color light theme
  static const Color onInfoLight = Color(0xFFFFFFFF);

  /// Info container light theme
  static const Color infoContainerLight = Color(0xFFDEEEFF);

  /// Info on container light theme
  static const Color onInfoContainerLight = Color(0xFF003DA1);

  /// Info color dark theme
  static const Color infoDark = Color(0xFF90CAF9);

  /// Info on color dark theme
  static const Color onInfoDark = Color(0xFF003DA1);

  /// Info container dark theme
  static const Color infoContainerDark = Color(0xFF0D47A1);

  /// Info on container dark theme
  static const Color onInfoContainerDark = Color(0xFFDEEEFF);
}
