//
// BBC (bbc@1.0.0)
// Palette: bbc@1.0.0
// Fonts:   heading=inter@1.0.0, body=inter@1.0.0, mono=jetbrainsmono-nerdfont@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 {
    /// Postbox — BBC signature red — the brand's primary identity color.
    public static let postbox = Color(.sRGB, red: 0.7216, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Postbox 30 — Light tint of postbox — quiet emphasis backgrounds.
    public static let postbox30 = Color(.sRGB, red: 0.9176, green: 0.7020, blue: 0.7020, opacity: 1.0000)
    /// Black — BBC blocks logo black; the primary text on white.
    public static let black = Color(.sRGB, red: 0.0000, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Ebon — Body text on light surfaces.
    public static let ebon = Color(.sRGB, red: 0.1333, green: 0.1333, blue: 0.1333, opacity: 1.0000)
    /// Midnight Black — Dark-mode canvas; the deep BBC night surface.
    public static let midnightBlack = Color(.sRGB, red: 0.0706, green: 0.0706, blue: 0.0706, opacity: 1.0000)
    /// White — Page canvas — bright BBC background.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Ghost — Faintly warm off-white — large-area canvas alternative.
    public static let ghost = Color(.sRGB, red: 0.9922, green: 0.9922, blue: 0.9922, opacity: 1.0000)
    /// Chalk — Warm neutral background — the BBC paper tone.
    public static let chalk = Color(.sRGB, red: 0.9255, green: 0.9176, blue: 0.9059, opacity: 1.0000)
    /// Oat Light — Lighter warm-paper tone for elevated surfaces.
    public static let oatLight = Color(.sRGB, red: 0.9608, green: 0.9529, blue: 0.9451, opacity: 1.0000)
    /// Lunar — Cool quiet surface; alternate page tint.
    public static let lunar = Color(.sRGB, red: 0.9490, green: 0.9490, blue: 0.9490, opacity: 1.0000)
    /// Lunar Light — Lightest cool surface — quiet inset.
    public static let lunarLight = Color(.sRGB, red: 0.9725, green: 0.9725, blue: 0.9725, opacity: 1.0000)
    /// Grey 3 — Hairline divider; quiet card border.
    public static let grey3 = Color(.sRGB, red: 0.9020, green: 0.9098, blue: 0.9176, opacity: 1.0000)
    /// Grey 4 — Disabled / decorative border weight.
    public static let grey4 = Color(.sRGB, red: 0.6902, green: 0.6980, blue: 0.7059, opacity: 1.0000)
    /// Grey 5 — Quiet meta text on light surface.
    public static let grey5 = Color(.sRGB, red: 0.5412, green: 0.5490, blue: 0.5569, opacity: 1.0000)
    /// Grey 6 — Secondary body text.
    public static let grey6 = Color(.sRGB, red: 0.3294, green: 0.3373, blue: 0.3451, opacity: 1.0000)
    /// Grey 7 — Dark surface; secondary text on dark.
    public static let grey7 = Color(.sRGB, red: 0.2275, green: 0.2353, blue: 0.2431, opacity: 1.0000)
    /// Service Neutral — Service-neutral link blue.
    public static let serviceNeutral = Color(.sRGB, red: 0.0000, green: 0.4431, blue: 0.9451, opacity: 1.0000)
    /// Service Neutral Dark — Pressed / active variant of service-neutral.
    public static let serviceNeutralDark = Color(.sRGB, red: 0.0000, green: 0.3176, blue: 0.6784, opacity: 1.0000)
    /// Live Core — BBC LIVE teal — live-coverage status color.
    public static let liveCore = Color(.sRGB, red: 0.0000, green: 0.6196, blue: 0.6196, opacity: 1.0000)
    /// Live Light — Brighter LIVE teal for dark surfaces.
    public static let liveLight = Color(.sRGB, red: 0.0000, green: 0.8000, blue: 0.7804, opacity: 1.0000)
    /// Sport Yellow — BBC Sport accent yellow.
    public static let sportYellow = Color(.sRGB, red: 1.0000, green: 0.8235, blue: 0.1882, opacity: 1.0000)
    /// Error Core — Error / failure state color (Simorgh standard).
    public static let errorCore = Color(.sRGB, red: 0.8980, green: 0.0941, blue: 0.3294, opacity: 1.0000)
    /// Success Core — Confirmation / success state.
    public static let successCore = Color(.sRGB, red: 0.0784, green: 0.5412, blue: 0.0000, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.white
    public static let surface = BrandSwatch.chalk
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.ebon
    public static let textSecondary = BrandSwatch.grey6
    public static let textTertiary = BrandSwatch.grey5
    public static let primary = BrandSwatch.postbox
    public static let primaryHover = BrandSwatch.serviceNeutralDark
    public static let accent = BrandSwatch.postbox
    public static let accentHover = BrandSwatch.serviceNeutral
    public static let warning = BrandSwatch.sportYellow
    public static let error = BrandSwatch.errorCore
    public static let success = BrandSwatch.successCore
    public static let border = BrandSwatch.grey3
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.midnightBlack
    public static let surface = BrandSwatch.grey7
    public static let surfaceElevated = BrandSwatch.grey6
    public static let textPrimary = BrandSwatch.white
    public static let textSecondary = BrandSwatch.grey3
    public static let textTertiary = BrandSwatch.grey4
    public static let primary = BrandSwatch.postbox
    public static let primaryHover = BrandSwatch.postbox30
    public static let accent = BrandSwatch.postbox
    public static let accentHover = BrandSwatch.liveLight
    public static let warning = BrandSwatch.sportYellow
    public static let error = BrandSwatch.errorCore
    public static let success = BrandSwatch.successCore
    public static let border = BrandSwatch.grey6
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.postbox
    public static let onIdentity = BrandSwatch.white
    public static let primary = BrandSwatch.postbox
    public static let primaryHover = BrandSwatch.serviceNeutralDark
    public static let accent = BrandSwatch.postbox
    public static let accentHover = BrandSwatch.liveCore
    public static let mark = BrandSwatch.postbox
    public static let success = BrandSwatch.successCore
    public static let warning = BrandSwatch.sportYellow
    public static let error = BrandSwatch.errorCore
    public static let textPrimaryLight = BrandSwatch.ebon
    public static let textPrimaryDark = BrandSwatch.white
    public static let backgroundLight = BrandSwatch.white
    public static let backgroundDark = BrandSwatch.midnightBlack
    public static let surfaceLight = BrandSwatch.chalk
    public static let surfaceDark = BrandSwatch.grey7
    public static let textSecondaryLight = BrandSwatch.grey6
    public static let textTertiaryLight = BrandSwatch.grey5
    public static let borderLight = BrandSwatch.grey3
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Inter (inter@1.0.0)
    public static let heading = "Inter"
    /// Inter (inter@1.0.0)
    public static let body = "Inter"
    /// JetBrainsMono Nerd Font (jetbrainsmono-nerdfont@1.0.0)
    public static let mono = "JetBrainsMono Nerd Font"
}
