//
// Harvard (harvard@1.0.0)
// Palette: harvard@1.0.0
// Fonts:   heading=lora@1.0.0, body=inter@1.0.0, serif=lora@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 {
    /// Crimson — Harvard's institutional crimson — primary brand colour.
    public static let crimson = Color(.sRGB, red: 0.6471, green: 0.1098, blue: 0.1882, opacity: 1.0000)
    /// Black — Primary text and dark surfaces.
    public static let black = Color(.sRGB, red: 0.1176, green: 0.1176, blue: 0.1176, opacity: 1.0000)
    /// White — Primary canvas in light mode.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Grey — Cool institutional grey — secondary surface.
    public static let grey = Color(.sRGB, red: 0.5765, green: 0.6314, blue: 0.6784, opacity: 1.0000)
    /// Red — Saturated accent red — digital emphasis.
    public static let red = Color(.sRGB, red: 0.9294, green: 0.1059, blue: 0.2039, opacity: 1.0000)
    /// Salmon — Pastel salmon — pairs with Crimson on light surfaces.
    public static let salmon = Color(.sRGB, red: 0.9255, green: 0.5608, blue: 0.6118, opacity: 1.0000)
    /// Green — Mid-green — success / positive data-viz.
    public static let green = Color(.sRGB, red: 0.3020, green: 0.7216, blue: 0.2824, opacity: 1.0000)
    /// Lime Green — Bright lime — illustration accent.
    public static let limeGreen = Color(.sRGB, red: 0.7961, green: 0.8588, blue: 0.1647, opacity: 1.0000)
    /// Blue — Mid-blue — supporting cool tone, links.
    public static let blue = Color(.sRGB, red: 0.3059, green: 0.5333, blue: 0.7804, opacity: 1.0000)
    /// Sky Blue — Pale sky — soft cool surface tint.
    public static let skyBlue = Color(.sRGB, red: 0.5843, green: 0.7098, blue: 0.8745, opacity: 1.0000)
    /// Warm Yellow — Warm gold — warning / highlight.
    public static let warmYellow = Color(.sRGB, red: 0.9882, green: 0.7020, blue: 0.0824, opacity: 1.0000)
    /// Yellow — Bright yellow — editorial highlight.
    public static let yellow = Color(.sRGB, red: 1.0000, green: 0.8706, blue: 0.1765, opacity: 1.0000)
    /// Turquoise — Saturated turquoise — accent.
    public static let turquoise = Color(.sRGB, red: 0.0000, green: 0.6667, blue: 0.6784, opacity: 1.0000)
    /// Aquamarine — Pale aquamarine — illustration tint.
    public static let aquamarine = Color(.sRGB, red: 0.4667, green: 0.8078, blue: 0.8510, opacity: 1.0000)
    /// Purple — Mid-purple — accent.
    public static let purple = Color(.sRGB, red: 0.5804, green: 0.4314, blue: 0.7176, opacity: 1.0000)
    /// Lavender — Pale lavender — illustration tint.
    public static let lavender = Color(.sRGB, red: 0.7333, green: 0.5373, blue: 0.7922, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.white
    public static let surface = BrandSwatch.grey
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.black
    public static let textSecondary = BrandSwatch.black
    public static let textTertiary = BrandSwatch.grey
    public static let primary = BrandSwatch.crimson
    public static let primaryHover = BrandSwatch.red
    public static let accent = BrandSwatch.crimson
    public static let accentHover = BrandSwatch.red
    public static let link = BrandSwatch.blue
    public static let linkHover = BrandSwatch.crimson
    public static let warning = BrandSwatch.warmYellow
    public static let warningHover = BrandSwatch.yellow
    public static let error = BrandSwatch.red
    public static let success = BrandSwatch.green
    public static let border = BrandSwatch.grey
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.black
    public static let surface = BrandSwatch.grey
    public static let surfaceElevated = BrandSwatch.grey
    public static let textPrimary = BrandSwatch.white
    public static let textSecondary = BrandSwatch.grey
    public static let textTertiary = BrandSwatch.grey
    public static let primary = BrandSwatch.crimson
    public static let primaryHover = BrandSwatch.red
    public static let accent = BrandSwatch.salmon
    public static let accentHover = BrandSwatch.crimson
    public static let link = BrandSwatch.skyBlue
    public static let linkHover = BrandSwatch.blue
    public static let warning = BrandSwatch.warmYellow
    public static let warningHover = BrandSwatch.yellow
    public static let error = BrandSwatch.red
    public static let success = BrandSwatch.limeGreen
    public static let border = BrandSwatch.grey
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.white
    public static let onIdentity = BrandSwatch.black
    public static let primary = BrandSwatch.crimson
    public static let primaryHover = BrandSwatch.red
    public static let accent = BrandSwatch.crimson
    public static let accentHover = BrandSwatch.red
    public static let mark = BrandSwatch.crimson
    public static let success = BrandSwatch.green
    public static let warning = BrandSwatch.warmYellow
    public static let error = BrandSwatch.red
    public static let textPrimaryLight = BrandSwatch.black
    public static let textPrimaryDark = BrandSwatch.white
    public static let backgroundLight = BrandSwatch.white
    public static let backgroundDark = BrandSwatch.black
    public static let surfaceLight = BrandSwatch.grey
    public static let surfaceDark = BrandSwatch.grey
    public static let textSecondaryLight = BrandSwatch.black
    public static let textTertiaryLight = BrandSwatch.grey
    public static let borderLight = BrandSwatch.grey
}

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