{
  "id": "bbc",
  "version": "1.0.0",
  "name": "BBC",
  "description": "The BBC is the world's largest public-service broadcaster — a global, multi-service identity governed by GEL (Global Experience Language), the BBC's design system across web, broadcast, and app surfaces. The visual identity is built on the BBC blocks logo, the \"Postbox\" signature red, near-black ink on bright white, and the proprietary Reith Sans / Reith Serif typefaces that carry the editorial voice. Accessibility is a stated first-class requirement of GEL.\n",
  "provenance": {
    "source": "https://www.bbc.co.uk/gel",
    "license": "Proprietary — BBC brand and Reith type are property of the BBC",
    "attribution": "The British Broadcasting Corporation (BBC) — visual identity informed by BBC GEL (Global Experience Language) at bbc.co.uk/gel and palette values captured from the published Simorgh open-source source code at github.com/bbc/simorgh. The BBC, BBC blocks logo, Reith Sans, and Reith Serif are property of the BBC.\n",
    "importedDate": "2026-05-19",
    "notes": "The BBC GEL site at bbc.co.uk/gel documents the design system publicly but the page was not reachable from this fetch context. Palette values were captured from the BBC's own open-source Simorgh implementation. The proprietary Reith type family (Reith Sans, Reith Serif) is not publicly distributed — open-source substitute (Inter@1) is referenced here. BBC GEL is well-documented in public design literature.\n"
  },
  "tags": [
    "bbc",
    "news",
    "broadcasting",
    "brand",
    "red",
    "gel",
    "sans",
    "public-service",
    "light-first"
  ],
  "palette": {
    "ref": "bbc@1.0.0",
    "swatches": [
      {
        "id": "postbox",
        "name": "Postbox",
        "value": "#B80000",
        "description": "BBC signature red — the brand's primary identity color.",
        "aliases": []
      },
      {
        "id": "postbox-30",
        "name": "Postbox 30",
        "value": "#EAB3B3",
        "description": "Light tint of postbox — quiet emphasis backgrounds.",
        "aliases": []
      },
      {
        "id": "black",
        "name": "Black",
        "value": "#000000",
        "description": "BBC blocks logo black; the primary text on white.",
        "aliases": []
      },
      {
        "id": "ebon",
        "name": "Ebon",
        "value": "#222222",
        "description": "Body text on light surfaces.",
        "aliases": []
      },
      {
        "id": "midnight-black",
        "name": "Midnight Black",
        "value": "#121212",
        "description": "Dark-mode canvas; the deep BBC night surface.",
        "aliases": []
      },
      {
        "id": "white",
        "name": "White",
        "value": "#FFFFFF",
        "description": "Page canvas — bright BBC background.",
        "aliases": []
      },
      {
        "id": "ghost",
        "name": "Ghost",
        "value": "#FDFDFD",
        "description": "Faintly warm off-white — large-area canvas alternative.",
        "aliases": []
      },
      {
        "id": "chalk",
        "name": "Chalk",
        "value": "#ECEAE7",
        "description": "Warm neutral background — the BBC paper tone.",
        "aliases": []
      },
      {
        "id": "oat-light",
        "name": "Oat Light",
        "value": "#F5F3F1",
        "description": "Lighter warm-paper tone for elevated surfaces.",
        "aliases": []
      },
      {
        "id": "lunar",
        "name": "Lunar",
        "value": "#F2F2F2",
        "description": "Cool quiet surface; alternate page tint.",
        "aliases": []
      },
      {
        "id": "lunar-light",
        "name": "Lunar Light",
        "value": "#F8F8F8",
        "description": "Lightest cool surface — quiet inset.",
        "aliases": []
      },
      {
        "id": "grey-3",
        "name": "Grey 3",
        "value": "#E6E8EA",
        "description": "Hairline divider; quiet card border.",
        "aliases": []
      },
      {
        "id": "grey-4",
        "name": "Grey 4",
        "value": "#B0B2B4",
        "description": "Disabled / decorative border weight.",
        "aliases": []
      },
      {
        "id": "grey-5",
        "name": "Grey 5",
        "value": "#8A8C8E",
        "description": "Quiet meta text on light surface.",
        "aliases": []
      },
      {
        "id": "grey-6",
        "name": "Grey 6",
        "value": "#545658",
        "description": "Secondary body text.",
        "aliases": []
      },
      {
        "id": "grey-7",
        "name": "Grey 7",
        "value": "#3A3C3E",
        "description": "Dark surface; secondary text on dark.",
        "aliases": []
      },
      {
        "id": "service-neutral",
        "name": "Service Neutral",
        "value": "#0071F1",
        "description": "Service-neutral link blue.",
        "aliases": []
      },
      {
        "id": "service-neutral-dark",
        "name": "Service Neutral Dark",
        "value": "#0051AD",
        "description": "Pressed / active variant of service-neutral.",
        "aliases": []
      },
      {
        "id": "live-core",
        "name": "Live Core",
        "value": "#009E9E",
        "description": "BBC LIVE teal — live-coverage status color.",
        "aliases": []
      },
      {
        "id": "live-light",
        "name": "Live Light",
        "value": "#00CCC7",
        "description": "Brighter LIVE teal for dark surfaces.",
        "aliases": []
      },
      {
        "id": "sport-yellow",
        "name": "Sport Yellow",
        "value": "#FFD230",
        "description": "BBC Sport accent yellow.",
        "aliases": []
      },
      {
        "id": "error-core",
        "name": "Error Core",
        "value": "#E51854",
        "description": "Error / failure state color (Simorgh standard).",
        "aliases": []
      },
      {
        "id": "success-core",
        "name": "Success Core",
        "value": "#148A00",
        "description": "Confirmation / success state.",
        "aliases": []
      }
    ],
    "modes": {
      "light": {
        "roles": {
          "background": "white",
          "surface": "chalk",
          "surface-elevated": "white",
          "text-primary": "ebon",
          "text-secondary": "grey-6",
          "text-tertiary": "grey-5",
          "primary": "postbox",
          "primary-hover": "service-neutral-dark",
          "accent": "postbox",
          "accent-hover": "service-neutral",
          "warning": "sport-yellow",
          "error": "error-core",
          "success": "success-core",
          "border": "grey-3"
        }
      },
      "dark": {
        "roles": {
          "background": "midnight-black",
          "surface": "grey-7",
          "surface-elevated": "grey-6",
          "text-primary": "white",
          "text-secondary": "grey-3",
          "text-tertiary": "grey-4",
          "primary": "postbox",
          "primary-hover": "postbox-30",
          "accent": "postbox",
          "accent-hover": "live-light",
          "warning": "sport-yellow",
          "error": "error-core",
          "success": "success-core",
          "border": "grey-6"
        }
      }
    }
  },
  "fonts": [
    {
      "role": "heading",
      "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": "body",
      "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": "postbox",
      "on-identity": "white",
      "primary": "postbox",
      "primary-hover": "service-neutral-dark",
      "accent": "postbox",
      "accent-hover": "live-core",
      "mark": "postbox",
      "success": "success-core",
      "warning": "sport-yellow",
      "error": "error-core",
      "text-primary-light": "ebon",
      "text-primary-dark": "white",
      "background-light": "white",
      "background-dark": "midnight-black",
      "surface-light": "chalk",
      "surface-dark": "grey-7",
      "text-secondary-light": "grey-6",
      "text-tertiary-light": "grey-5",
      "border-light": "grey-3"
    },
    "typography": {
      "display": "heading",
      "prose": "body",
      "code": "mono"
    }
  },
  "assets": [],
  "rules": [
    {
      "type": "contrastRatio",
      "target": "text-primary",
      "severity": "error",
      "rationale": "Ebon (#222222) on white gives ~16:1, well past AAA. BBC GEL treats accessibility as a first-class design constraint; the BBC's public-service charter and global, multi-device reach justify the enhanced 7:1 contrast target.\n",
      "against": "background",
      "minRatio": 7,
      "standard": "WCAG-AAA"
    },
    {
      "type": "colorChoice",
      "target": "roles.colors.mark",
      "severity": "error",
      "rationale": "The BBC blocks mark is rendered in postbox red on white, white on postbox red, or as black-on-white in mono contexts only. Recoloring the blocks in service-neutral blue or LIVE teal would violate the BBC's brand standards around the blocks identity.\n",
      "allowed": [
        "postbox",
        "black",
        "white"
      ],
      "forbidden": [
        "service-neutral",
        "sport-yellow",
        "live-core",
        "error-core"
      ]
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.accent",
      "severity": "error",
      "rationale": "Postbox red is the BBC blocks identity. It is reserved for the blocks, the masthead, and editorial emphasis. Using it as the default link color would conflict with service-neutral blue (the in-copy link color in BBC online surfaces).\n",
      "allowedContexts": [
        "bbc-blocks",
        "editorial-emphasis",
        "breaking-news",
        "masthead"
      ],
      "forbiddenContexts": [
        "default-link",
        "body-emphasis",
        "error-state"
      ]
    },
    {
      "type": "forbiddenTreatment",
      "target": "logo",
      "severity": "error",
      "rationale": "The BBC blocks logo is one of the most heavily standardized marks in global media. The BBC's brand guidelines forbid recoloring, rotation, gradients, shadows, or skewing of the blocks under any circumstance.\n",
      "treatments": [
        "stretched",
        "rotated",
        "recolored",
        "drop-shadow",
        "gradient-fill",
        "on-busy-photo",
        "skewed"
      ]
    },
    {
      "type": "accessibilityRequirement",
      "target": "*",
      "severity": "warning",
      "rationale": "BBC GEL formally requires WCAG 2.1 AA across products, with AAA targeted where reasonably achievable for body text. The BBC's public-service obligation to universal access makes the AAA enhanced contrast target the right default for this brand atom.\n",
      "standard": "WCAG-AAA",
      "criterion": "1.4.6"
    },
    {
      "type": "enumMembership",
      "target": "typography.body.fontWeight",
      "severity": "warning",
      "rationale": "Reith Sans is published in Regular (400), Medium (500), and Bold (700) on BBC surfaces. Heavier display weights are not in the licensed cut; the Inter substitute should mirror the same weight discipline to preserve the typographic voice.\n",
      "allowed": [
        "400",
        "500",
        "700"
      ]
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.live-core",
      "severity": "error",
      "rationale": "The LIVE teal (#009E9E) is reserved in BBC services for live-coverage status — the \"LIVE\" tag on broadcast and streaming. It must not be used as a general link or CTA color; doing so would conflate live-status semantics with navigation affordances.\n",
      "allowedContexts": [
        "live-coverage",
        "status-indicator",
        "now-on-air"
      ],
      "forbiddenContexts": [
        "default-link",
        "cta",
        "editorial-emphasis"
      ]
    },
    {
      "type": "compositionConstraint",
      "target": "roles.colors.primary",
      "severity": "recommendation",
      "rationale": "Postbox red reads cleanest on white, black, or the warm chalk neutral. Placing it adjacent to service-neutral blue or error-core pink introduces a chromatic conflict between identity-red and semantic-state colors that BBC GEL treats as a hierarchy violation.\n",
      "pairsWith": [
        "white",
        "black",
        "chalk",
        "midnight-black"
      ],
      "doesNotPairWith": [
        "service-neutral",
        "sport-yellow",
        "error-core"
      ]
    }
  ]
}
