{
  "id": "signal",
  "version": "1.0.0",
  "name": "Signal",
  "description": "Signal is the end-to-end-encrypted messaging, voice-, and video-call service built by Signal Messenger LLC under the non-profit Signal Technology Foundation. Signal is the reference implementation of the Signal Protocol — the cryptographic backbone also licensed by WhatsApp, Google Messages, and Meta Messenger — and the brand voice is principled, technical, and earnest: \"say 'hello' to privacy.\" Visually, Signal is anchored on Signal Blue (#3A76F0), the saturated brand blue used on the speech-bubble mark, primary CTAs, and the outgoing-message bubble. Signal is dual-mode by canonical identity: the desktop and mobile clients render the blue accent on a near- white canvas (light) or a deep near-black canvas #1B1E20 (dark), with the blue serving as the consistent primary across both surfaces. The Signal client further uses a small per-thread \"color of conversation\" spectrum to tint individual chats.\n",
  "provenance": {
    "source": "https://signal.org/brand",
    "license": "Proprietary — All Rights Reserved",
    "attribution": "Signal and the Signal logo are trademarks of Signal Messenger, LLC. The Signal Brand Trademark Guidelines published at signal.org/brand enumerate the use restrictions encoded in the rules below — including the 0.5× clear-space requirement, the 26×26 minimum glyph size, prohibition on stretching/rotating/ outlining the mark, no domain-name use, no merchandise without permission, and the trademark-as-adjective grammar rule. The signature Signal Blue (#3A76F0) is documented in the simple- icons brand database (citing signal.org) and corroborated via the deployed signal.org marketing-site stylesheet.\n",
    "importedDate": "2026-05-18",
    "notes": "Derived from live site CSS at https://signal.org/ on 2026-05-18; the published signal.org/brand page is policy- and asset-link only (no hex codes in the visible content), so the supporting palette was captured from the deployed marketing-site stylesheet. Signal's marketing site uses Proxima Nova (sans) and roca (display serif); the mobile clients use platform system fonts (SF Pro on iOS, Roboto on Android). This atom references Proxima Nova@1 for the sans roles consistent with the marketing surface, with Inter@1 carrying nothing here — Proxima Nova is the open-source-licensed face surfaced by signal.org. The Signal brand policy expressly forbids combining the marks with other logos to imply partnership, modifying the wordmark, or monetising brand assets on merchandise — so `assets: []` is the correct posture for this catalog.\n"
  },
  "tags": [
    "signal",
    "messaging",
    "privacy",
    "blue",
    "communications",
    "encryption",
    "open-source",
    "non-profit"
  ],
  "palette": {
    "ref": "signal@1.0.0",
    "swatches": [
      {
        "id": "signal-blue",
        "name": "Signal Blue",
        "value": "#3A76F0",
        "description": "Signature Signal blue — the brand's primary color, used on the Signal mark, primary CTAs, and the outgoing-message bubble.\n",
        "aliases": []
      },
      {
        "id": "signal-blue-deep",
        "name": "Signal Blue Deep",
        "value": "#2563EB",
        "description": "Deeper marketing-site primary-action blue — used on the hero CTA button across signal.org.\n",
        "aliases": []
      },
      {
        "id": "signal-blue-action",
        "name": "Signal Blue Action",
        "value": "#1A77C0",
        "description": "Deeper interactive blue — used on link hover and pressed states.",
        "aliases": []
      },
      {
        "id": "signal-bubble-blue",
        "name": "Signal Bubble Blue",
        "value": "#1A77C0",
        "description": "Chat-thread blue color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-green",
        "name": "Signal Bubble Green",
        "value": "#2C8948",
        "description": "Chat-thread green color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-green-light",
        "name": "Signal Bubble Green Light",
        "value": "#43955C",
        "description": "Chat-thread lighter green color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-purple",
        "name": "Signal Bubble Purple",
        "value": "#6A2D8E",
        "description": "Chat-thread purple color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-violet",
        "name": "Signal Bubble Violet",
        "value": "#7C25B1",
        "description": "Chat-thread violet color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-crimson",
        "name": "Signal Bubble Crimson",
        "value": "#C7354C",
        "description": "Chat-thread crimson / red color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-rust",
        "name": "Signal Bubble Rust",
        "value": "#BA481E",
        "description": "Chat-thread rust / burnt-orange color.",
        "aliases": []
      },
      {
        "id": "signal-bubble-amber",
        "name": "Signal Bubble Amber",
        "value": "#FFC107",
        "description": "Chat-thread amber / yellow color (the Signal \"yellow bubble\").",
        "aliases": []
      },
      {
        "id": "signal-success",
        "name": "Signal Success",
        "value": "#287B41",
        "description": "Authored success / sent-status green.",
        "aliases": []
      },
      {
        "id": "signal-error",
        "name": "Signal Error",
        "value": "#C01D36",
        "description": "Authored error / failed-send red.",
        "aliases": []
      },
      {
        "id": "signal-warning",
        "name": "Signal Warning",
        "value": "#E57200",
        "description": "Authored warning amber.",
        "aliases": []
      },
      {
        "id": "signal-white",
        "name": "Signal White",
        "value": "#FFFFFF",
        "description": "Pure white — primary surface on the marketing site and light-mode chat canvas.",
        "aliases": []
      },
      {
        "id": "signal-surface-light",
        "name": "Signal Surface Light",
        "value": "#F4F5F5",
        "description": "Light-mode elevated surface — chat-list rail.",
        "aliases": []
      },
      {
        "id": "signal-border-light",
        "name": "Signal Border Light",
        "value": "#E0E2E3",
        "description": "Quiet divider on the marketing-site surface.",
        "aliases": []
      },
      {
        "id": "signal-text-on-light",
        "name": "Signal Text on Light",
        "value": "#1B1E20",
        "description": "Primary text on the marketing-site and light-mode chat canvas.",
        "aliases": []
      },
      {
        "id": "signal-text-secondary-light",
        "name": "Signal Text Secondary Light",
        "value": "#5B646C",
        "description": "Secondary text on light-mode surfaces.",
        "aliases": []
      },
      {
        "id": "signal-canvas-dark",
        "name": "Signal Canvas Dark",
        "value": "#1B1E20",
        "description": "Deep near-black — Signal's dark-mode chat canvas tone, captured from the deployed signal.org dark stylesheet.\n",
        "aliases": []
      },
      {
        "id": "signal-surface-dark",
        "name": "Signal Surface Dark",
        "value": "#2D3236",
        "description": "Dark-mode elevated surface — chat-list rail.",
        "aliases": []
      },
      {
        "id": "signal-surface-dark-elevated",
        "name": "Signal Surface Dark Elevated",
        "value": "#303A49",
        "description": "Dark-mode deepest-elevated surface.",
        "aliases": []
      },
      {
        "id": "signal-text-on-dark",
        "name": "Signal Text on Dark",
        "value": "#FFFFFF",
        "description": "Primary text on the dark-mode canvas.",
        "aliases": []
      },
      {
        "id": "signal-text-secondary-dark",
        "name": "Signal Text Secondary Dark",
        "value": "#A7AFBC",
        "description": "Secondary text and timestamps on the dark canvas.",
        "aliases": []
      }
    ],
    "modes": {
      "light": {
        "roles": {
          "background": "signal-white",
          "surface": "signal-surface-light",
          "surface-elevated": "signal-white",
          "text-primary": "signal-text-on-light",
          "text-secondary": "signal-text-secondary-light",
          "text-tertiary": "signal-text-secondary-light",
          "primary": "signal-blue",
          "primary-hover": "signal-blue-deep",
          "accent": "signal-blue",
          "accent-hover": "signal-blue-action",
          "warning": "signal-warning",
          "warning-hover": "signal-bubble-rust",
          "error": "signal-error",
          "success": "signal-success",
          "border": "signal-border-light"
        }
      },
      "dark": {
        "roles": {
          "background": "signal-canvas-dark",
          "surface": "signal-surface-dark",
          "surface-elevated": "signal-surface-dark-elevated",
          "text-primary": "signal-text-on-dark",
          "text-secondary": "signal-text-secondary-dark",
          "text-tertiary": "signal-text-secondary-dark",
          "primary": "signal-blue",
          "primary-hover": "signal-blue-deep",
          "accent": "signal-blue",
          "accent-hover": "signal-blue-action",
          "warning": "signal-bubble-amber",
          "warning-hover": "signal-warning",
          "error": "signal-bubble-crimson",
          "success": "signal-bubble-green",
          "border": "signal-surface-dark-elevated"
        }
      }
    }
  },
  "fonts": [
    {
      "role": "heading",
      "ref": "proxima-nova@1.0.0",
      "family": "proxima-nova",
      "classification": "sans-serif",
      "source": {
        "kind": "adobe-fonts",
        "family": "proxima-nova",
        "kitId": "adobe-fonts-kit-required"
      },
      "fallbackStack": [
        "Inter",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Helvetica Neue",
        "Helvetica",
        "Arial",
        "sans-serif"
      ],
      "availableStyles": [
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "normal"
        }
      ]
    },
    {
      "role": "body",
      "ref": "proxima-nova@1.0.0",
      "family": "proxima-nova",
      "classification": "sans-serif",
      "source": {
        "kind": "adobe-fonts",
        "family": "proxima-nova",
        "kitId": "adobe-fonts-kit-required"
      },
      "fallbackStack": [
        "Inter",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Helvetica Neue",
        "Helvetica",
        "Arial",
        "sans-serif"
      ],
      "availableStyles": [
        {
          "weight": 400,
          "style": "normal"
        },
        {
          "weight": 500,
          "style": "normal"
        },
        {
          "weight": 600,
          "style": "normal"
        },
        {
          "weight": 700,
          "style": "normal"
        }
      ]
    },
    {
      "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": "signal-blue",
      "on-identity": "signal-white",
      "background": "signal-white",
      "surface": "signal-surface-light",
      "surface-elevated": "signal-white",
      "text-primary": "signal-text-on-light",
      "text-secondary": "signal-text-secondary-light",
      "primary": "signal-blue",
      "primary-hover": "signal-blue-deep",
      "accent": "signal-blue",
      "accent-hover": "signal-blue-action",
      "mark": "signal-blue",
      "success": "signal-success",
      "warning": "signal-warning",
      "error": "signal-error"
    },
    "typography": {
      "display": "heading",
      "prose": "body",
      "wordmark": "heading",
      "code": "mono"
    }
  },
  "assets": [],
  "rules": [
    {
      "type": "colorChoice",
      "target": "logo.mark",
      "severity": "error",
      "rationale": "The Signal Brand Trademark Guidelines (signal.org/brand) prohibit altering the Signal mark via rotation, stretching, outlining, or \"effects\" — which includes recoloring. The speech-bubble mark renders in Signal Blue (#3A76F0) on light surfaces and reverses to white on the dark canvas. The per-thread \"color of conversation\" swatches are reserved for product-internal chat-bubble tinting and must not be used to recolor the mark itself.\n",
      "allowed": [
        "signal-blue",
        "signal-white"
      ],
      "forbidden": [
        "signal-bubble-purple",
        "signal-bubble-violet",
        "signal-bubble-crimson",
        "signal-bubble-rust",
        "signal-bubble-amber",
        "signal-bubble-green"
      ]
    },
    {
      "type": "forbiddenTreatment",
      "target": "logo",
      "severity": "error",
      "rationale": "The Signal Brand Trademark Guidelines explicitly enumerate these prohibitions: \"Don't alter logos via rotation, stretching, outlining, or effects,\" \"Don't modify the Signal wordmark typography,\" \"Don't combine Signal assets with other logos implying partnership,\" and \"never show the glyph smaller than 26×26 pixels.\" Encoding them as a forbidden-treatment rule lets consumers reject impermissible placements at validation time.\n",
      "treatments": [
        "stretched",
        "rotated",
        "recolored",
        "outlined",
        "drop-shadow",
        "gradient-fill",
        "on-busy-photo",
        "combined-with-other-logo",
        "wordmark-modified",
        "smaller-than-26px"
      ]
    },
    {
      "type": "numericRange",
      "target": "logo.minWidth",
      "severity": "error",
      "rationale": "The Signal Brand Trademark Guidelines specify a hard floor — \"never show the glyph smaller than 26×26 pixels\" — to preserve mark legibility at small render sizes. Encoding the floor here lets layout validators reject undersized placements of the speech-bubble glyph.\n",
      "min": 26,
      "unit": "px"
    },
    {
      "type": "numericRatio",
      "target": "logo.clearSpace",
      "severity": "error",
      "rationale": "The Signal Brand Trademark Guidelines specify a clear-space requirement of \"at least half (0.5x) the size of the logo around it.\" The 0.5× ratio is the floor; consumers may enforce stricter values per their layout system but must not reduce the clear-space allotment below this threshold.\n",
      "min": 0.5
    },
    {
      "type": "contrastRatio",
      "target": "text-primary",
      "severity": "error",
      "rationale": "WCAG 2.1 Level AA contrast minimum for body text. Signal Text on Light (#1B1E20) on the white canvas reads at roughly 17:1, and Text on Dark (#FFFFFF) on Canvas Dark (#1B1E20) reads at roughly 17:1 — both clear AA decisively. The rule encodes the floor for any new foreground/background pairing introduced on Signal-skinned surfaces.\n",
      "against": "background",
      "minRatio": 4.5,
      "standard": "WCAG-AA"
    },
    {
      "type": "contextRestriction",
      "target": "roles.colors.identity",
      "severity": "error",
      "rationale": "The Signal Brand Trademark Guidelines specifically prohibit use of the Signal trademarks \"in social media account names or profiles,\" \"in domain names,\" in unlicensed merchandise, or combined with other logos \"implying partnership without permission.\" Encoding these as forbidden contexts lets consumers reject impermissible placements.\n",
      "forbiddenContexts": [
        "product-of-competitor",
        "merchandise",
        "endorsement-implication",
        "sponsorship-implication",
        "domain-name",
        "social-media-handle"
      ]
    },
    {
      "type": "compositionConstraint",
      "target": "roles.colors.primary",
      "severity": "recommendation",
      "rationale": "Signal Blue reads cleanest against white, the deep near- black dark canvas, or the very-dark text tone. Pairing the primary blue adjacent to a thread-tint purple, crimson, or amber (which are reserved for per-conversation chat-bubble coloring) breaks the calibrated primary-vs-secondary hierarchy and visually competes with the brand mark.\n",
      "pairsWith": [
        "signal-white",
        "signal-canvas-dark",
        "signal-text-on-light",
        "signal-surface-light"
      ],
      "doesNotPairWith": [
        "signal-bubble-purple",
        "signal-bubble-crimson",
        "signal-bubble-amber"
      ]
    },
    {
      "type": "enumMembership",
      "target": "typography.heading.fontWeight",
      "severity": "warning",
      "rationale": "Proxima Nova ships in Thin (100) through Black (900), but Signal's marketing display and product UI sit in the Regular (400), Semibold (600), and Bold (700) band on the deployed signal.org marketing surface. Lighter or heavier cuts drift from the brand's earnest, principled voice.\n",
      "allowed": [
        "400",
        "600",
        "700"
      ]
    },
    {
      "type": "accessibilityRequirement",
      "target": "*",
      "severity": "error",
      "rationale": "WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. Signal's accessibility-conscious posture and the dual light/dark canvas commitment make AA contrast checks the default verification on any new role pairing introduced on Signal-skinned surfaces.\n",
      "standard": "WCAG-AA",
      "criterion": "1.4.3"
    }
  ]
}
