{
  "$description": "Brand: The Washington Post (wapo@1.0.0)",
  "color": {
    "swatches": {
      "$description": "Source-of-truth color swatches from palette wapo@1.0.0",
      "gray-0": {
        "$value": "#000000",
        "$type": "color",
        "$description": "WPDS gray0 — absolute black; mark fills."
      },
      "gray-20": {
        "$value": "#111111",
        "$type": "color",
        "$description": "WPDS gray20 — primary text; the WaPo ink."
      },
      "gray-40": {
        "$value": "#2A2A2A",
        "$type": "color",
        "$description": "WPDS gray40 — heading deck and body emphasis."
      },
      "gray-60": {
        "$value": "#494949",
        "$type": "color",
        "$description": "WPDS gray60 — secondary text."
      },
      "gray-80": {
        "$value": "#666666",
        "$type": "color",
        "$description": "WPDS gray80 — accessible quiet text on white."
      },
      "gray-100": {
        "$value": "#737373",
        "$type": "color",
        "$description": "WPDS gray100 — meta text; tertiary surfaces."
      },
      "gray-200": {
        "$value": "#AAAAAA",
        "$type": "color",
        "$description": "WPDS gray200 — divider weight."
      },
      "gray-300": {
        "$value": "#D4D4D4",
        "$type": "color",
        "$description": "WPDS gray300 — border on light."
      },
      "gray-400": {
        "$value": "#E9E9E9",
        "$type": "color",
        "$description": "WPDS gray400 — quiet surface tint."
      },
      "gray-500": {
        "$value": "#F0F0F0",
        "$type": "color",
        "$description": "WPDS gray500 — alternating row tint."
      },
      "gray-600": {
        "$value": "#F7F7F7",
        "$type": "color",
        "$description": "WPDS gray600 — subtle inset surface."
      },
      "gray-700": {
        "$value": "#FFFFFF",
        "$type": "color",
        "$description": "WPDS gray700 — white canvas."
      },
      "blue-40": {
        "$value": "#0A3258",
        "$type": "color",
        "$description": "WPDS blue40 — deepest navy ink-blue."
      },
      "blue-60": {
        "$value": "#0F4B84",
        "$type": "color",
        "$description": "WPDS blue60 — heading-blue and trusted-source link."
      },
      "blue-80": {
        "$value": "#1366B3",
        "$type": "color",
        "$description": "WPDS blue80 — quiet primary on dark surfaces."
      },
      "blue-100": {
        "$value": "#166DFC",
        "$type": "color",
        "$description": "WPDS blue100 — primary CTA blue."
      },
      "blue-200": {
        "$value": "#5784C5",
        "$type": "color",
        "$description": "WPDS blue200 — calmer link on lighter contexts."
      },
      "red-60": {
        "$value": "#8E1F1B",
        "$type": "color",
        "$description": "WPDS red60 — deep newsroom red."
      },
      "red-80": {
        "$value": "#BE2C25",
        "$type": "color",
        "$description": "WPDS red80 — emphasis and breaking-news pulse."
      },
      "red-100": {
        "$value": "#EA0017",
        "$type": "color",
        "$description": "WPDS red100 — masthead-bright breaking red."
      },
      "orange-80": {
        "$value": "#D86100",
        "$type": "color",
        "$description": "WPDS orange80 — warning emphasis."
      },
      "green-80": {
        "$value": "#499327",
        "$type": "color",
        "$description": "WPDS green80 — confirmation / positive change."
      },
      "gold-60": {
        "$value": "#9E6105",
        "$type": "color",
        "$description": "WPDS gold60 — opinion/analysis category accent."
      }
    }
  },
  "font": {
    "$description": "Typography roles mapped to font atoms",
    "heading": {
      "family": {
        "$value": [
          "Playfair Display",
          "Iowan Old Style",
          "Apple Garamond",
          "Baskerville",
          "Times New Roman",
          "serif"
        ],
        "$type": "fontFamily",
        "$description": "heading role → Playfair Display (playfair-display@1.0.0)"
      },
      "weight": {
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "900": {
          "$value": 900,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    },
    "body": {
      "family": {
        "$value": [
          "PT Serif",
          "Charter",
          "Georgia",
          "Times New Roman",
          "serif"
        ],
        "$type": "fontFamily",
        "$description": "body role → PT Serif (pt-serif@1.0.0)"
      },
      "weight": {
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    },
    "sans": {
      "family": {
        "$value": [
          "Inter",
          "-apple-system",
          "BlinkMacSystemFont",
          "Segoe UI",
          "Roboto",
          "Helvetica Neue",
          "Arial",
          "sans-serif"
        ],
        "$type": "fontFamily",
        "$description": "sans role → Inter (inter@1.0.0)"
      },
      "weight": {
        "100": {
          "$value": 100,
          "$type": "fontWeight"
        },
        "200": {
          "$value": 200,
          "$type": "fontWeight"
        },
        "300": {
          "$value": 300,
          "$type": "fontWeight"
        },
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "900": {
          "$value": 900,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    },
    "mono": {
      "family": {
        "$value": [
          "JetBrainsMono Nerd Font",
          "JetBrains Mono",
          "Fira Code",
          "Menlo",
          "Monaco",
          "Consolas",
          "Liberation Mono",
          "monospace"
        ],
        "$type": "fontFamily",
        "$description": "mono role → JetBrainsMono Nerd Font (jetbrainsmono-nerdfont@1.0.0)"
      },
      "weight": {
        "100": {
          "$value": 100,
          "$type": "fontWeight"
        },
        "200": {
          "$value": 200,
          "$type": "fontWeight"
        },
        "300": {
          "$value": 300,
          "$type": "fontWeight"
        },
        "400": {
          "$value": 400,
          "$type": "fontWeight"
        },
        "500": {
          "$value": 500,
          "$type": "fontWeight"
        },
        "600": {
          "$value": 600,
          "$type": "fontWeight"
        },
        "700": {
          "$value": 700,
          "$type": "fontWeight"
        },
        "800": {
          "$value": 800,
          "$type": "fontWeight"
        },
        "$description": "Available font weights"
      }
    }
  },
  "$extensions": {
    "com.brand-atoms.rules": [
      {
        "type": "contrastRatio",
        "target": "text-primary",
        "severity": "error",
        "rationale": "Gray 20 (#111111) on white gives ~19:1 — well past AAA. WPDS treats the gray-20-on-gray-700 pair as the canonical text/background combination for body prose; the accountability-journalism voice and long article sessions justify the AAA enhanced contrast target.\n",
        "against": "background",
        "minRatio": 7,
        "standard": "WCAG-AAA"
      },
      {
        "type": "colorChoice",
        "target": "roles.colors.primary",
        "severity": "error",
        "rationale": "WPDS scopes blue as the primary CTA and trusted-link family. Substituting red (the breaking-news emphasis color) for the primary role would collapse two distinct semantic meanings in the design system — links and emergencies.\n",
        "allowed": [
          "blue-100",
          "blue-80",
          "blue-60"
        ],
        "forbidden": [
          "red-100",
          "red-80",
          "orange-80"
        ]
      },
      {
        "type": "contextRestriction",
        "target": "roles.colors.accent",
        "severity": "error",
        "rationale": "The WaPo red (red-80 / red-100) carries breaking-news and editorial-category meaning in WPDS. Using it as a default CTA color would dilute the semantic weight and conflict with WPDS role mappings (cta = blue100).\n",
        "allowedContexts": [
          "breaking-news",
          "editorial-emphasis",
          "opinion-tag",
          "live-update"
        ],
        "forbiddenContexts": [
          "default-link",
          "body-emphasis",
          "default-cta"
        ]
      },
      {
        "type": "fontPairing",
        "target": "typography.display",
        "severity": "error",
        "rationale": "WaPo pairs Postoni Wide (a tall display serif) with Franklin for sans headings and Franklin / serif for body. The display-to-prose hierarchy is a defining element of the article-page identity; a 1.5× minimum size ratio preserves it when open-source substitutes stand in.\n",
        "requires": "prose",
        "minSizeRatio": 1.5
      },
      {
        "type": "forbiddenTreatment",
        "target": "logo",
        "severity": "error",
        "rationale": "The Old English wordmark is the institutional mark of the paper. Recoloring, rotation, gradients, or skewing conflict with the brand's voice of authority and the published WPDS asset guidance.\n",
        "treatments": [
          "stretched",
          "rotated",
          "recolored",
          "drop-shadow",
          "gradient-fill",
          "on-busy-photo"
        ]
      },
      {
        "type": "accessibilityRequirement",
        "target": "*",
        "severity": "warning",
        "rationale": "WCAG 2.1 Success Criterion 1.4.6 (Contrast Enhanced) — Level AAA. WaPo's accountability-journalism mission and its long-form article format justify the enhanced 7:1 target.\n",
        "standard": "WCAG-AAA",
        "criterion": "1.4.6"
      },
      {
        "type": "enumMembership",
        "target": "typography.heading.fontWeight",
        "severity": "warning",
        "rationale": "Postoni Wide ships in Regular through Black. Heading weights below Regular and synthetic Heavy beyond the Black cut would degrade the masthead-character of WaPo display type.\n",
        "allowed": [
          "400",
          "500",
          "600",
          "700",
          "900"
        ]
      },
      {
        "type": "compositionConstraint",
        "target": "roles.colors.primary",
        "severity": "recommendation",
        "rationale": "Blue 100 on the white canvas or against ink reads cleanly as a link or CTA. Placing it adjacent to the breaking-news red collapses the editorial-color hierarchy that WPDS establishes between informational blue and urgency red.\n",
        "pairsWith": [
          "gray-700",
          "gray-20",
          "gray-600"
        ],
        "doesNotPairWith": [
          "red-80",
          "red-100"
        ]
      }
    ],
    "com.brand-atoms.assets": [],
    "com.brand-atoms.provenance": {
      "source": "https://github.com/washingtonpost/tachyons-css/blob/main/src/wpds-colors-tokens.css",
      "license": "Proprietary brand identity; design-token source under repository license",
      "attribution": "The Washington Post (WP Company LLC) — visual identity captured from the published Washington Post Design System (WPDS) color tokens at github.com/washingtonpost/tachyons-css. The Washington Post, the masthead, and the Postoni / Franklin typefaces are property of WP Company LLC.\n",
      "importedDate": "2026-05-19",
      "notes": "Derived from the WPDS published color tokens on 2026-05-19; no consumer-facing brand guide located. The proprietary typefaces (Postoni Wide for display, Franklin / Franklin ITC variants for sans/text) are referenced in the design system but are not publicly distributed. Open-source substitutes are referenced — playfair-display@1 for the display serif, pt-serif@1 for body prose, and inter@1 for the sans role.\n"
    },
    "com.brand-atoms.references": {
      "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"
      }
    }
  }
}
