{
  "id": "bloomberg",
  "version": "1.0.0",
  "name": "Bloomberg",
  "description": "Bloomberg is the financial-media and data-services powerhouse — the Bloomberg Terminal anchors the franchise, with Bloomberg News, Bloomberg Opinion, Businessweek, and Bloomberg Government extending the brand across consumer and B2B surfaces. The visual identity is engineered for data legibility: precise grays, terminal-black, and the unmistakable Bloomberg yellow (#FFCD1E) reserved for the ticker accent and editorial emphasis. Bloomberg Opinion uses a distinct deep blue link color (#0064FA). Type pairs Mecano (display) with Avenir Next (sans) and Publico Head / Publico Text (serif).\n",
  "provenance": {
    "source": "https://www.bloomberg.com/",
    "license": "Proprietary — All Rights Reserved",
    "attribution": "Bloomberg L.P. — visual identity captured from the deployed Phoenix design-system tokens (--phx-color-*) on assets.bwbx.io, the Next.js asset CDN that serves bloomberg.com. Bloomberg, the Bloomberg Terminal, Mecano, Avenir Next, and Publico Head / Publico Text are property of Bloomberg L.P.\n",
    "importedDate": "2026-05-19",
    "notes": "Derived from live site CSS at https://www.bloomberg.com/ on 2026-05-19; no public brand guide located. The proprietary Bloomberg Mecano (display serif/sans), Avenir Next (sans), and Publico Head / Publico Text (serif) typefaces are declared in the live stylesheet but are not publicly distributed. Open-source substitutes — source-serif-4@1 for the serif role and inter@1 for the sans role — are referenced from this brand atom.\n"
  },
  "tags": [
    "bloomberg",
    "news",
    "finance",
    "journalism",
    "brand",
    "yellow",
    "terminal",
    "business",
    "light-first"
  ],
  "palette": {
    "ref": "bloomberg@1.0.0",
    "swatches": [
      {
        "id": "black",
        "name": "Black",
        "value": "#000000",
        "description": "phx-color-core-black — terminal-black canvas in dark mode.",
        "aliases": []
      },
      {
        "id": "gray-1000",
        "name": "Gray 1000",
        "value": "#1C1C1C",
        "description": "phx-color-core-gray-1000 — deepest gray ink.",
        "aliases": []
      },
      {
        "id": "gray-900",
        "name": "Gray 900",
        "value": "#262626",
        "description": "phx-color-core-gray-900 — primary body text on light.",
        "aliases": []
      },
      {
        "id": "gray-800",
        "name": "Gray 800",
        "value": "#3C3C3C",
        "description": "phx-color-core-gray-800 — secondary heading text.",
        "aliases": []
      },
      {
        "id": "gray-700",
        "name": "Gray 700",
        "value": "#545454",
        "description": "phx-color-core-gray-700 — secondary body text.",
        "aliases": []
      },
      {
        "id": "gray-600",
        "name": "Gray 600",
        "value": "#767676",
        "description": "phx-color-core-gray-600 — tertiary meta text.",
        "aliases": []
      },
      {
        "id": "gray-500",
        "name": "Gray 500",
        "value": "#999999",
        "description": "phx-color-core-gray-500 — disabled text on light.",
        "aliases": []
      },
      {
        "id": "gray-400",
        "name": "Gray 400",
        "value": "#B3B3B3",
        "description": "phx-color-core-gray-400 — border weight.",
        "aliases": []
      },
      {
        "id": "gray-300",
        "name": "Gray 300",
        "value": "#CCCCCC",
        "description": "phx-color-core-gray-300 — quiet divider.",
        "aliases": []
      },
      {
        "id": "gray-200",
        "name": "Gray 200",
        "value": "#EFEFEF",
        "description": "phx-color-core-gray-200 — quiet inset surface.",
        "aliases": []
      },
      {
        "id": "gray-100",
        "name": "Gray 100",
        "value": "#F8F8F8",
        "description": "phx-color-core-gray-100 — lightest surface tint.",
        "aliases": []
      },
      {
        "id": "white",
        "name": "White",
        "value": "#FFFFFF",
        "description": "phx-color-core-white — page canvas.",
        "aliases": []
      },
      {
        "id": "yellow-400",
        "name": "Bloomberg Yellow 400",
        "value": "#FFCD1E",
        "description": "phx-color-core-yellow-400 — signature Bloomberg yellow; ticker accent.",
        "aliases": []
      },
      {
        "id": "yellow-300",
        "name": "Yellow 300",
        "value": "#FFDA5D",
        "description": "phx-color-core-yellow-300 — lighter yellow accent.",
        "aliases": []
      },
      {
        "id": "yellow-500",
        "name": "Yellow 500",
        "value": "#E6B120",
        "description": "phx-color-core-yellow-500 — pressed yellow.",
        "aliases": []
      },
      {
        "id": "yellow-600",
        "name": "Yellow 600",
        "value": "#C48600",
        "description": "phx-color-core-yellow-600 — deepest emphasis yellow.",
        "aliases": []
      },
      {
        "id": "red-500",
        "name": "Red 500",
        "value": "#E51503",
        "description": "phx-color-core-red-500 — alert / breaking-news red.",
        "aliases": []
      },
      {
        "id": "red-400",
        "name": "Red 400",
        "value": "#F05143",
        "description": "phx-color-core-red-400 — quiet alert state.",
        "aliases": []
      },
      {
        "id": "red-600",
        "name": "Red 600",
        "value": "#B20E01",
        "description": "phx-color-core-red-600 — pressed alert.",
        "aliases": []
      },
      {
        "id": "green-500",
        "name": "Green 500",
        "value": "#338736",
        "description": "phx-color-core-green-500 — market-up signal.",
        "aliases": []
      },
      {
        "id": "green-400",
        "name": "Green 400",
        "value": "#4DB250",
        "description": "phx-color-core-green-400 — quiet positive.",
        "aliases": []
      },
      {
        "id": "green-600",
        "name": "Green 600",
        "value": "#146917",
        "description": "phx-color-core-green-600 — pressed positive.",
        "aliases": []
      },
      {
        "id": "opinion-500",
        "name": "Opinion Blue 500",
        "value": "#0064FA",
        "description": "phx-color-secondary-opinion-500 — Bloomberg Opinion link blue.",
        "aliases": []
      },
      {
        "id": "opinion-600",
        "name": "Opinion Blue 600",
        "value": "#004EC4",
        "description": "phx-color-secondary-opinion-600 — pressed Opinion link.",
        "aliases": []
      },
      {
        "id": "opinion-200",
        "name": "Opinion Blue 200",
        "value": "#D4E5FF",
        "description": "phx-color-secondary-opinion-200 — quiet Opinion surface tint.",
        "aliases": []
      },
      {
        "id": "subscription-500",
        "name": "Subscription Violet 500",
        "value": "#4F4FFF",
        "description": "phx-color-secondary-subscription-500 — Bloomberg subscription-product accent.",
        "aliases": []
      },
      {
        "id": "subscription-700",
        "name": "Subscription Violet 700",
        "value": "#2800D7",
        "description": "phx-color-secondary-subscription-700 — deep subscription accent.",
        "aliases": []
      }
    ],
    "modes": {
      "light": {
        "roles": {
          "background": "white",
          "surface": "gray-100",
          "surface-elevated": "white",
          "text-primary": "gray-1000",
          "text-secondary": "gray-700",
          "text-tertiary": "gray-600",
          "primary": "opinion-500",
          "primary-hover": "opinion-600",
          "accent": "yellow-400",
          "accent-hover": "yellow-500",
          "warning": "yellow-600",
          "error": "red-500",
          "success": "green-500",
          "border": "gray-300"
        }
      },
      "dark": {
        "roles": {
          "background": "black",
          "surface": "gray-1000",
          "surface-elevated": "gray-900",
          "text-primary": "white",
          "text-secondary": "gray-200",
          "text-tertiary": "gray-400",
          "primary": "opinion-500",
          "primary-hover": "opinion-200",
          "accent": "yellow-400",
          "accent-hover": "yellow-300",
          "warning": "yellow-300",
          "error": "red-400",
          "success": "green-400",
          "border": "gray-700"
        }
      }
    }
  },
  "fonts": [
    {
      "role": "heading",
      "ref": "source-serif-4@1.0.0",
      "family": "Source Serif 4",
      "classification": "serif",
      "source": {
        "kind": "google-fonts",
        "family": "Source Serif 4",
        "url": "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&display=swap"
      },
      "fallbackStack": [
        "Iowan Old Style",
        "Apple Garamond",
        "Baskerville",
        "Times New Roman",
        "serif"
      ],
      "availableStyles": [
        {
          "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": "body",
      "ref": "source-serif-4@1.0.0",
      "family": "Source Serif 4",
      "classification": "serif",
      "source": {
        "kind": "google-fonts",
        "family": "Source Serif 4",
        "url": "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&display=swap"
      },
      "fallbackStack": [
        "Iowan Old Style",
        "Apple Garamond",
        "Baskerville",
        "Times New Roman",
        "serif"
      ],
      "availableStyles": [
        {
          "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": "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": "black",
      "on-identity": "yellow-400",
      "primary": "opinion-500",
      "primary-hover": "opinion-600",
      "accent": "yellow-400",
      "accent-hover": "yellow-500",
      "mark": "yellow-400",
      "success": "green-500",
      "warning": "yellow-600",
      "error": "red-500",
      "text-primary-light": "gray-1000",
      "text-primary-dark": "white",
      "background-light": "white",
      "background-dark": "black",
      "surface-light": "gray-100",
      "surface-dark": "gray-1000",
      "text-secondary-light": "gray-700",
      "text-tertiary-light": "gray-600",
      "border-light": "gray-300"
    },
    "typography": {
      "display": "heading",
      "prose": "body",
      "ui": "sans",
      "code": "mono"
    }
  },
  "assets": [],
  "rules": [
    {
      "type": "contrastRatio",
      "target": "text-primary",
      "severity": "error",
      "rationale": "Gray 1000 (#1C1C1C) on white gives ~16:1 — past AAA. Bloomberg's editorial surfaces sit alongside dense data tables and chart legends. The AAA contrast target supports both the long-form journalism and the data-density that define the brand.\n",
      "against": "background",
      "minRatio": 7,
      "standard": "WCAG-AAA"
    },
    {
      "type": "colorChoice",
      "target": "roles.colors.accent",
      "severity": "error",
      "rationale": "Bloomberg yellow is the singular brand identity color across the Terminal and consumer surfaces. The opinion blue is reserved for Bloomberg Opinion link affordances, and the subscription violet for subscription product accents — neither stands in for the accent role without breaking the brand's editorial taxonomy.\n",
      "allowed": [
        "yellow-400",
        "yellow-500",
        "yellow-300"
      ],
      "forbidden": [
        "opinion-500",
        "subscription-500",
        "red-500"
      ]
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.primary",
      "severity": "error",
      "rationale": "Opinion blue (#0064FA) is published in Phoenix tokens as a secondary-opinion color — it carries link semantics for Bloomberg Opinion content. Using it for terminal chrome or subscription marketing would conflict with the Phoenix-defined product hierarchy.\n",
      "allowedContexts": [
        "opinion",
        "default-link",
        "editorial-cta"
      ],
      "forbiddenContexts": [
        "terminal-chrome",
        "ticker-accent",
        "subscription-marketing"
      ]
    },
    {
      "type": "fontPairing",
      "target": "typography.display",
      "severity": "error",
      "rationale": "Bloomberg's editorial pages pair Mecano display headlines with Publico Text body. The display-to-prose hierarchy is part of the editorial voice; a 1.5× minimum ratio preserves it when open-source substitutes (Source Serif 4) stand in for the proprietary primaries.\n",
      "requires": "prose",
      "minSizeRatio": 1.5
    },
    {
      "type": "forbiddenTreatment",
      "target": "logo",
      "severity": "error",
      "rationale": "The Bloomberg wordmark and the Terminal logotype are tightly governed brand assets. Recoloring (especially away from black or yellow), stretching, or applying gradients conflicts with the brand's data-precision voice.\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. Bloomberg readers spend long sessions on data tables, chart legends, and dense prose; the enhanced contrast target supports that reading posture.\n",
      "standard": "WCAG-AAA",
      "criterion": "1.4.6"
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.success",
      "severity": "error",
      "rationale": "In Bloomberg market data, green signals positive movement. Reusing it for failure states would conflict with the established market-color semantics that underpin every financial chart on the Terminal.\n",
      "allowedContexts": [
        "market-up",
        "data-viz-positive",
        "confirmation"
      ],
      "forbiddenContexts": [
        "error-state",
        "destructive-action"
      ]
    },
    {
      "type": "enumMembership",
      "target": "typography.heading.fontWeight",
      "severity": "warning",
      "rationale": "Mecano and Avenir Next on Bloomberg pages cover Regular through Extra-Bold. Heavier weights beyond the licensed cut are not represented in the live stylesheet; the Source Serif 4 / Inter substitutes should mirror the same range.\n",
      "allowed": [
        "400",
        "500",
        "600",
        "700",
        "800"
      ]
    },
    {
      "type": "compositionConstraint",
      "target": "roles.colors.accent",
      "severity": "recommendation",
      "rationale": "Bloomberg yellow reads cleanest against the terminal black or the white canvas. Placing it adjacent to the opinion blue or subscription violet introduces a chromatic collision between identity-yellow and product-accent colors that Phoenix treats as a hierarchy violation.\n",
      "pairsWith": [
        "black",
        "gray-1000",
        "white",
        "gray-100"
      ],
      "doesNotPairWith": [
        "opinion-500",
        "subscription-500",
        "red-500"
      ]
    }
  ]
}
