{
  "$comment": "EMBER design tokens — the single source of truth. Edit values here, then run `python scripts/build.py` to regenerate tokens/ember.css. Every medium (web, poster, print, physical) reads colors from that generated file.",
  "name": "EMBER",
  "version": "1.2.0",
  "essence": "Swiss grid with a fist. Everything wants to move.",

  "color": {
    "paper": {
      "$comment": "PAPER mode — the warm sheet, struck harder: near-black ink, hotter ember. Persona colors each have one job: azure = cold data, sky = the air inside anything that asks, pink = the human hand.",
      "bg": "#F6F1E6",
      "raise": "#FCFAF3",
      "sunk": "#E7DDC9",
      "ink": "#131009",
      "inkSoft": "#4F4837",
      "inkFaint": "#7E7562",
      "edgeStrong": "#131009",
      "edgeFaint": "#C8BCA2",
      "ember": "#D93E12",
      "emberDeep": "#B02F0C",
      "emberText": "#FCFAF3",
      "emberWash": "rgba(217, 62, 18, 0.08)",
      "azure": "#1D6FE0",
      "sky": "#C9DDF2",
      "pink": "#E8467C",
      "ok": "#2E7D4F",
      "warn": "#A97B1C",
      "err": "#8E2424",
      "shadow": "#131009",
      "glowEmber": "0 0 14px rgba(217, 62, 18, 0.55), 0 0 40px rgba(217, 62, 18, 0.28)",
      "conflictGradient": "linear-gradient(100deg, #131009 0%, #4A2413 55%, #D93E12 100%)",
      "grainOpacity": "0.05",
      "desk": "#2A2620"
    },
    "coal": {
      "$comment": "COAL mode — glowing dark, deeper and hotter.",
      "bg": "#0E0B07",
      "raise": "#181209",
      "sunk": "#070503",
      "ink": "#F2ECDF",
      "inkSoft": "#BDB39F",
      "inkFaint": "#7A7160",
      "edgeStrong": "#F2ECDF",
      "edgeFaint": "#302818",
      "ember": "#FF5A28",
      "emberDeep": "#FF7B4F",
      "emberText": "#0E0B07",
      "emberWash": "rgba(255, 90, 40, 0.10)",
      "azure": "#6FA8FF",
      "sky": "#16202E",
      "pink": "#FF6FA5",
      "ok": "#7DBB8F",
      "warn": "#D9A441",
      "err": "#E07A7A",
      "shadow": "rgba(242, 236, 223, 0.85)",
      "glowEmber": "0 0 14px rgba(255, 90, 40, 0.60), 0 0 44px rgba(255, 90, 40, 0.32)",
      "conflictGradient": "linear-gradient(100deg, #0E0B07 0%, #33180B 55%, #FF5A28 100%)",
      "grainOpacity": "0",
      "desk": "#050402"
    }
  },

  "type": {
    "$comment": "Two workhorses and one whisper. Web fonts referenced but never required — full system fallbacks.",
    "grot": "\"Space Grotesk\", \"Helvetica Neue\", Helvetica, Arial, sans-serif",
    "mono": "\"IBM Plex Mono\", \"JetBrains Mono\", Consolas, \"Courier New\", monospace",
    "whisper": "\"Newsreader\", Georgia, \"Times New Roman\", serif",
    "weights": { "regular": 400, "medium": 500, "bold": 700 },
    "scale": {
      "xs": "0.75rem",
      "sm": "0.875rem",
      "md": "1rem",
      "lg": "1.125rem",
      "xl": "clamp(1.2rem, 1.1rem + 0.5vw, 1.4rem)",
      "2xl": "clamp(1.45rem, 1.2rem + 1.2vw, 1.85rem)",
      "3xl": "clamp(1.85rem, 1.4rem + 2.2vw, 2.5rem)",
      "4xl": "clamp(2.35rem, 1.6rem + 3.6vw, 3.4rem)",
      "5xl": "clamp(3rem, 1.8rem + 6vw, 5rem)",
      "hero": "clamp(3.6rem, 2rem + 9.5vw, 9rem)"
    },
    "leading": { "display": 0.95, "heading": 1.08, "body": 1.6, "mono": 1.45 },
    "tracking": { "display": "-0.02em", "heading": "-0.01em", "body": "0em", "label": "0.08em" }
  },

  "space": {
    "$comment": "8px base scale.",
    "1": "4px",
    "2": "8px",
    "3": "12px",
    "4": "16px",
    "5": "24px",
    "6": "32px",
    "7": "48px",
    "8": "64px",
    "9": "96px",
    "10": "128px"
  },

  "radius": { "none": "0px", "sm": "2px", "md": "4px", "pill": "999px" },

  "shape": {
    "$comment": "Postures — geometry declares intent. give = informs (sharp top, round bottom). speak = announces (tag pointing at its subject).",
    "give": "0 0 14px 14px",
    "speak": "999px 0 0 999px",
    "keycapWall": "6px"
  },

  "border": { "heavy": "3px", "fine": "1px" },

  "shadow": {
    "$comment": "Hard offsets, zero blur. The single sanctioned blur is --glow-ember (the neon exception).",
    "sm": "3px 3px 0",
    "md": "6px 6px 0",
    "lg": "10px 10px 0"
  },

  "motion": {
    "$comment": "Mechanical press easing; things slide, sink, and depress — never fade alone. Tension = stillness as stored energy: slow strain cycles, periodic clenches.",
    "easePress": "cubic-bezier(0.2, 0.9, 0.3, 1)",
    "dur1": "150ms",
    "dur2": "250ms",
    "dur3": "450ms",
    "pulseDur": "2.8s",
    "marqueeDur": "26s",
    "strainDur": "7s",
    "clenchDur": "6s",
    "scanDur": "9s"
  },

  "print": {
    "$comment": "Physical sizes for paper artifacts. Bleed always 3mm.",
    "a3": "297mm 420mm",
    "a5": "148mm 210mm",
    "a6": "105mm 148mm",
    "card": "85mm 55mm",
    "bleed": "3mm"
  }
}
