{
  "version": "1.1.0",
  "status": "approved-public-core",
  "principle": "Editorial scale for meaning; technical precision for metadata.",
  "families": [
    {
      "token": "marketing.font.family.sans",
      "role": "Primary sans",
      "use": "Display, headings, body, controls and narrative text.",
      "cssVariable": "--halo-font-sans",
      "cssValue": null,
      "value": "{core.font.family.sans}",
      "resolvedValue": [
        "Inter",
        "ui-sans-serif",
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "sans-serif"
      ],
      "licence": "SIL Open Font License 1.1",
      "distribution": "Acquire Inter from an official OFL source. Halo does not redistribute third-party font binaries."
    },
    {
      "token": "marketing.font.family.mono",
      "role": "Technical mono",
      "use": "Eyebrows, evidence labels, IDs, measurements, timestamps and code.",
      "cssVariable": "--halo-font-mono",
      "cssValue": null,
      "value": "{core.font.family.mono}",
      "resolvedValue": [
        "IBM Plex Mono",
        "SFMono-Regular",
        "Consolas",
        "Liberation Mono",
        "Menlo",
        "monospace"
      ],
      "licence": "SIL Open Font License 1.1",
      "distribution": "Acquire IBM Plex Mono from an official OFL source. Halo does not redistribute third-party font binaries."
    }
  ],
  "roles": [
    {
      "id": "display-hero",
      "name": "Hero display",
      "size": {
        "token": "marketing.font.size.display-hero",
        "role": "Hero size",
        "use": "Primary campaign or page-opening statement.",
        "cssVariable": "--type-display-hero",
        "cssValue": "clamp(3.15rem, 5vw, 6.2rem)",
        "value": {
          "value": 6.2,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 6.2,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.display",
        "role": "Display weight",
        "use": "Editorial confidence without heavy typography.",
        "cssVariable": "--weight-display",
        "cssValue": null,
        "value": 560,
        "resolvedValue": 560
      },
      "leading": {
        "token": "marketing.font.leading.hero",
        "role": "Hero leading",
        "use": "Tight, carefully edited display lines.",
        "cssVariable": "--leading-hero",
        "cssValue": null,
        "value": 0.93,
        "resolvedValue": 0.93
      },
      "tracking": {
        "token": "marketing.font.tracking.hero",
        "role": "Hero tracking",
        "use": "Optical tightening at the largest sizes.",
        "cssVariable": "--tracking-hero",
        "cssValue": null,
        "value": {
          "value": -0.066,
          "unit": "em"
        },
        "resolvedValue": {
          "value": -0.066,
          "unit": "em"
        }
      },
      "sample": "Make every decision visible.",
      "guidance": "Use once per composition. Aim for 2–4 lines on desktop and 3–6 on mobile."
    },
    {
      "id": "display-page",
      "name": "Page display",
      "size": {
        "token": "marketing.font.size.display-page",
        "role": "Page title size",
        "use": "Section and guide-page titles.",
        "cssVariable": "--type-display-page",
        "cssValue": "clamp(2.85rem, 4.45vw, 5.4rem)",
        "value": {
          "value": 5.4,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 5.4,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.display",
        "role": "Display weight",
        "use": "Editorial display weight.",
        "cssVariable": "--weight-display",
        "cssValue": null,
        "value": 560,
        "resolvedValue": 560
      },
      "leading": {
        "token": "marketing.font.leading.display",
        "role": "Display leading",
        "use": "Compact page-title rhythm.",
        "cssVariable": "--leading-display",
        "cssValue": null,
        "value": 0.95,
        "resolvedValue": 0.95
      },
      "tracking": {
        "token": "marketing.font.tracking.display",
        "role": "Display tracking",
        "use": "Optical tightening at display scale.",
        "cssVariable": "--tracking-display",
        "cssValue": null,
        "value": {
          "value": -0.062,
          "unit": "em"
        },
        "resolvedValue": {
          "value": -0.062,
          "unit": "em"
        }
      },
      "sample": "Quiet industrial intelligence.",
      "guidance": "Use for the primary title when a hero display would be too dominant."
    },
    {
      "id": "heading-section",
      "name": "Section heading",
      "size": {
        "token": "marketing.font.size.heading-section",
        "role": "Section heading size",
        "use": "Major editorial sections.",
        "cssVariable": "--type-heading-section",
        "cssValue": "clamp(2.3rem, 3.55vw, 4.45rem)",
        "value": {
          "value": 4.45,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 4.45,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.display",
        "role": "Display weight",
        "use": "Consistent heading mass.",
        "cssVariable": "--weight-display",
        "cssValue": null,
        "value": 560,
        "resolvedValue": 560
      },
      "leading": {
        "token": "marketing.font.leading.heading",
        "role": "Heading leading",
        "use": "Readable multiline headings.",
        "cssVariable": "--leading-heading",
        "cssValue": null,
        "value": 1.05,
        "resolvedValue": 1.05
      },
      "tracking": {
        "token": "marketing.font.tracking.heading",
        "role": "Heading tracking",
        "use": "Tight but legible headings.",
        "cssVariable": "--tracking-heading",
        "cssValue": null,
        "value": {
          "value": -0.05,
          "unit": "em"
        },
        "resolvedValue": {
          "value": -0.05,
          "unit": "em"
        }
      },
      "sample": "One system across every surface.",
      "guidance": "Use to open a major section; keep the hierarchy visibly below the page title."
    },
    {
      "id": "heading-feature",
      "name": "Feature heading",
      "size": {
        "token": "marketing.font.size.heading-feature",
        "role": "Feature heading size",
        "use": "Feature stories, cards and grouped guidance.",
        "cssVariable": "--type-heading-feature",
        "cssValue": "clamp(1.75rem, 2.2vw, 2.8rem)",
        "value": {
          "value": 2.8,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 2.8,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.display",
        "role": "Display weight",
        "use": "Editorial feature heading.",
        "cssVariable": "--weight-display",
        "cssValue": null,
        "value": 560,
        "resolvedValue": 560
      },
      "leading": {
        "token": "marketing.font.leading.heading",
        "role": "Heading leading",
        "use": "Readable feature-heading rhythm.",
        "cssVariable": "--leading-heading",
        "cssValue": null,
        "value": 1.05,
        "resolvedValue": 1.05
      },
      "tracking": {
        "token": "marketing.font.tracking.feature",
        "role": "Feature tracking",
        "use": "Moderate optical tightening.",
        "cssVariable": "--tracking-feature",
        "cssValue": null,
        "value": {
          "value": -0.04,
          "unit": "em"
        },
        "resolvedValue": {
          "value": -0.04,
          "unit": "em"
        }
      },
      "sample": "Evidence before emphasis.",
      "guidance": "Use within a section, never as a substitute for the page hierarchy."
    },
    {
      "id": "heading-card",
      "name": "Card heading",
      "size": {
        "token": "marketing.font.size.heading-card",
        "role": "Card heading size",
        "use": "Cards, modules and compact group labels.",
        "cssVariable": "--type-heading-card",
        "cssValue": "clamp(1.25rem, 1.25vw, 1.5rem)",
        "value": {
          "value": 1.5,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 1.5,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.emphasis",
        "role": "Emphasis weight",
        "use": "Short scan-friendly headings.",
        "cssVariable": "--weight-emphasis",
        "cssValue": null,
        "value": 620,
        "resolvedValue": 620
      },
      "leading": {
        "token": "marketing.font.leading.heading",
        "role": "Heading leading",
        "use": "Compact module titles.",
        "cssVariable": "--leading-heading",
        "cssValue": null,
        "value": 1.05,
        "resolvedValue": 1.05
      },
      "tracking": {
        "token": "marketing.font.tracking.body",
        "role": "Natural tracking",
        "use": "Small headings do not need display tightening.",
        "cssVariable": "--tracking-body",
        "cssValue": null,
        "value": {
          "value": 0,
          "unit": "em"
        },
        "resolvedValue": {
          "value": 0,
          "unit": "em"
        }
      },
      "sample": "Guided capture",
      "guidance": "Keep card headings short and concrete."
    },
    {
      "id": "lead",
      "name": "Lead",
      "size": {
        "token": "marketing.font.size.lead",
        "role": "Lead size",
        "use": "Introductory paragraphs and key explanations.",
        "cssVariable": "--type-lead",
        "cssValue": "clamp(1.125rem, 1.2vw, 1.25rem)",
        "value": {
          "value": 1.25,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 1.25,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.body",
        "role": "Body weight",
        "use": "Comfortable continuous reading.",
        "cssVariable": "--weight-body",
        "cssValue": null,
        "value": 400,
        "resolvedValue": 400
      },
      "leading": {
        "token": "marketing.font.leading.body",
        "role": "Body leading",
        "use": "Readable large body text.",
        "cssVariable": "--leading-body",
        "cssValue": null,
        "value": 1.55,
        "resolvedValue": 1.55
      },
      "tracking": {
        "token": "marketing.font.tracking.body",
        "role": "Natural tracking",
        "use": "Preserve the typeface's text spacing.",
        "cssVariable": "--tracking-body",
        "cssValue": null,
        "value": {
          "value": 0,
          "unit": "em"
        },
        "resolvedValue": {
          "value": 0,
          "unit": "em"
        }
      },
      "sample": "Halo turns guided observations into evidence people can trust and use.",
      "guidance": "Use sparingly to establish context; keep lines near 45–70 characters."
    },
    {
      "id": "body",
      "name": "Body",
      "size": {
        "token": "marketing.font.size.body",
        "role": "Body size",
        "use": "Standard guidance, UI copy and explanatory text.",
        "cssVariable": "--type-body",
        "cssValue": null,
        "value": {
          "value": 1,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 1,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.body",
        "role": "Body weight",
        "use": "Primary reading weight.",
        "cssVariable": "--weight-body",
        "cssValue": null,
        "value": 400,
        "resolvedValue": 400
      },
      "leading": {
        "token": "marketing.font.leading.body",
        "role": "Body leading",
        "use": "Standard reading rhythm.",
        "cssVariable": "--leading-body",
        "cssValue": null,
        "value": 1.55,
        "resolvedValue": 1.55
      },
      "tracking": {
        "token": "marketing.font.tracking.body",
        "role": "Natural tracking",
        "use": "Preserve normal word shape and texture.",
        "cssVariable": "--tracking-body",
        "cssValue": null,
        "value": {
          "value": 0,
          "unit": "em"
        },
        "resolvedValue": {
          "value": 0,
          "unit": "em"
        }
      },
      "sample": "Show the mechanism, the state change and the human decision it supports.",
      "guidance": "Default for prose. Constrain long-form text to 54ch or roughly 45–70 characters per line."
    },
    {
      "id": "technical-label",
      "name": "Technical label",
      "family": "marketing.font.family.mono",
      "size": {
        "token": "marketing.font.size.label",
        "role": "Label size",
        "use": "Eyebrows, IDs, timestamps and status metadata.",
        "cssVariable": "--type-label",
        "cssValue": null,
        "value": {
          "value": 0.75,
          "unit": "rem"
        },
        "resolvedValue": {
          "value": 0.75,
          "unit": "rem"
        }
      },
      "weight": {
        "token": "marketing.font.weight.body",
        "role": "Body weight",
        "use": "Quiet technical labeling.",
        "cssVariable": "--weight-body",
        "cssValue": null,
        "value": 400,
        "resolvedValue": 400
      },
      "leading": {
        "token": "marketing.font.leading.label",
        "role": "Label leading",
        "use": "Compact metadata rhythm.",
        "cssVariable": "--leading-label",
        "cssValue": null,
        "value": 1.35,
        "resolvedValue": 1.35
      },
      "tracking": {
        "token": "marketing.font.tracking.label",
        "role": "Label tracking",
        "use": "Uppercase technical cadence.",
        "cssVariable": "--tracking-label",
        "cssValue": null,
        "value": {
          "value": 0.1,
          "unit": "em"
        },
        "resolvedValue": {
          "value": 0.1,
          "unit": "em"
        }
      },
      "sample": "VERIFIED / 14:32:06",
      "guidance": "Use IBM Plex Mono, usually uppercase. Do not set long prose or campaign headlines in mono."
    }
  ],
  "accessibility": {
    "measure": "Constrain prose to 54ch or approximately 45–70 characters per line.",
    "zoom": "Layouts and hierarchy must remain usable at 200% zoom without clipped or overlapping text.",
    "minimums": "Do not use technical microcopy as the only carrier of essential meaning.",
    "typefaces": "Use the named system fallbacks when Inter or IBM Plex Mono is unavailable; never replace them with an unapproved display face."
  },
  "downloads": {
    "manifest": "https://brand.halocompass.com/v1/typography/manifest.json",
    "tokensJson": "https://brand.halocompass.com/v1/tokens/halo.tokens.json",
    "tokensCss": "https://brand.halocompass.com/v1/tokens/halo.css",
    "tokensTypescript": "https://brand.halocompass.com/v1/tokens/halo.ts",
    "rules": "https://brand.halocompass.com/v1/rules/brand.rules.json"
  }
}
