{
  "id": "propublica",
  "version": "1.0.0",
  "name": "ProPublica",
  "description": "ProPublica is the nonprofit, independent investigative newsroom founded 2007 — winner of nine Pulitzer Prizes for journalism that \"exposes abuses of power and betrayals of the public trust.\" The visual identity is restrained and authority-led: a warm-white canvas (#F2F1ED), warm-black body ink (#111110), a single saturated investigative red (#D92D03) as the call-to-action accent, and a quiet warm-gray scale for meta. The proprietary Feature Headline (display serif) and Tiempos Text (serif body) — paired with Brut Grotesque (sans) — carry the long-form investigative voice.\n",
  "provenance": {
    "source": "https://www.propublica.org/",
    "license": "Proprietary — All Rights Reserved",
    "attribution": "ProPublica, Inc. — visual identity captured from the deployed concatenated WordPress stylesheet at propublica.org/_static/. ProPublica, the Feature Headline / Tiempos Text / Brut Grotesque typefaces are property of ProPublica, Inc. (or their licensors, e.g., Klim Type Foundry for Tiempos).\n",
    "importedDate": "2026-05-19",
    "notes": "Derived from live site CSS at https://www.propublica.org/ on 2026-05-19; no public brand guide located. The propublica-2026 theme exposes --p-color-* and --p-fonts-* custom properties in the concatenated stylesheet. Tiempos Text is licensed from Klim Type Foundry; Feature Headline and Brut Grotesque are the newsroom's proprietary cuts. Open-source substitutes — lora@1 for body prose, playfair-display@1 for the display serif role, inter@1 for sans — are referenced from the brand atom.\n"
  },
  "tags": [
    "propublica",
    "news",
    "journalism",
    "nonprofit",
    "investigative",
    "brand",
    "red",
    "paper",
    "light-first"
  ],
  "palette": {
    "ref": "propublica@1.0.0",
    "swatches": [
      {
        "id": "warm-black",
        "name": "Warm Black",
        "value": "#111110",
        "description": "--p-color-warm-black — primary text and warm ink.",
        "aliases": []
      },
      {
        "id": "black",
        "name": "Black",
        "value": "#000000",
        "description": "--p-color-black — absolute black; mark fills.",
        "aliases": []
      },
      {
        "id": "warm-white",
        "name": "Warm White",
        "value": "#F2F1ED",
        "description": "--p-color-warm-white — the warm cream canvas.",
        "aliases": []
      },
      {
        "id": "white",
        "name": "White",
        "value": "#FFFFFF",
        "description": "--p-color-white — bright canvas alternate.",
        "aliases": []
      },
      {
        "id": "investigative-red",
        "name": "Investigative Red",
        "value": "#D92D03",
        "description": "ProPublica promo red — the CTA and emphasis color.",
        "aliases": []
      },
      {
        "id": "investigative-red-deep",
        "name": "Investigative Red Deep",
        "value": "#A00000",
        "description": "Pressed / active variant of investigative red.",
        "aliases": []
      },
      {
        "id": "theme-blue",
        "name": "Theme Blue",
        "value": "#304154",
        "description": "Deep slate-blue theme accent from the propublica-2026 theme.",
        "aliases": []
      },
      {
        "id": "gray-warm",
        "name": "Gray Warm",
        "value": "#5A5A5A",
        "description": "Warm gray secondary text.",
        "aliases": []
      },
      {
        "id": "gray-medium",
        "name": "Gray Medium",
        "value": "#727272",
        "description": "Medium gray tertiary text and meta.",
        "aliases": []
      },
      {
        "id": "gray-quiet",
        "name": "Gray Quiet",
        "value": "#979797",
        "description": "Quiet gray for disabled / meta.",
        "aliases": []
      },
      {
        "id": "gray-border",
        "name": "Gray Border",
        "value": "#C7C7C7",
        "description": "Heavier border weight.",
        "aliases": []
      },
      {
        "id": "gray-divider",
        "name": "Gray Divider",
        "value": "#DFDFDF",
        "description": "Quiet rule weight.",
        "aliases": []
      },
      {
        "id": "gray-tint",
        "name": "Gray Tint",
        "value": "#EBEBEB",
        "description": "Quiet surface tint.",
        "aliases": []
      }
    ],
    "modes": {
      "light": {
        "roles": {
          "background": "warm-white",
          "surface": "gray-tint",
          "surface-elevated": "white",
          "text-primary": "warm-black",
          "text-secondary": "gray-warm",
          "text-tertiary": "gray-medium",
          "primary": "investigative-red",
          "primary-hover": "investigative-red-deep",
          "accent": "investigative-red",
          "accent-hover": "investigative-red-deep",
          "error": "investigative-red-deep",
          "border": "gray-divider"
        }
      },
      "dark": {
        "roles": {
          "background": "warm-black",
          "surface": "theme-blue",
          "surface-elevated": "gray-warm",
          "text-primary": "warm-white",
          "text-secondary": "gray-divider",
          "text-tertiary": "gray-border",
          "primary": "investigative-red",
          "primary-hover": "investigative-red-deep",
          "accent": "investigative-red",
          "accent-hover": "investigative-red-deep",
          "error": "investigative-red",
          "border": "gray-warm"
        }
      }
    }
  },
  "fonts": [
    {
      "role": "heading",
      "ref": "playfair-display@1.0.0",
      "family": "Playfair Display",
      "classification": "serif",
      "source": {
        "kind": "google-fonts",
        "family": "Playfair Display",
        "url": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap"
      },
      "fallbackStack": [
        "Iowan Old Style",
        "Apple Garamond",
        "Baskerville",
        "Times New Roman",
        "serif"
      ],
      "availableStyles": [
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        },
        {
          "weight": 900,
          "style": "normal"
        },
        {
          "weight": 900,
          "style": "italic"
        }
      ]
    },
    {
      "role": "body",
      "ref": "lora@1.0.0",
      "family": "Lora",
      "classification": "serif",
      "source": {
        "kind": "google-fonts",
        "family": "Lora",
        "url": "https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"
      },
      "fallbackStack": [
        "Iowan Old Style",
        "Apple Garamond",
        "Baskerville",
        "Times New Roman",
        "serif"
      ],
      "availableStyles": [
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        }
      ]
    },
    {
      "role": "sans",
      "ref": "inter@1.0.0",
      "family": "Inter",
      "classification": "sans-serif",
      "source": {
        "kind": "google-fonts",
        "family": "Inter",
        "url": "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"
      },
      "fallbackStack": [
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica Neue",
        "Arial",
        "sans-serif"
      ],
      "availableStyles": [
        {
          "weight": 100,
          "style": "normal"
        },
        {
          "weight": 100,
          "style": "italic"
        },
        {
          "weight": 200,
          "style": "normal"
        },
        {
          "weight": 200,
          "style": "italic"
        },
        {
          "weight": 300,
          "style": "normal"
        },
        {
          "weight": 300,
          "style": "italic"
        },
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        },
        {
          "weight": 900,
          "style": "normal"
        },
        {
          "weight": 900,
          "style": "italic"
        }
      ]
    },
    {
      "role": "mono",
      "ref": "jetbrainsmono-nerdfont@1.0.0",
      "family": "JetBrainsMono Nerd Font",
      "classification": "monospace",
      "source": {
        "kind": "external",
        "family": "JetBrainsMono Nerd Font",
        "notes": "Nerd-Font-patched build of JetBrains Mono. Not available via Google Fonts. Download woff2/ttf files from the Nerd Fonts GitHub release and self-host, or install system-wide for terminal/IDE use.\n"
      },
      "fallbackStack": [
        "JetBrains Mono",
        "Fira Code",
        "Menlo",
        "Monaco",
        "Consolas",
        "Liberation Mono",
        "monospace"
      ],
      "availableStyles": [
        {
          "weight": 100,
          "style": "normal"
        },
        {
          "weight": 100,
          "style": "italic"
        },
        {
          "weight": 200,
          "style": "normal"
        },
        {
          "weight": 200,
          "style": "italic"
        },
        {
          "weight": 300,
          "style": "normal"
        },
        {
          "weight": 300,
          "style": "italic"
        },
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 400,
          "style": "italic"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "italic"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "italic"
        },
        {
          "weight": 700,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "italic"
        },
        {
          "weight": 800,
          "style": "normal"
        },
        {
          "weight": 800,
          "style": "italic"
        }
      ]
    }
  ],
  "roles": {
    "colors": {
      "identity": "warm-white",
      "on-identity": "warm-black",
      "primary": "investigative-red",
      "primary-hover": "investigative-red-deep",
      "accent": "investigative-red",
      "accent-hover": "investigative-red-deep",
      "mark": "warm-black",
      "error": "investigative-red-deep",
      "text-primary-light": "warm-black",
      "text-primary-dark": "warm-white",
      "background-light": "warm-white",
      "background-dark": "warm-black",
      "surface-light": "gray-tint",
      "surface-dark": "theme-blue",
      "text-secondary-light": "gray-warm",
      "text-tertiary-light": "gray-medium",
      "border-light": "gray-divider"
    },
    "typography": {
      "display": "heading",
      "prose": "body",
      "ui": "sans",
      "code": "mono"
    }
  },
  "assets": [],
  "rules": [
    {
      "type": "contrastRatio",
      "target": "text-primary",
      "severity": "error",
      "rationale": "Warm Black (#111110) on warm white (#F2F1ED) gives ~16:1 — past AAA. ProPublica's investigative-feature format involves long article sessions and dense data tables; the enhanced contrast target supports that reading posture and the newsroom's commitment to accessibility.\n",
      "against": "background",
      "minRatio": 7,
      "standard": "WCAG-AAA"
    },
    {
      "type": "colorChoice",
      "target": "roles.colors.accent",
      "severity": "error",
      "rationale": "ProPublica's accent palette is intentionally minimal — a single investigative red carries CTA and emphasis semantics. Substituting the theme-blue or any gray for the accent would conflate the newsroom's deliberate monochrome-with-red voice with chrome colors.\n",
      "allowed": [
        "investigative-red",
        "investigative-red-deep"
      ],
      "forbidden": [
        "theme-blue",
        "gray-warm",
        "black"
      ]
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.primary",
      "severity": "error",
      "rationale": "The investigative red is reserved for high-emphasis surfaces — the \"Donate\" / \"Support\" CTAs, feature callouts, and editorial bridges. Using it as the in-copy link color would dilute the high-signal weight the newsroom assigns to this color in --promo-banner tokens.\n",
      "allowedContexts": [
        "cta",
        "donate",
        "editorial-emphasis",
        "feature-callout",
        "support-button"
      ],
      "forbiddenContexts": [
        "default-link",
        "body-text"
      ]
    },
    {
      "type": "fontPairing",
      "target": "typography.display",
      "severity": "error",
      "rationale": "ProPublica pairs Feature Headline (a tall display serif) with Tiempos Text for body prose at a clear size step. The display-to-prose hierarchy is part of the investigative-feature page identity; a 1.5× minimum ratio preserves it when open-source substitutes (Playfair Display, Lora) stand in.\n",
      "requires": "prose",
      "minSizeRatio": 1.5
    },
    {
      "type": "forbiddenTreatment",
      "target": "logo",
      "severity": "error",
      "rationale": "The ProPublica wordmark is a restrained, type-led mark consistent with the newsroom's investigative-authority voice. Recoloring, stretching, rotating, or applying gradients conflicts with the brand's editorial discipline.\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. ProPublica's mission of producing journalism \"in the public interest\" includes universal access; the AAA target is the natural expression of that mission in the design tokens.\n",
      "standard": "WCAG-AAA",
      "criterion": "1.4.6"
    },
    {
      "type": "enumMembership",
      "target": "typography.body.fontStyle",
      "severity": "warning",
      "rationale": "Tiempos Text ships true italics as a separate face — the Klim Type Foundry license includes the italic cut. Synthetic oblique skews are forbidden, both for the proprietary face and for the Lora substitute.\n",
      "allowed": [
        "normal",
        "italic"
      ],
      "forbidden": [
        "oblique"
      ]
    },
    {
      "type": "compositionConstraint",
      "target": "roles.colors.accent",
      "severity": "recommendation",
      "rationale": "Investigative red reads cleanest on the warm-white canvas or against warm-black ink. Placing it adjacent to the theme-blue or gray-warm surfaces collapses the monochrome-with-red hierarchy that defines the brand's visual restraint.\n",
      "pairsWith": [
        "warm-white",
        "white",
        "warm-black"
      ],
      "doesNotPairWith": [
        "theme-blue",
        "gray-warm"
      ]
    }
  ]
}
