{
  "$schema": "https://schemas.realneat.dev/brand-pack/v2.json",
  "id": "bromont",
  "name": "MARS Bromont CCI",
  "version": "1.0.0",
  "applies_to": "MARS Bromont CCI 2026 livestream graphics (cci4*-L, cci4*-S, cci3*-L, U25 cci3*-L, cci2*-L, U25 cci2*-L, Bromont Rising)",
  "framerate_assumption": 30,
  "_doc": "Brand pack for the June 4–7, 2026 MARS Bromont CCI livestream. Core palette (indigo #2B328D + teal #59C6A8) was pixel-extracted from the official Bromont logo SVGs hosted on bromonthorsetrials.com — these are contractual, not inferred. Anniversary gold and motion/type tokens were inferred from event context and need ratification. Show pack: inherits NOTHING from hc.json — Bromont owns its own identity, not an H&C distribution. The 2026 edition is the 50th anniversary of the 1976 Montreal Olympics at this venue, hence the gold-anniversary accent grafted onto the contractual indigo/teal core.",

  "palette": {
    "primary":           "#2B328D",
    "primary_dim":       "#1B2061",
    "primary_text_on":   "#FFFFFF",
    "_primary_doc":      "Bromont Indigo — extracted directly from the MARS Bromont logo SVG (fill=\"#2B328D\"). This is the contractual wordmark color used on every Bromont logo variant (CCI4* header, Petit, Horse Trials master, and the MARS lockup itself). Use for lower-third backgrounds, the MARS title lockup, scoreboard chrome.",

    "secondary":         "#59C6A8",
    "secondary_dim":     "#2F8E73",
    "secondary_text_on": "#1B2061",
    "_secondary_doc":    "Bromont Teal — extracted from the MARS Bromont logo SVG (fill=\"#59C6A8\"). The horse silhouette, the four CCI stars, the divider hairlines. Used for accents, phase markers, live indicators, the gold-replacement role on celebratory graphics.",

    "ink":               "#231F20",
    "ink_dim":           "#0A0A0B",
    "_ink_doc":          "Bromont Ink — extracted from BROMONT_Horse_Trials_Logo.svg (fill=\"#231F20\"). Used for the leaping-horse silhouette in the Horse Trials master mark. Reserve for sub-brand contexts and small-scale type where indigo would muddy.",

    "tertiary":          "#C8A557",
    "tertiary_dim":      "#8A6E2C",
    "tertiary_text_on":  "#1B2061",
    "_tertiary_doc":     "Olympic Gold — accent color for the 2026 50th-anniversary lockup and the Red, White & Gold June 4 Ski Hill fundraiser. Inferred, not extracted from logo art. Use sparingly: anniversary stings, medal moments, podium graphics. Never on the same lower third as a phase color.",

    "field_cream":       "#F5EFE1",
    "field_cream_dim":   "#E6DEC7",
    "_field_cream_doc":  "Parchment / program-book cream. Title cards, intermission graphics, brand-book body. Pairs with indigo type for an editorial register.",

    "neutral_charcoal":  "#1A1B26",
    "neutral_slate":     "#2C2E3D",
    "neutral_smoke":     "#5A5E70",
    "surface_card":      "#0F1019",
    "surface_card_a92":  "rgba(15,16,25,0.92)",
    "stroke_hairline":   "#2A2C3D",
    "_neutral_doc":      "Indigo-shifted neutrals — built on a #2B328D hue rather than warm grey, so dark surfaces read as part of the indigo identity, not as generic broadcast chrome.",

    "phase_dressage":    "#7B5BAA",
    "phase_xc":          "#A4733A",
    "phase_sj":          "#3E8B5C",
    "_phase_doc":        "Phase tints for scoreboard rails and section IDs. Dressage = mauve (dressage arena ribbon tradition). XC = saddle leather. SJ = arena turf. These read as broadcast convention rails, distinct from the indigo/teal brand wrapper — never used for typography.",

    "ok_green":          "#3FB37F",
    "warn_amber":        "#E2B248",
    "danger_red":        "#D34A45",
    "live_red":          "#FF3B3B",
    "_status_doc":       "Live pip + result status. live_red is the unambiguous LIVE indicator color — distinct from any brand color so viewers cannot confuse it with the wrapper."
  },

  "type": {
    "display_family":          "Fraunces",
    "display_family_fallback": "Source Serif Pro, Iowan Old Style, 'Times New Roman', serif",
    "_display_doc":            "Fraunces — variable serif designed for editorial display. Carries 'heritage' without being old-fashioned. Used in the brand book and on ceremonial / title-card graphics. Available via Google Fonts.",

    "primary_family":          "Inter",
    "primary_family_fallback": "system-ui, -apple-system, 'Segoe UI', sans-serif",
    "_primary_doc":            "Inter — UI sans for body + ALL broadcast graphics (lower thirds, scoreboards, leaderboards). Tabular numerics, French diacritics, AAA legibility at broadcast viewing distance. Use weight 600 for rider names, 500 for context, 400 for body.",

    "mono_family":             "JetBrains Mono",
    "mono_family_fallback":    "ui-monospace, Menlo, Consolas, monospace",
    "_mono_doc":               "JetBrains Mono — scores, times, fault counts. Monospace ensures stable column alignment when numbers tick during XC.",

    "scale": {
      "micro_pt": 11, "small_pt": 13, "body_pt": 16, "lead_pt": 18,
      "h6_pt": 20,    "h5_pt": 24,    "h4_pt": 30,   "h3_pt": 38,
      "h2_pt": 48,    "h1_pt": 64
    },
    "weight":   { "regular": 400, "medium": 500, "semibold": 600, "bold": 700, "extrabold": 800 },
    "tracking_em": { "tight": -0.02, "normal": 0, "wide": 0.06, "extrawide": 0.14 },
    "leading": { "tight": 1.1, "normal": 1.45, "loose": 1.6 },

    "_bilingual_doc": "All persistent graphics MUST support EN/FR. Pre-typeset both at design time (no auto-switch). French strings ~20% longer — design lower-third with truncation allowance. Examples: 'CROSS COUNTRY' → 'CROSS COUNTRY' (no change), 'SHOW JUMPING' → 'SAUT D'OBSTACLES' (longer)."
  },

  "spacing": {
    "unit_px": 4,
    "card_pad_px": 24,
    "card_pad_compact_px": 16,
    "row_gap_px": 8,
    "col_gap_px": 16,
    "stripe_width_px": 6,
    "border_radius_px": 2,
    "_radius_doc": "Near-square corners. Heritage / classical feel. NOT rounded — rounded reads as consumer-tech, not equestrian-traditional."
  },

  "motion": {
    "ease_in":      "cubic-bezier(0.32, 0, 0.67, 0)",
    "ease_out":     "cubic-bezier(0.33, 1, 0.68, 1)",
    "ease_in_out":  "cubic-bezier(0.65, 0, 0.35, 1)",
    "ae_temporal_ease": { "in_pct": 33, "out_pct": 67 },
    "frame_quick":    8,
    "frame_standard": 14,
    "frame_relaxed":  22,
    "frame_drama":    36,
    "anticipation_frames": 3,
    "follow_through_frames": 5,
    "respect_reduced_motion": true,
    "_doc": "Slightly slower than the H&C pack — Bromont's heritage tone calls for more confident, less frenetic motion. frame_drama=36f used for medal / podium / anniversary moments."
  },

  "safe_area": {
    "inset_pct":      5,
    "title_safe_pct": 10,
    "_doc": "FEI broadcast standard — keep ALL text within 10% inset. The bottom 1/4 of frame must be clear of permanent graphics during XC (commentators reference fence numbers in lower frame)."
  },

  "bug": {
    "position":     "top-right",
    "inset_pct":    5,
    "size_px":      52,
    "asset_url":    "assets/brand/bromont/bug.svg",
    "_doc": "Slightly larger than H&C bug (40→52) — the Bromont mark needs to sit comfortably alongside the MARS title-sponsor lockup top-left."
  },

  "logo": {
    "primary_svg":           "assets/brand/bromont/MARS-Bromont-LOGO-2020-TALL_SIGNAGE_RGB.svg",
    "primary_svg_url":       "https://bromonthorsetrials.com/wp-content/uploads/2024/04/MARS-Bromont-LOGO-2020-TALL_SIGNAGE_RGB.svg",
    "header_svg":            "assets/brand/bromont/BROMONT_CCI4__Logo-Header.svg",
    "header_svg_url":        "https://bromonthorsetrials.com/wp-content/uploads/2024/05/BROMONT_CCI4__Logo-Header.svg",
    "wordmark_svg":          "assets/brand/bromont/BROMONT_Horse_Trials_Logo.svg",
    "wordmark_svg_url":      "https://bromonthorsetrials.com/wp-content/uploads/2024/05/BROMONT_Horse_Trials_Logo.svg",
    "anniversary_lockup":    "assets/brand/bromont/MARS-Bromont-50th-Lockup.svg",
    "min_width_px":          120,
    "clear_space_em":        1.0,
    "_doc": "Pull canonical SVGs from bromonthorsetrials.com on first build, mirror into streaming-setup/assets/brand/bromont/ for offline reliability. The 50th-anniversary lockup needs to be designed (placeholder) — see open questions in brand book."
  },

  "sponsor": {
    "title_sponsor": "MARS EQUESTRIAN",
    "title_sponsor_url": "https://www.marsequestrian.com/",
    "title_lockup_rule": "Use the canonical MARS Bromont lockup SVG (MARS-Bromont-LOGO-2020-TALL_SIGNAGE_RGB.svg) — it already contains the contractual MARS + horse-silhouette + 4-star + BROMONT CCI composition in indigo (#2B328D) and teal (#59C6A8). MARS in this lockup renders in INDIGO, not Mars-corporate red. Never substitute Mars-red MARS for the event lockup. Minimum height 80px on broadcast graphics; clear-space = the height of the 'M' in MARS on all four sides. MARS lockup MUST appear on every lower-third, scoreboard rail, and full-screen graphic.",
    "sanctioning_bodies": ["FEI", "Equestrian Canada", "USEF"],
    "tier_partners": [
      { "name": "Government of Canada (Sport Canada)", "url": "https://www.canada.ca/" },
      { "name": "Government of Quebec",                "url": "https://www.quebec.ca/" },
      { "name": "Ville de Bromont",                    "url": "https://www.bromont.net/" },
      { "name": "Parc Équestre Olympique de Bromont",  "url": "https://parcequestreolympiquebromont.org/" }
    ],
    "official_partners": [
      { "name": "Buckeye Nutrition",     "url": "https://www.buckeyenutrition.com/" },
      { "name": "Assante Quebec",         "url": "https://www.assantequebec.com" },
      { "name": "Cheval Quebec",          "url": "https://www.cheval.quebec/" },
      { "name": "CrossCountry App",       "url": "https://www.crosscountryapp.com/" },
      { "name": "Deragon",                "url": "https://www.deragon.com/" },
      { "name": "Devoucoux",              "url": "https://north-america.devoucoux.com/en/" },
      { "name": "Eventing Nation",        "url": "https://eventingnation.com/" },
      { "name": "Equisafe",               "url": "https://eqisafe.com/" },
      { "name": "Equestrian Canada",      "url": "https://equestrian.ca/" },
      { "name": "Kingsleigh Equine",      "url": "https://shopkingsleighequine.com" },
      { "name": "LeMieux",                "url": "https://www.lemieux.com/ca/" },
      { "name": "Metro",                  "url": "https://www.metro.ca/" },
      { "name": "Omega Alpha",            "url": "https://www.omegaalpha.ca/" },
      { "name": "St-Hubert",              "url": "https://www.st-hubert.com/" },
      { "name": "Thule",                  "url": "https://www.thule.com/fr-ca/" },
      { "name": "Tim Hortons",            "url": "https://locations.timhortons.ca/en/qc/bromont/1-rue-st-denis/" },
      { "name": "Tourisme Bromont",       "url": "https://tourismebromont.com/en/" },
      { "name": "Voltaire Design",        "url": "https://voltairedesign.com/us/" }
    ],
    "_doc": "Sponsor reel sequencing: TITLE (MARS, 4s) → TIER 1 (government/venue, 1.5s each) → OFFICIAL PARTNERS (alpha order, 1.2s each). Total reel ~38s. Loop between divisions, not during runs."
  },

  "voice": {
    "tagline_options": [
      "50 Years of Olympic Legacy",
      "Where Champions Are Made",
      "An equestrian triathlon, set in the Bromont hills",
      "Le concours complet — au cœur des Cantons-de-l'Est"
    ],
    "ceremonial_register": "warm, confident, heritage-aware — never corporate. Honor the 1976 Olympic site. Acknowledge Sue Ockendon and the volunteer-driven nature of the event.",
    "live_call_register":  "athletic, accurate, present-tense. Cite rider home town as in press releases ('Dunham, Quebec's Colleen Loach'). Lead with the horse-and-rider pair, not just the rider.",
    "social_register":     "playful + hospitality-forward. The site's actual voice: 'Bring your horses, your family, your golf clubs and a healthy appetite.' Bilingual EN/FR.",
    "anti_patterns": [
      "Generic American-pro-sports superlative talk ('ELITE FIELD', 'LIVE EXCLUSIVE')",
      "Tech-bro vocabulary ('platform', 'experience', 'leverage')",
      "Anglicization of Bromont, Quebec, or French names",
      "Implying MARS Equestrian is just a logo (they have a 90-year horse history — honor it)"
    ],
    "_voice_doc": "Bromont voice is Quebec hospitality + Olympic heritage + serious eventing journalism. The press releases on bromonthorsetrials.com are the canonical source — match that tone."
  },

  "ae_template_bindings": {
    "_doc": "How AE motion templates and OBS browser sources read this pack.",
    "lower_third.bg_color":         "palette.primary",
    "lower_third.text_color":       "palette.primary_text_on",
    "lower_third.accent_stripe":    "palette.phase_dressage|xc|sj (phase-conditional)",
    "lower_third.sponsor_stripe":   "palette.secondary",
    "lower_third.font_family":      "type.primary_family",
    "lower_third.name_weight":      "type.weight.semibold",
    "lower_third.context_weight":   "type.weight.medium",
    "lower_third.intro_frames":     "motion.frame_standard",
    "lower_third.outro_frames":     "motion.frame_relaxed",

    "scoreboard.surface":           "palette.surface_card_a92",
    "scoreboard.rail_color":        "palette.phase_<current>",
    "scoreboard.title_font":        "type.display_family",
    "scoreboard.stat_font":         "type.mono_family",
    "scoreboard.title_size_pt":     "type.scale.h4_pt",

    "title_card.bg":                "palette.field_cream",
    "title_card.text":              "palette.primary",
    "title_card.accent":            "palette.secondary",
    "title_card.font":              "type.display_family",

    "live_pip.fill":                "palette.live_red",
    "live_pip.pulse_frames":        "motion.frame_quick",

    "bug.asset":                    "bug.asset_url",
    "bug.position_corner":          "bug.position",

    "sponsor_reel.title_dur_f":     120,
    "sponsor_reel.tier_dur_f":      45,
    "sponsor_reel.partner_dur_f":   36
  },

  "swap_rules": {
    "_doc": "Bromont is a leaf brand pack. Nothing inherits from it. Year-over-year changes (anniversary lockups, prize pool callouts) live in show overrides — to be created post-2026.",
    "overridable": [],
    "_locked": "Everything. Bromont's identity is contractual."
  },

  "confidence": {
    "_doc": "Source confidence per section. HIGH = directly extracted from official brand artwork. MEDIUM = inferred from consistent signals. LOW = best-guess, needs Sue Ockendon ratification.",
    "palette.primary":     "HIGH — fill=\"#2B328D\" extracted directly from MARS-Bromont-LOGO-2020-TALL_SIGNAGE_RGB.svg. Same hue (with rounding variants #2B328B, #2C358A, #2B318B) appears in every Bromont logo SVG on the site.",
    "palette.secondary":   "HIGH — fill=\"#59C6A8\" extracted directly from MARS-Bromont-LOGO-2020-TALL_SIGNAGE_RGB.svg (horse silhouette, four CCI stars, divider hairlines).",
    "palette.ink":         "HIGH — fill=\"#231F20\" extracted from BROMONT_Horse_Trials_Logo.svg (jumping horse silhouette in the series master mark).",
    "palette.tertiary":    "MEDIUM — inferred for the 2026 50th anniversary 'Red, White & Gold' celebration. Not extracted from logo art.",
    "type.display":        "MEDIUM — Fraunces chosen for editorial heritage feel, not specified by client.",
    "type.primary":        "HIGH — Inter is broadcast-graphics best practice for legibility at viewing distance.",
    "logo.primary_svg":    "HIGH — official SVG published on bromonthorsetrials.com, color values pixel-extracted.",
    "sponsor.title_lockup_rule": "HIGH on composition (the lockup SVG IS the rule); MEDIUM on minimum-size and clear-space — those are inferred from the lockup's internal geometry, not from a Mars contract.",
    "voice.ceremonial":    "HIGH — distilled from bromonthorsetrials.com press releases.",
    "voice.social":        "HIGH — direct quotes from event site."
  }
}
