//
// The Washington Post (wapo@1.0.0)
// Palette: wapo@1.0.0
// Fonts:   heading=playfair-display@1.0.0, body=pt-serif@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 {
    /// Gray 0 — WPDS gray0 — absolute black; mark fills.
    public static let gray0 = Color(.sRGB, red: 0.0000, green: 0.0000, blue: 0.0000, opacity: 1.0000)
    /// Gray 20 — WPDS gray20 — primary text; the WaPo ink.
    public static let gray20 = Color(.sRGB, red: 0.0667, green: 0.0667, blue: 0.0667, opacity: 1.0000)
    /// Gray 40 — WPDS gray40 — heading deck and body emphasis.
    public static let gray40 = Color(.sRGB, red: 0.1647, green: 0.1647, blue: 0.1647, opacity: 1.0000)
    /// Gray 60 — WPDS gray60 — secondary text.
    public static let gray60 = Color(.sRGB, red: 0.2863, green: 0.2863, blue: 0.2863, opacity: 1.0000)
    /// Gray 80 — WPDS gray80 — accessible quiet text on white.
    public static let gray80 = Color(.sRGB, red: 0.4000, green: 0.4000, blue: 0.4000, opacity: 1.0000)
    /// Gray 100 — WPDS gray100 — meta text; tertiary surfaces.
    public static let gray100 = Color(.sRGB, red: 0.4510, green: 0.4510, blue: 0.4510, opacity: 1.0000)
    /// Gray 200 — WPDS gray200 — divider weight.
    public static let gray200 = Color(.sRGB, red: 0.6667, green: 0.6667, blue: 0.6667, opacity: 1.0000)
    /// Gray 300 — WPDS gray300 — border on light.
    public static let gray300 = Color(.sRGB, red: 0.8314, green: 0.8314, blue: 0.8314, opacity: 1.0000)
    /// Gray 400 — WPDS gray400 — quiet surface tint.
    public static let gray400 = Color(.sRGB, red: 0.9137, green: 0.9137, blue: 0.9137, opacity: 1.0000)
    /// Gray 500 — WPDS gray500 — alternating row tint.
    public static let gray500 = Color(.sRGB, red: 0.9412, green: 0.9412, blue: 0.9412, opacity: 1.0000)
    /// Gray 600 — WPDS gray600 — subtle inset surface.
    public static let gray600 = Color(.sRGB, red: 0.9686, green: 0.9686, blue: 0.9686, opacity: 1.0000)
    /// Gray 700 — WPDS gray700 — white canvas.
    public static let gray700 = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Blue 40 — WPDS blue40 — deepest navy ink-blue.
    public static let blue40 = Color(.sRGB, red: 0.0392, green: 0.1961, blue: 0.3451, opacity: 1.0000)
    /// Blue 60 — WPDS blue60 — heading-blue and trusted-source link.
    public static let blue60 = Color(.sRGB, red: 0.0588, green: 0.2941, blue: 0.5176, opacity: 1.0000)
    /// Blue 80 — WPDS blue80 — quiet primary on dark surfaces.
    public static let blue80 = Color(.sRGB, red: 0.0745, green: 0.4000, blue: 0.7020, opacity: 1.0000)
    /// Blue 100 — WPDS blue100 — primary CTA blue.
    public static let blue100 = Color(.sRGB, red: 0.0863, green: 0.4275, blue: 0.9882, opacity: 1.0000)
    /// Blue 200 — WPDS blue200 — calmer link on lighter contexts.
    public static let blue200 = Color(.sRGB, red: 0.3412, green: 0.5176, blue: 0.7725, opacity: 1.0000)
    /// Red 60 — WPDS red60 — deep newsroom red.
    public static let red60 = Color(.sRGB, red: 0.5569, green: 0.1216, blue: 0.1059, opacity: 1.0000)
    /// Red 80 — WPDS red80 — emphasis and breaking-news pulse.
    public static let red80 = Color(.sRGB, red: 0.7451, green: 0.1725, blue: 0.1451, opacity: 1.0000)
    /// Red 100 — WPDS red100 — masthead-bright breaking red.
    public static let red100 = Color(.sRGB, red: 0.9176, green: 0.0000, blue: 0.0902, opacity: 1.0000)
    /// Orange 80 — WPDS orange80 — warning emphasis.
    public static let orange80 = Color(.sRGB, red: 0.8471, green: 0.3804, blue: 0.0000, opacity: 1.0000)
    /// Green 80 — WPDS green80 — confirmation / positive change.
    public static let green80 = Color(.sRGB, red: 0.2863, green: 0.5765, blue: 0.1529, opacity: 1.0000)
    /// Gold 60 — WPDS gold60 — opinion/analysis category accent.
    public static let gold60 = Color(.sRGB, red: 0.6196, green: 0.3804, blue: 0.0196, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.gray700
    public static let surface = BrandSwatch.gray600
    public static let surfaceElevated = BrandSwatch.gray700
    public static let textPrimary = BrandSwatch.gray20
    public static let textSecondary = BrandSwatch.gray60
    public static let textTertiary = BrandSwatch.gray80
    public static let primary = BrandSwatch.blue100
    public static let primaryHover = BrandSwatch.blue80
    public static let accent = BrandSwatch.red80
    public static let accentHover = BrandSwatch.red60
    public static let warning = BrandSwatch.orange80
    public static let error = BrandSwatch.red100
    public static let success = BrandSwatch.green80
    public static let border = BrandSwatch.gray300
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.gray20
    public static let surface = BrandSwatch.gray40
    public static let surfaceElevated = BrandSwatch.gray60
    public static let textPrimary = BrandSwatch.gray700
    public static let textSecondary = BrandSwatch.gray400
    public static let textTertiary = BrandSwatch.gray300
    public static let primary = BrandSwatch.blue200
    public static let primaryHover = BrandSwatch.blue100
    public static let accent = BrandSwatch.red80
    public static let accentHover = BrandSwatch.red100
    public static let warning = BrandSwatch.orange80
    public static let error = BrandSwatch.red100
    public static let success = BrandSwatch.green80
    public static let border = BrandSwatch.gray60
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.gray700
    public static let onIdentity = BrandSwatch.gray20
    public static let primary = BrandSwatch.blue100
    public static let primaryHover = BrandSwatch.blue80
    public static let accent = BrandSwatch.red80
    public static let accentHover = BrandSwatch.red60
    public static let mark = BrandSwatch.gray0
    public static let success = BrandSwatch.green80
    public static let warning = BrandSwatch.orange80
    public static let error = BrandSwatch.red100
    public static let textPrimaryLight = BrandSwatch.gray20
    public static let textPrimaryDark = BrandSwatch.gray700
    public static let backgroundLight = BrandSwatch.gray700
    public static let backgroundDark = BrandSwatch.gray20
    public static let surfaceLight = BrandSwatch.gray600
    public static let surfaceDark = BrandSwatch.gray40
    public static let textSecondaryLight = BrandSwatch.gray60
    public static let textTertiaryLight = BrandSwatch.gray80
    public static let borderLight = BrandSwatch.gray300
}

/// Typography family names by brand role.
public enum BrandFont {
    /// Playfair Display (playfair-display@1.0.0)
    public static let heading = "Playfair Display"
    /// PT Serif (pt-serif@1.0.0)
    public static let body = "PT Serif"
    /// 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"
}
