//
// European Digital Identity (eudi@1.0.0)
// Palette: eudi@1.0.0
// Fonts:   heading=public-sans@1.0.0, body=manrope@1.0.0, mono=roboto-mono@1.0.0
// Generated by brand-atoms converter — do not edit by hand.
//

import SwiftUI

/// Source-of-truth color swatches from the referenced palette.
public enum BrandSwatch {
    /// Branding — ECL canonical Branding blue — the European Commission identity colour.
    public static let branding = Color(.sRGB, red: 0.0000, green: 0.2667, blue: 0.5804, opacity: 1.0000)
    /// Primary 180 — Deepest primary — near-black blue for text and high-emphasis surfaces.
    public static let primary180 = Color(.sRGB, red: 0.0196, green: 0.0627, blue: 0.2118, opacity: 1.0000)
    /// Primary 160 — Deep primary — body text on light surfaces.
    public static let primary160 = Color(.sRGB, red: 0.0392, green: 0.1216, blue: 0.4235, opacity: 1.0000)
    /// Primary 140 — Strong primary — hover state for primary actions.
    public static let primary140 = Color(.sRGB, red: 0.0588, green: 0.1843, blue: 0.6353, opacity: 1.0000)
    /// Primary 120 — Mid-deep primary.
    public static let primary120 = Color(.sRGB, red: 0.0784, green: 0.2471, blue: 0.8510, opacity: 1.0000)
    /// Primary 100 — Default primary — the standard ECL interactive blue.
    public static let primary100 = Color(.sRGB, red: 0.2196, green: 0.3765, blue: 0.9294, opacity: 1.0000)
    /// Primary 80 — Lighter primary — quiet emphasis.
    public static let primary80 = Color(.sRGB, red: 0.3333, green: 0.4667, blue: 0.9412, opacity: 1.0000)
    /// Primary 60 — Pale primary.
    public static let primary60 = Color(.sRGB, red: 0.5373, green: 0.6314, blue: 0.9569, opacity: 1.0000)
    /// Primary 40 — Very pale primary — surface tint.
    public static let primary40 = Color(.sRGB, red: 0.6941, green: 0.7529, blue: 0.9725, opacity: 1.0000)
    /// Primary 20 — Palest primary — quiet surface background.
    public static let primary20 = Color(.sRGB, red: 0.8471, green: 0.8784, blue: 0.9843, opacity: 1.0000)
    /// Secondary 180 — Deep secondary — strong warm accent.
    public static let secondary180 = Color(.sRGB, red: 0.5608, green: 0.3373, blue: 0.0000, opacity: 1.0000)
    /// Secondary 160 — Mid-deep secondary.
    public static let secondary160 = Color(.sRGB, red: 0.8784, green: 0.5294, blue: 0.0000, opacity: 1.0000)
    /// Secondary 140 — Saturated secondary.
    public static let secondary140 = Color(.sRGB, red: 1.0000, green: 0.6157, blue: 0.0392, opacity: 1.0000)
    /// Secondary 120 — Mid secondary.
    public static let secondary120 = Color(.sRGB, red: 1.0000, green: 0.6784, blue: 0.2000, opacity: 1.0000)
    /// Secondary 100 — Default secondary — the standard ECL warm accent.
    public static let secondary100 = Color(.sRGB, red: 1.0000, green: 0.7451, blue: 0.3608, opacity: 1.0000)
    /// Secondary 80 — Lighter secondary.
    public static let secondary80 = Color(.sRGB, red: 1.0000, green: 0.7961, blue: 0.4863, opacity: 1.0000)
    /// Secondary 60 — Pale secondary.
    public static let secondary60 = Color(.sRGB, red: 1.0000, green: 0.8471, blue: 0.6157, opacity: 1.0000)
    /// Secondary 40 — Very pale secondary.
    public static let secondary40 = Color(.sRGB, red: 1.0000, green: 0.8980, blue: 0.7451, opacity: 1.0000)
    /// Secondary 20 — Palest secondary — quiet warm surface.
    public static let secondary20 = Color(.sRGB, red: 1.0000, green: 0.9490, blue: 0.8706, opacity: 1.0000)
    /// Dark 100 — Default ink — body text on light surfaces.
    public static let dark100 = Color(.sRGB, red: 0.1490, green: 0.1961, blue: 0.2941, opacity: 1.0000)
    /// Dark 80 — Secondary ink — hints, captions, metadata.
    public static let dark80 = Color(.sRGB, red: 0.3294, green: 0.4353, blue: 0.6510, opacity: 1.0000)
    /// Dark 60 — Tertiary ink — disabled text, quiet labels.
    public static let dark60 = Color(.sRGB, red: 0.6000, green: 0.6667, blue: 0.8000, opacity: 1.0000)
    /// Neutral 180 — Strongest neutral.
    public static let neutral180 = Color(.sRGB, red: 0.4235, green: 0.5216, blue: 0.8196, opacity: 1.0000)
    /// Neutral 160 — Strong neutral.
    public static let neutral160 = Color(.sRGB, red: 0.4980, green: 0.5843, blue: 0.8431, opacity: 1.0000)
    /// Neutral 140 — Mid-strong neutral.
    public static let neutral140 = Color(.sRGB, red: 0.5725, green: 0.6471, blue: 0.8667, opacity: 1.0000)
    /// Neutral 120 — Mid neutral.
    public static let neutral120 = Color(.sRGB, red: 0.6510, green: 0.7098, blue: 0.8902, opacity: 1.0000)
    /// Neutral 100 — Default neutral — borders, dividers on elevated surfaces.
    public static let neutral100 = Color(.sRGB, red: 0.7255, green: 0.7725, blue: 0.9137, opacity: 1.0000)
    /// Neutral 80 — Lighter neutral.
    public static let neutral80 = Color(.sRGB, red: 0.8039, green: 0.8353, blue: 0.9373, opacity: 1.0000)
    /// Neutral 60 — Pale neutral.
    public static let neutral60 = Color(.sRGB, red: 0.8784, green: 0.8980, blue: 0.9608, opacity: 1.0000)
    /// Neutral 40 — Very pale neutral — surface background.
    public static let neutral40 = Color(.sRGB, red: 0.9529, green: 0.9608, blue: 0.9843, opacity: 1.0000)
    /// Neutral 20 — Palest neutral — page background tint.
    public static let neutral20 = Color(.sRGB, red: 0.9725, green: 0.9765, blue: 0.9922, opacity: 1.0000)
    /// Info — Info colour — identical to Primary 100.
    public static let info = Color(.sRGB, red: 0.2196, green: 0.3765, blue: 0.9294, opacity: 1.0000)
    /// Success — Success / confirmation colour.
    public static let success = Color(.sRGB, red: 0.1412, green: 0.6314, blue: 0.2824, opacity: 1.0000)
    /// Warning — Warning colour.
    public static let warning = Color(.sRGB, red: 0.9529, green: 0.5961, blue: 0.0667, opacity: 1.0000)
    /// Error — Error / destructive colour.
    public static let error = Color(.sRGB, red: 0.8549, green: 0.1176, blue: 0.1569, opacity: 1.0000)
    /// Background — Default page background — near-white.
    public static let background = Color(.sRGB, red: 0.9882, green: 0.9882, blue: 0.9882, opacity: 1.0000)
    /// White — True white — used for elevated surfaces.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.background
    public static let surface = BrandSwatch.neutral40
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.dark100
    public static let textSecondary = BrandSwatch.dark80
    public static let textTertiary = BrandSwatch.dark60
    public static let primary = BrandSwatch.branding
    public static let primaryHover = BrandSwatch.primary140
    public static let accent = BrandSwatch.secondary100
    public static let accentHover = BrandSwatch.secondary140
    public static let warning = BrandSwatch.warning
    public static let warningHover = BrandSwatch.secondary180
    public static let error = BrandSwatch.error
    public static let success = BrandSwatch.success
    public static let border = BrandSwatch.neutral100
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.primary180
    public static let surface = BrandSwatch.primary160
    public static let surfaceElevated = BrandSwatch.primary140
    public static let textPrimary = BrandSwatch.neutral60
    public static let textSecondary = BrandSwatch.neutral100
    public static let textTertiary = BrandSwatch.neutral140
    public static let primary = BrandSwatch.primary60
    public static let primaryHover = BrandSwatch.primary40
    public static let accent = BrandSwatch.secondary100
    public static let accentHover = BrandSwatch.secondary80
    public static let warning = BrandSwatch.warning
    public static let warningHover = BrandSwatch.secondary120
    public static let error = BrandSwatch.error
    public static let success = BrandSwatch.success
    public static let border = BrandSwatch.primary140
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.white
    public static let onIdentity = BrandSwatch.dark100
    public static let primary = BrandSwatch.branding
    public static let primaryHover = BrandSwatch.primary140
    public static let accent = BrandSwatch.secondary100
    public static let accentHover = BrandSwatch.secondary140
    public static let mark = BrandSwatch.branding
    public static let success = BrandSwatch.success
    public static let warning = BrandSwatch.warning
    public static let error = BrandSwatch.error
    public static let textPrimaryLight = BrandSwatch.dark100
    public static let textPrimaryDark = BrandSwatch.neutral60
    public static let backgroundLight = BrandSwatch.background
    public static let backgroundDark = BrandSwatch.primary180
    public static let surfaceLight = BrandSwatch.neutral40
    public static let surfaceDark = BrandSwatch.primary160
    public static let textSecondaryLight = BrandSwatch.dark80
    public static let textTertiaryLight = BrandSwatch.dark60
    public static let borderLight = BrandSwatch.neutral100
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Public Sans (public-sans@1.0.0)
    public static let heading = "Public Sans"
    /// Manrope (manrope@1.0.0)
    public static let body = "Manrope"
    /// Roboto Mono (roboto-mono@1.0.0)
    public static let mono = "Roboto Mono"
}
