//
// The New York Times (nyt@1.0.0)
// Palette: nyt@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 {
    /// Ink Black — Primary body text; the deep ink of a newspaper print page.
    public static let inkBlack = Color(.sRGB, red: 0.0706, green: 0.0706, blue: 0.0706, opacity: 1.0000)
    /// Ink Medium — Secondary text; deck and byline weight.
    public static let inkMedium = Color(.sRGB, red: 0.2118, green: 0.2118, blue: 0.2118, opacity: 1.0000)
    /// Ink Light — Tertiary text; meta, timestamps, kicker labels.
    public static let inkLight = Color(.sRGB, red: 0.3529, green: 0.3529, blue: 0.3529, opacity: 1.0000)
    /// Gray Light — Quiet meta text; disabled captions.
    public static let grayLight = Color(.sRGB, red: 0.4471, green: 0.4471, blue: 0.4471, opacity: 1.0000)
    /// Gray Rule — Hairline rule between stories; column dividers.
    public static let grayRule = Color(.sRGB, red: 0.5922, green: 0.5922, blue: 0.5922, opacity: 1.0000)
    /// Gray Border — Heavier border; card outlines.
    public static let grayBorder = Color(.sRGB, red: 0.7804, green: 0.7804, blue: 0.7804, opacity: 1.0000)
    /// Gray Divider — Section divider; quiet block boundary.
    public static let grayDivider = Color(.sRGB, red: 0.8745, green: 0.8745, blue: 0.8745, opacity: 1.0000)
    /// Gray Tint — Pull-quote background; chip surface.
    public static let grayTint = Color(.sRGB, red: 0.9216, green: 0.9216, blue: 0.9216, opacity: 1.0000)
    /// Gray Surface — Alternating row tint; subtle inset surface.
    public static let graySurface = Color(.sRGB, red: 0.9686, green: 0.9686, blue: 0.9686, opacity: 1.0000)
    /// Paper — Newsprint-like off-white; quiet section canvas.
    public static let paper = Color(.sRGB, red: 0.9725, green: 0.9725, blue: 0.9725, opacity: 1.0000)
    /// White — Primary page canvas; the bright digital sheet.
    public static let white = Color(.sRGB, red: 1.0000, green: 1.0000, blue: 1.0000, opacity: 1.0000)
    /// Reading Blue — In-copy link color; the desaturated NYT blue.
    public static let readingBlue = Color(.sRGB, red: 0.2039, green: 0.4314, blue: 0.7176, opacity: 1.0000)
    /// Reading Blue Hover — Brighter blue for link hover and interactive emphasis.
    public static let readingBlueHover = Color(.sRGB, red: 0.1686, green: 0.5412, blue: 0.8471, opacity: 1.0000)
    /// Masthead Red — Breaking-news red; masthead-bridge accent.
    public static let mastheadRed = Color(.sRGB, red: 0.8157, green: 0.0078, blue: 0.1059, opacity: 1.0000)
    /// Masthead Red Bright — Brighter red used in live-update pulses and tags.
    public static let mastheadRedBright = Color(.sRGB, red: 0.9569, green: 0.3373, blue: 0.2902, opacity: 1.0000)
}

/// Semantic color roles for light mode.
public enum BrandLight {
    public static let background = BrandSwatch.white
    public static let surface = BrandSwatch.paper
    public static let surfaceElevated = BrandSwatch.white
    public static let textPrimary = BrandSwatch.inkBlack
    public static let textSecondary = BrandSwatch.inkMedium
    public static let textTertiary = BrandSwatch.inkLight
    public static let primary = BrandSwatch.readingBlue
    public static let primaryHover = BrandSwatch.readingBlueHover
    public static let accent = BrandSwatch.mastheadRed
    public static let accentHover = BrandSwatch.mastheadRedBright
    public static let error = BrandSwatch.mastheadRed
    public static let border = BrandSwatch.grayDivider
}

/// Semantic color roles for dark mode.
public enum BrandDark {
    public static let background = BrandSwatch.inkBlack
    public static let surface = BrandSwatch.inkMedium
    public static let surfaceElevated = BrandSwatch.inkLight
    public static let textPrimary = BrandSwatch.white
    public static let textSecondary = BrandSwatch.grayDivider
    public static let textTertiary = BrandSwatch.grayBorder
    public static let primary = BrandSwatch.readingBlueHover
    public static let primaryHover = BrandSwatch.readingBlue
    public static let accent = BrandSwatch.mastheadRedBright
    public static let accentHover = BrandSwatch.mastheadRed
    public static let error = BrandSwatch.mastheadRedBright
    public static let border = BrandSwatch.inkLight
}

/// Brand-level color role overrides.
public enum BrandColor {
    public static let identity = BrandSwatch.white
    public static let onIdentity = BrandSwatch.inkBlack
    public static let primary = BrandSwatch.readingBlue
    public static let primaryHover = BrandSwatch.readingBlueHover
    public static let accent = BrandSwatch.mastheadRed
    public static let accentHover = BrandSwatch.mastheadRedBright
    public static let mark = BrandSwatch.inkBlack
    public static let error = BrandSwatch.mastheadRed
    public static let textPrimaryLight = BrandSwatch.inkBlack
    public static let textPrimaryDark = BrandSwatch.white
    public static let backgroundLight = BrandSwatch.white
    public static let backgroundDark = BrandSwatch.inkBlack
    public static let surfaceLight = BrandSwatch.paper
    public static let surfaceDark = BrandSwatch.inkMedium
    public static let textSecondaryLight = BrandSwatch.inkMedium
    public static let textTertiaryLight = BrandSwatch.inkLight
    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"
    /// 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"
}
