//
// ProPublica (propublica@1.0.0)
// Palette: propublica@1.0.0
// Fonts:   heading=playfair-display@1.0.0, body=lora@1.0.0, sans=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 {
    /// Warm Black — --p-color-warm-black — primary text and warm ink.
    public static let warmBlack = Color(.sRGB, red: 0.0667, green: 0.0667, blue: 0.0627, opacity: 1.0000)
    /// Black — --p-color-black — absolute black; mark fills.
    public static let black = Color(.sRGB, red: 0.0000, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Warm White — --p-color-warm-white — the warm cream canvas.
    public static let warmWhite = Color(.sRGB, red: 0.9490, green: 0.9451, blue: 0.9294, opacity: 1.0000)
    /// White — --p-color-white — bright canvas alternate.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Investigative Red — ProPublica promo red — the CTA and emphasis color.
    public static let investigativeRed = Color(.sRGB, red: 0.8510, green: 0.1765, blue: 0.0118, opacity: 1.0000)
    /// Investigative Red Deep — Pressed / active variant of investigative red.
    public static let investigativeRedDeep = Color(.sRGB, red: 0.6275, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Theme Blue — Deep slate-blue theme accent from the propublica-2026 theme.
    public static let themeBlue = Color(.sRGB, red: 0.1882, green: 0.2549, blue: 0.3294, opacity: 1.0000)
    /// Gray Warm — Warm gray secondary text.
    public static let grayWarm = Color(.sRGB, red: 0.3529, green: 0.3529, blue: 0.3529, opacity: 1.0000)
    /// Gray Medium — Medium gray tertiary text and meta.
    public static let grayMedium = Color(.sRGB, red: 0.4471, green: 0.4471, blue: 0.4471, opacity: 1.0000)
    /// Gray Quiet — Quiet gray for disabled / meta.
    public static let grayQuiet = Color(.sRGB, red: 0.5922, green: 0.5922, blue: 0.5922, opacity: 1.0000)
    /// Gray Border — Heavier border weight.
    public static let grayBorder = Color(.sRGB, red: 0.7804, green: 0.7804, blue: 0.7804, opacity: 1.0000)
    /// Gray Divider — Quiet rule weight.
    public static let grayDivider = Color(.sRGB, red: 0.8745, green: 0.8745, blue: 0.8745, opacity: 1.0000)
    /// Gray Tint — Quiet surface tint.
    public static let grayTint = Color(.sRGB, red: 0.9216, green: 0.9216, blue: 0.9216, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.warmWhite
    public static let surface = BrandSwatch.grayTint
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.warmBlack
    public static let textSecondary = BrandSwatch.grayWarm
    public static let textTertiary = BrandSwatch.grayMedium
    public static let primary = BrandSwatch.investigativeRed
    public static let primaryHover = BrandSwatch.investigativeRedDeep
    public static let accent = BrandSwatch.investigativeRed
    public static let accentHover = BrandSwatch.investigativeRedDeep
    public static let error = BrandSwatch.investigativeRedDeep
    public static let border = BrandSwatch.grayDivider
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.warmBlack
    public static let surface = BrandSwatch.themeBlue
    public static let surfaceElevated = BrandSwatch.grayWarm
    public static let textPrimary = BrandSwatch.warmWhite
    public static let textSecondary = BrandSwatch.grayDivider
    public static let textTertiary = BrandSwatch.grayBorder
    public static let primary = BrandSwatch.investigativeRed
    public static let primaryHover = BrandSwatch.investigativeRedDeep
    public static let accent = BrandSwatch.investigativeRed
    public static let accentHover = BrandSwatch.investigativeRedDeep
    public static let error = BrandSwatch.investigativeRed
    public static let border = BrandSwatch.grayWarm
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.warmWhite
    public static let onIdentity = BrandSwatch.warmBlack
    public static let primary = BrandSwatch.investigativeRed
    public static let primaryHover = BrandSwatch.investigativeRedDeep
    public static let accent = BrandSwatch.investigativeRed
    public static let accentHover = BrandSwatch.investigativeRedDeep
    public static let mark = BrandSwatch.warmBlack
    public static let error = BrandSwatch.investigativeRedDeep
    public static let textPrimaryLight = BrandSwatch.warmBlack
    public static let textPrimaryDark = BrandSwatch.warmWhite
    public static let backgroundLight = BrandSwatch.warmWhite
    public static let backgroundDark = BrandSwatch.warmBlack
    public static let surfaceLight = BrandSwatch.grayTint
    public static let surfaceDark = BrandSwatch.themeBlue
    public static let textSecondaryLight = BrandSwatch.grayWarm
    public static let textTertiaryLight = BrandSwatch.grayMedium
    public static let borderLight = BrandSwatch.grayDivider
}

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