{
  "$schema": "https://raw.githubusercontent.com/armeehn/riposte-brand/main/brand/tokens.schema.json",
  "meta": {
    "brand": "Riposte Laboratories Inc.",
    "docNo": "RL-BRAND-001",
    "rev": "A",
    "tagline": "Parry. Riposte.",
    "aesthetic": "industrial spec-sheet x jester mi-parti",
    "source": "https://github.com/armeehn/riposte-brand"
  },

  "color": {
    "ink":        { "hex": "#1d1a17", "role": "base",   "name": "Ink",            "note": "Warm near-black. The line colour and the dark field." },
    "ink-raised": { "hex": "#241f1b", "role": "base",   "name": "Ink Raised",     "note": "Panel surface on an ink field." },
    "ink-head":   { "hex": "#2b2723", "role": "base",   "name": "Ink Head",       "note": "Header fill on an ink field." },
    "ink-line":   { "hex": "#5c554c", "role": "base",   "name": "Ink Line",       "note": "Dashed dividers on an ink field. Never body text." },
    "bone":       { "hex": "#f6f1e7", "role": "base",   "name": "Bone",           "note": "The paper. Default background." },
    "bone-dim":   { "hex": "#eae4d6", "role": "base",   "name": "Bone Dim",       "note": "Recessed paper: sunken panels, spec headers." },
    "white":      { "hex": "#ffffff", "role": "base",   "name": "White",          "note": "Reserved for one hero field per site." },

    "pink":       { "hex": "#f0477d", "role": "accent", "name": "Riposte Pink",   "note": "Accent 1 of 3. Fills, bars, chips, large type." },
    "orange":     { "hex": "#fe9a0d", "role": "accent", "name": "Riposte Marigold","note": "Accent 2 of 3. The only accent that takes INK text." },
    "teal":       { "hex": "#12b795", "role": "accent", "name": "Riposte Teal",   "note": "Accent 3 of 3. The dark-field working accent." },

    "pink-deep":   { "hex": "#d81150", "role": "accent-deep", "name": "Pink Deep",   "note": "Use when an accent must carry body copy on bone, or be text on bone. Bone on it = 4.53:1." },
    "orange-deep": { "hex": "#a15e01", "role": "accent-deep", "name": "Marigold Deep","note": "Bone on it = 4.52:1." },
    "teal-deep":   { "hex": "#0c7a63", "role": "accent-deep", "name": "Teal Deep",   "note": "Diagram linework; bone on it = 4.69:1." },
    "teal-ink":    { "hex": "#04463a", "role": "accent-deep", "name": "Teal Ink",    "note": "Text on teal fills in diagrams. 9.60:1 on teal." }
  },

  "onAccent": {
    "pink":   "bone",
    "orange": "ink",
    "teal":   "bone"
  },

  "accentRotation": ["pink", "orange", "teal"],

  "font": {
    "family": "JetBrains Mono",
    "stack": "\"JetBrains Mono\", \"IBM Plex Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, \"Liberation Mono\", monospace",
    "weights": [400, 700, 800],
    "license": "SIL Open Font License 1.1",
    "source": "https://www.jetbrains.com/lp/mono/",
    "googleFonts": "https://fonts.google.com/specimen/JetBrains+Mono",
    "fallbackInTools": {
      "canva": "Space Mono, then Roboto Mono, then Courier Prime",
      "googleWorkspace": "Roboto Mono",
      "microsoftOffice": "Consolas",
      "note": "Upload the real JetBrains Mono where the tool allows font upload (Canva Pro, Figma, Adobe). The fallbacks are last resorts."
    }
  },

  "typeScale": {
    "xs":      { "size": "10px", "use": "chip micro-labels", "tracking": ".12em", "case": "upper" },
    "label":   { "size": "11px", "use": "kickers, spec headers, corner marks", "tracking": ".1em", "case": "upper" },
    "nav":     { "size": "12px", "use": "nav, SEC chips, tags", "tracking": ".08em", "case": "upper" },
    "md":      { "size": "14px", "use": "spec body, secondary prose", "tracking": "0", "case": "sentence" },
    "body":    { "size": "15px", "use": "prose (16px on the homepage)", "tracking": "0", "case": "sentence" },
    "lead":    { "size": "clamp(16px, 2vw, 19px)", "use": "lead paragraphs", "tracking": "0", "case": "sentence", "weight": 700 },
    "h3":      { "size": "clamp(20px, 2.6vw, 30px)", "use": "sub-section headings", "tracking": ".03em", "case": "upper" },
    "h2":      { "size": "clamp(24px, 3.2vw, 40px)", "use": "section headings", "tracking": ".03em", "case": "upper" },
    "h1":      { "size": "clamp(30px, 5vw, 54px)", "use": "page heads", "tracking": ".03em", "case": "upper" },
    "display": { "size": "clamp(30px, 6.6vw, 74px)", "use": "slide and hero statements", "tracking": "-.01em", "case": "upper" }
  },

  "leading": { "body": 1.55, "tight": 1.15, "display": 1.02 },

  "tracking": {
    "display": "-.01em",
    "h": ".03em",
    "nav": ".08em",
    "label": ".1em",
    "tag": ".14em",
    "spec": ".16em",
    "kicker": ".3em",
    "wordmark": ".55em"
  },

  "weight": { "body": 400, "bold": 700, "black": 800 },

  "space": {
    "1": "4px", "2": "8px", "3": "12px", "4": "16px", "5": "24px",
    "6": "34px", "7": "48px", "8": "64px", "9": "72px"
  },

  "container": {
    "default": "1060px",
    "wide": "1160px",
    "prose": "900px",
    "measure": "66ch",
    "gutter": "4vw"
  },

  "effect": {
    "ruleWidth": "2px",
    "ruleDashed": "1px dashed",
    "barTop": "6px",
    "barLeft": "8px",
    "radius": "0",
    "shadowPop": "4px 4px 0",
    "shadowStack": "8px 8px 0 teal, 16px 16px 0 pink",
    "checkerTile": "22px",
    "checkerBand": "26px",
    "harlequinTile": "34px",
    "harlequinBand": "38px",
    "tribandAngle": "105deg",
    "tribandStops": "pink 0-36%, orange 36-64%, teal 64-100%"
  },

  "motion": {
    "flick": "120ms",
    "snap": "150ms",
    "move": "250ms",
    "marquee": "28s",
    "easing": "ease-out"
  },

  "logo": {
    "viewBox": "0 0 720 159",
    "aspect": 4.528,
    "variants": {
      "riposte-ink.svg":  "on bone or white",
      "riposte-bone.svg": "on ink or pink fields",
      "riposte-pink.svg": "accent moments only"
    },
    "clearSpace": "One cap-height of the wordmark on all four sides. Measure from the outermost ink, not the SVG bounding box.",
    "minWidth": { "screen": "110px", "print": "28mm" },
    "lockup": "Wordmark, then L A B O R A T O R I E S  I N C. letterspaced .55em beneath, optical-centred."
  },

  "glyphs": ["▸", "✓", "✕", "!", "→", "↓", "▾", "◆", "♻", "✉"],

  "strings": {
    "ticker": "PARRY · RIPOSTE · RECYCLE · REPEAT ♻",
    "docNoFormat": "DOC NO. RL-000-A",
    "revFormat": "REV. A",
    "sectionChip": "SEC.NN"
  }
}
