//
// Codecademy (codecademy@1.0.0)
// Palette: codecademy@1.0.0
// Fonts:   heading=inter@1.0.0, body=inter@1.0.0, mono=geist-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 {
    /// Navy — Codecademy's signature deep navy. Both the body text ink on light surfaces and the canvas in dark mode.
    public static let navy = Color(.sRGB, red: 0.0627, green: 0.0863, blue: 0.1843, opacity: 1.0000)
    /// Navy 900 — Deepest navy — pressed Navy / hero anchor.
    public static let navy900 = Color(.sRGB, red: 0.0392, green: 0.0510, blue: 0.1098, opacity: 1.0000)
    /// Hyper — Codecademy's signature electric purple-blue. The primary brand action color on marketing surfaces.
    public static let hyper = Color(.sRGB, red: 0.2275, green: 0.0627, blue: 0.8980, opacity: 1.0000)
    /// Hyper Light — Slightly brighter Hyper — hover and accent moment.
    public static let hyperLight = Color(.sRGB, red: 0.3333, green: 0.2000, blue: 1.0000, opacity: 1.0000)
    /// Blue — Mid-blue accent (Gamut blue-500) — link and focus state.
    public static let blue = Color(.sRGB, red: 0.0824, green: 0.3412, blue: 1.0000, opacity: 1.0000)
    /// Blue Light — Brighter blue accent (Gamut blue-400).
    public static let blueLight = Color(.sRGB, red: 0.2000, green: 0.5333, blue: 1.0000, opacity: 1.0000)
    /// Blue 300 — Pale info-blue (Gamut blue-300).
    public static let blue300 = Color(.sRGB, red: 0.4000, green: 0.7686, blue: 1.0000, opacity: 1.0000)
    /// Blue Pale — Pale blue surface tint (Gamut blue-100).
    public static let bluePale = Color(.sRGB, red: 0.8275, green: 0.9490, blue: 1.0000, opacity: 1.0000)
    /// Blue 0 — Faintest blue surface wash (Gamut blue-0).
    public static let blue0 = Color(.sRGB, red: 0.9608, green: 0.9882, blue: 1.0000, opacity: 1.0000)
    /// Green — Codecademy's success green (Gamut green-700).
    public static let green = Color(.sRGB, red: 0.0000, green: 0.5412, blue: 0.1529, opacity: 1.0000)
    /// Green Light — Lime green accent (Gamut green-400) — celebration and completion.
    public static let greenLight = Color(.sRGB, red: 0.6824, green: 0.9137, blue: 0.2196, opacity: 1.0000)
    /// Green Pale — Pale green surface tint (Gamut green-100).
    public static let greenPale = Color(.sRGB, red: 0.9176, green: 0.9922, blue: 0.7765, opacity: 1.0000)
    /// Green 0 — Faintest green wash (Gamut green-0).
    public static let green0 = Color(.sRGB, red: 0.9608, green: 1.0000, blue: 0.8902, opacity: 1.0000)
    /// Yellow — Warning / streak yellow (Gamut yellow-500).
    public static let yellow = Color(.sRGB, red: 1.0000, green: 0.8275, blue: 0.0000, opacity: 1.0000)
    /// Yellow Dark — Pressed yellow (Gamut yellow-400).
    public static let yellowDark = Color(.sRGB, red: 0.8000, green: 0.6627, blue: 0.0000, opacity: 1.0000)
    /// Yellow 0 — Faintest yellow surface wash (Gamut yellow-0).
    public static let yellow0 = Color(.sRGB, red: 1.0000, green: 0.9804, blue: 0.8980, opacity: 1.0000)
    /// Red — Error / destructive red (Gamut red-500).
    public static let red = Color(.sRGB, red: 0.9137, green: 0.1098, blue: 0.0667, opacity: 1.0000)
    /// Red Dark — Pressed error red (Gamut red-600).
    public static let redDark = Color(.sRGB, red: 0.7451, green: 0.0941, blue: 0.0353, opacity: 1.0000)
    /// Red Soft — Soft rose-red (Gamut red-400).
    public static let redSoft = Color(.sRGB, red: 0.8627, green: 0.3451, blue: 0.4745, opacity: 1.0000)
    /// Red 0 — Faintest red surface wash (Gamut red-0).
    public static let red0 = Color(.sRGB, red: 0.9843, green: 0.9451, blue: 0.9412, opacity: 1.0000)
    /// Pink — Editorial pink (Gamut pink-400).
    public static let pink = Color(.sRGB, red: 0.9765, green: 0.4000, blue: 1.0000, opacity: 1.0000)
    /// Orange — Editorial orange (Gamut orange-500).
    public static let orange = Color(.sRGB, red: 1.0000, green: 0.5490, blue: 0.0000, opacity: 1.0000)
    /// Beige — Warm beige surface tint (Gamut beige-100) — used in marketing hero washes.
    public static let beige = Color(.sRGB, red: 1.0000, green: 0.9412, blue: 0.8980, opacity: 1.0000)
    /// White — Pure white — marketing canvas.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Gray 100 — Lightest grey surface (Gamut gray-100).
    public static let gray100 = Color(.sRGB, red: 0.9608, green: 0.9608, blue: 0.9608, opacity: 1.0000)
    /// Gray 200 — Light grey surface (Gamut gray-200).
    public static let gray200 = Color(.sRGB, red: 0.9333, green: 0.9333, blue: 0.9333, opacity: 1.0000)
    /// Gray 300 — Border / divider grey (Gamut gray-300).
    public static let gray300 = Color(.sRGB, red: 0.8784, green: 0.8784, blue: 0.8784, opacity: 1.0000)
    /// Gray 600 — Tertiary text grey (Gamut gray-600).
    public static let gray600 = Color(.sRGB, red: 0.6196, green: 0.6196, blue: 0.6196, opacity: 1.0000)
    /// Gray 800 — Secondary text grey (Gamut gray-800).
    public static let gray800 = Color(.sRGB, red: 0.3804, green: 0.3804, blue: 0.3804, opacity: 1.0000)
    /// Gray 900 — Deep grey (Gamut gray-900).
    public static let gray900 = Color(.sRGB, red: 0.2588, green: 0.2588, blue: 0.2588, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.white
    public static let surface = BrandSwatch.gray100
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.navy
    public static let textSecondary = BrandSwatch.gray800
    public static let textTertiary = BrandSwatch.gray600
    public static let primary = BrandSwatch.hyper
    public static let primaryHover = BrandSwatch.hyperLight
    public static let accent = BrandSwatch.hyperLight
    public static let accentHover = BrandSwatch.hyper
    public static let warning = BrandSwatch.yellow
    public static let warningHover = BrandSwatch.yellowDark
    public static let error = BrandSwatch.red
    public static let success = BrandSwatch.green
    public static let border = BrandSwatch.gray300
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.navy
    public static let surface = BrandSwatch.navy900
    public static let surfaceElevated = BrandSwatch.navy
    public static let textPrimary = BrandSwatch.white
    public static let textSecondary = BrandSwatch.gray300
    public static let textTertiary = BrandSwatch.gray600
    public static let primary = BrandSwatch.hyperLight
    public static let primaryHover = BrandSwatch.hyper
    public static let accent = BrandSwatch.greenLight
    public static let accentHover = BrandSwatch.green
    public static let warning = BrandSwatch.yellow
    public static let warningHover = BrandSwatch.yellowDark
    public static let error = BrandSwatch.redSoft
    public static let success = BrandSwatch.greenLight
    public static let border = BrandSwatch.gray900
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.navy
    public static let onIdentity = BrandSwatch.white
    public static let primary = BrandSwatch.hyper
    public static let primaryHover = BrandSwatch.hyperLight
    public static let accent = BrandSwatch.greenLight
    public static let accentHover = BrandSwatch.green
    public static let mark = BrandSwatch.hyper
    public static let success = BrandSwatch.green
    public static let warning = BrandSwatch.yellow
    public static let error = BrandSwatch.red
    public static let textPrimaryLight = BrandSwatch.navy
    public static let textPrimaryDark = BrandSwatch.white
    public static let backgroundLight = BrandSwatch.white
    public static let backgroundDark = BrandSwatch.navy
    public static let surfaceLight = BrandSwatch.gray100
    public static let surfaceDark = BrandSwatch.navy900
    public static let textSecondaryLight = BrandSwatch.gray800
    public static let textTertiaryLight = BrandSwatch.gray600
    public static let borderLight = BrandSwatch.gray300
    public static let borderDark = BrandSwatch.gray900
}

/// 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"
    /// Geist Mono (geist-mono@1.0.0)
    public static let mono = "Geist Mono"
}
