{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "vclaw-video-core/video/artifacts/brand-definition",
  "title": "brand-definition",
  "description": "Brand Agency locked brand system — brand name, positioning, taglines, voice rules, 6-color hex palette, typography hierarchy, 12-week theme map, and the vision-verified master asset (go-bananas product ref + Flow character). Authored creatively by the brand-agency skill, validated/persisted by `vclaw video brand-definition`, and read back by the filmmaking-prompts composer to append a prose BRAND line to every scene packet.",
  "type": "object",
  "required": ["schemaVersion", "projectSlug", "generatedAt", "source", "brandName", "positioning", "taglines", "voice", "palette", "typography", "themeMap"],
  "$defs": {
    "brandColor": {
      "type": "object",
      "required": ["hex"],
      "properties": {
        "hex": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "name": { "type": "string" }
      }
    }
  },
  "properties": {
    "schemaVersion": { "type": "integer", "const": 1 },
    "projectSlug": { "type": "string" },
    "generatedAt": { "type": "string" },
    "source": { "type": "string", "const": "brand-agency" },
    "brandName": { "type": "string" },
    "positioning": { "type": "string" },
    "taglines": {
      "type": "object",
      "required": ["functional", "emotional", "community"],
      "properties": {
        "functional": { "type": "string" },
        "emotional": { "type": "string" },
        "community": { "type": "string" }
      }
    },
    "voice": {
      "type": "object",
      "required": ["rules", "wordsWeUse", "wordsWeNeverUse", "tone"],
      "properties": {
        "rules": { "type": "string" },
        "wordsWeUse": { "type": "array", "items": { "type": "string" } },
        "wordsWeNeverUse": { "type": "array", "items": { "type": "string" } },
        "tone": { "type": "string" }
      }
    },
    "palette": {
      "type": "object",
      "required": ["primary", "secondary", "tertiaryBackground", "darkTypographyAccent", "metallic", "contrast"],
      "properties": {
        "primary": { "$ref": "#/$defs/brandColor" },
        "secondary": { "$ref": "#/$defs/brandColor" },
        "tertiaryBackground": { "$ref": "#/$defs/brandColor" },
        "darkTypographyAccent": { "$ref": "#/$defs/brandColor" },
        "metallic": { "$ref": "#/$defs/brandColor" },
        "contrast": { "$ref": "#/$defs/brandColor" }
      }
    },
    "typography": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["level", "font", "weight"],
        "properties": {
          "level": { "type": "string" },
          "font": { "type": "string" },
          "weight": { "type": "string" }
        }
      }
    },
    "themeMap": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["week", "theme"],
        "properties": {
          "week": { "type": "integer" },
          "theme": { "type": "string" }
        }
      }
    },
    "masterAsset": {
      "type": "object",
      "required": ["imagePath", "verified"],
      "properties": {
        "imagePath": { "type": "string" },
        "gbProductRef": { "type": "string" },
        "flowCharacterName": { "type": "string" },
        "verified": { "type": "boolean" },
        "verifiedAt": { "type": "string" }
      }
    }
  }
}
