{
  "_doc": "Authoritative, metadata-driven token→domain classification. Keyed on the framework-authored `namespace` (the segment after --sf-), which is precise and never drifts from the framework — unlike the old substring matching, where overlapping fragments (e.g. 'color' in --sf-focus-ring-color) routed a token to the wrong panel and made the sidebar badge, the category Reset, and the All-tokens list disagree. A namespace maps to exactly one domain; the handful of genuinely mixed namespaces are resolved per-token in `exceptions`. Every domain here must also exist in domains.ts's DOMAINS list. check-curation.mjs consumes the same file, so the build guard and the runtime can never diverge.",
  "namespaces": {
    "color": "colors",
    "contrast": "colors",
    "palette": "colors",
    "lumlocker": "colors",
    "gradient": "colors",
    "marker": "colors",

    "text": "typography",
    "font": "typography",
    "body": "typography",
    "heading": "typography",
    "h1": "typography",
    "h2": "typography",
    "h3": "typography",
    "h4": "typography",
    "h5": "typography",
    "h6": "typography",
    "leading": "typography",
    "tracking": "typography",
    "link": "typography",
    "optical": "typography",
    "display": "typography",
    "code": "typography",
    "fluid": "typography",

    "space": "spacing",
    "gap": "spacing",
    "gutter": "spacing",
    "section": "spacing",
    "component": "spacing",
    "content": "spacing",

    "container": "layout",
    "grid": "layout",
    "center": "layout",
    "cluster": "layout",
    "cover": "layout",
    "equal": "layout",
    "frame": "layout",
    "imposter": "layout",
    "reel": "layout",
    "sidebar": "layout",
    "switcher": "layout",
    "alternate": "layout",
    "bento": "layout",
    "stack": "layout",
    "header": "layout",
    "sticky": "layout",

    "breakout": "layout",
    "box": "layout",
    "bg": "layout",
    "ratio": "layout",

    "radius": "borders",
    "border": "borders",
    "divider": "borders",
    "field": "borders",
    "media": "borders",

    "shadow": "depth",

    "motion": "motion",
    "duration": "motion",
    "ease": "motion",
    "transition": "motion",
    "stagger": "motion",
    "scroll": "motion",
    "hover": "motion",
    "theme": "motion",
    "animation": "motion",

    "blur": "depth",
    "opacity": "depth",
    "drop": "depth",

    "prose": "macros",
    "flow": "macros",
    "line": "macros",
    "scrim": "macros",
    "surface": "macros",
    "mask": "macros",

    "btn": "components",
    "card": "components",

    "z": "misc",
    "icon": "misc",
    "size": "misc",
    "object": "misc",
    "scrollbar": "misc",
    "safe": "misc",
    "is": "misc",

    "focus": "wcag",
    "touch": "wcag"
  },
  "exceptions": {
    "--sf-content-width": "layout",
    "--sf-content-intrinsic-size": "macros",
    "--sf-scroll-shadow-size": "macros",
    "--sf-scroll-offset-gap": "layout",
    "--sf-field-required-marker": "misc"
  }
}
