{
  "$description": "FLAYSH brand tokens. THE single source of truth (W3C Design Tokens format). Edit only this file, then run `uv run build.py`. Everything in build/ is generated from here.",
  "$extensions": {
    "flaysh": {
      "version_note": "No version label: this is the brand. History lives in git and decisions.json.",
      "locked": "2026-10-15",
      "palette_name": "Electric Violet",
      "type_pair": "Anton (title) + Geist (text)"
    }
  },
  "color": {
    "$type": "color",
    "void": {
      "$value": {"colorSpace": "oklch", "components": [0.12, 0.01, 280], "hex": "#050509"},
      "$description": "Ground. The default background everywhere. 55-90% of any frame or page."
    },
    "surface": {
      "$value": {"colorSpace": "oklch", "components": [0.18, 0.02, 280], "hex": "#10111a"},
      "$description": "Raised dark: panels, cards, UI fields on top of void."
    },
    "ink": {
      "$value": {"colorSpace": "oklch", "components": [0.96, 0.01, 280], "hex": "#f0f1f9"},
      "$description": "Text and the logo when it is not red. Cool near-white, never pure #fff for text blocks."
    },
    "muted": {
      "$value": {"colorSpace": "oklch", "components": [0.74, 0.04, 280], "hex": "#a5a9c4"},
      "$description": "Secondary text: credits, dates, captions under titles."
    },
    "red": {
      "$value": {"colorSpace": "oklch", "components": [0.62, 0.24, 25], "hex": "#f51d31"},
      "$description": "THE FLAYSH RED. Lead colour. Logo, key words, the one thing that must be seen. Emitted light, never fire or smoke."
    },
    "red-deep": {
      "$value": {"colorSpace": "oklch", "components": [0.38, 0.15, 22], "hex": "#80041a"},
      "$description": "Shadow side of red: gradients, glows, pressed states. Never for text."
    },
    "red-hot": {
      "$value": {"colorSpace": "oklch", "components": [0.86, 0.09, 32], "hex": "#ffbfb2"},
      "$description": "Hot core of red light: the centre of a glow, a highlight. Small amounts only."
    },
    "violet": {
      "$value": {"colorSpace": "oklch", "components": [0.56, 0.24, 277], "hex": "#5b54fc"},
      "$description": "Electric violet, the partner. Shapes, halos, second accents, shadows of the red. 3.99:1 on void: large text only. Bluer than CTRL+F ED.04 purple on purpose (hue 277 vs ~295)."
    },
    "lavender": {
      "$value": {"colorSpace": "oklch", "components": [0.80, 0.10, 280], "hex": "#b1b7fd"},
      "$description": "Light violet for small coloured text, HUD lines and labels where violet is too dark."
    }
  },
  "ratio": {
    "$description": "Share of a frame or page, in percent. A guide, not a law.",
    "socials": {"void": 60, "red": 22, "violet": 12, "ink": 6},
    "merch": {"void": 80, "red": 15, "ink": 5},
    "web": {"void": 70, "ink": 15, "red": 10, "violet": 5}
  },
  "font": {
    "title": {
      "$type": "fontFamily",
      "$value": ["Anton", "Impact", "Arial Narrow Bold", "sans-serif"],
      "$description": "Titles, captions, headlines, set names. ALWAYS UPPERCASE. One weight (Regular 400 is already heavy)."
    },
    "text": {
      "$type": "fontFamily",
      "$value": ["Geist", "Helvetica Neue", "Arial", "sans-serif"],
      "$description": "Everything else: body, dates, venues, credits, UI, labels. Sentence case; labels uppercase."
    }
  },
  "type": {
    "$description": "Type styles. px sizes are for a 1080px-wide social canvas; web sizes are rem.",
    "title-xl": {"$type": "typography", "$value": {"fontFamily": "{font.title}", "fontWeight": 400, "fontSize": {"social": "200px", "web": "clamp(3.5rem, 9vw, 7rem)"}, "lineHeight": 0.92, "letterSpacing": "0.005em", "textTransform": "uppercase"}},
    "title-l": {"$type": "typography", "$value": {"fontFamily": "{font.title}", "fontWeight": 400, "fontSize": {"social": "132px", "web": "clamp(2.5rem, 6vw, 4.5rem)"}, "lineHeight": 0.95, "letterSpacing": "0.01em", "textTransform": "uppercase"}},
    "title-m": {"$type": "typography", "$value": {"fontFamily": "{font.title}", "fontWeight": 400, "fontSize": {"social": "88px", "web": "2rem"}, "lineHeight": 1, "letterSpacing": "0.01em", "textTransform": "uppercase"}},
    "caption": {"$type": "typography", "$value": {"fontFamily": "{font.title}", "fontWeight": 400, "fontSize": {"social": "120px", "web": "3rem"}, "lineHeight": 1, "letterSpacing": "0.01em", "textTransform": "uppercase"}, "$description": "Reel captions: 1 to 3 words per screen, one word in red."},
    "body": {"$type": "typography", "$value": {"fontFamily": "{font.text}", "fontWeight": 400, "fontSize": {"social": "36px", "web": "1.0625rem"}, "lineHeight": 1.45, "letterSpacing": "0", "textTransform": "none"}},
    "body-strong": {"$type": "typography", "$value": {"fontFamily": "{font.text}", "fontWeight": 600, "fontSize": {"social": "36px", "web": "1.0625rem"}, "lineHeight": 1.45, "letterSpacing": "0", "textTransform": "none"}},
    "small": {"$type": "typography", "$value": {"fontFamily": "{font.text}", "fontWeight": 400, "fontSize": {"social": "28px", "web": "0.875rem"}, "lineHeight": 1.4, "letterSpacing": "0", "textTransform": "none"}},
    "label": {"$type": "typography", "$value": {"fontFamily": "{font.text}", "fontWeight": 500, "fontSize": {"social": "24px", "web": "0.75rem"}, "lineHeight": 1.3, "letterSpacing": "0.08em", "textTransform": "uppercase"}, "$description": "Specimen labels, dates, BPM, coordinates, credits: the lab-readout voice."}
  },
  "space": {
    "$type": "dimension",
    "$description": "8px grid. Social canvases use the same steps x3 (1080 wide).",
    "1": {"$value": "4px"}, "2": {"$value": "8px"}, "3": {"$value": "16px"}, "4": {"$value": "24px"},
    "5": {"$value": "32px"}, "6": {"$value": "48px"}, "7": {"$value": "64px"}, "8": {"$value": "96px"}
  },
  "radius": {
    "$type": "dimension",
    "$description": "Sharp. Corners are square; only avatars are round.",
    "none": {"$value": "0px"}, "full": {"$value": "9999px"}
  },
  "logo": {
    "$description": "Logo rules. Files in logo/svg (sources) and build/logo (exports).",
    "winged": {
      "role": "Hero mark. The death-metal winged FLAYSH. Avatars, covers, merch, stage, big moments.",
      "colors": ["red", "ink", "void"],
      "clearSpace": "25% of the logo's height on every side",
      "minSize": {"digital": "24px tall (reads as a silhouette at 32px avatar)", "print": "15mm wide"},
      "never": ["chrome or metallic finish", "gradients inside the letters", "outlines/strokes", "drop shadows", "stretching or rotating", "violet fill on void (too dark)"]
    },
    "flame": {
      "role": "Readable wordmark. Line-ups, posters, EPK, anywhere the name must be read.",
      "colors": ["ink", "red", "void"],
      "clearSpace": "the height of the F's top bar (about 20% of the logo's height) on every side",
      "minSize": {"digital": "80px wide", "print": "25mm wide"},
      "never": ["chrome or metallic finish", "gradients inside the letters", "outlines/strokes", "stretching or rotating"]
    },
    "glow": "Allowed on both, in their own colour only (red glow on red logo), as light: soft, 0.2-0.5 opacity, never a hard drop shadow."
  }
}
