Files

91 lines
4.2 KiB
Python
Raw Permalink Normal View History

2026-11-09 11:51:56 -06:00
"""MPM brand tokens — the single source for colours, fonts and the document-type
and customer-code registries. Figures (figs.py) import colours from here so a
palette change lands everywhere at once.
See MPM_Document_Standard.md §3 (Numbering) and §6 (Visual system).
Fonts and logos are NOT stored here — they live in DOCUMENTATION PROJECT/_ASSETS/mpm/.
"""
from pathlib import Path
# ---- shared assets (DOCUMENTATION PROJECT/_ASSETS/mpm) ----------------------
def _find_assets():
for p in Path(__file__).resolve().parents:
if (p / "_ASSETS" / "mpm").is_dir():
return p / "_ASSETS" / "mpm"
raise FileNotFoundError("Could not find _ASSETS/mpm above _STANDARDS — see _ASSETS/README.md")
ASSETS = _find_assets()
FONTS_CSS = ASSETS / "fonts" / "fonts_embed.css" # generated by _ASSETS/mpm/fonts/make_embed.py
LOGO_HEADER = ASSETS / "logos" / "png" / "Logo-Gold-Black.png" # gold icon + dark text, on white
LOGO_ON_DARK = ASSETS / "logos" / "png" / "Logo-Gold-White.png" # dark title blocks / banners
LOGO_MONO = ASSETS / "logos" / "png" / "Logo-Black-Text.png" # single-colour black print
TAGLINE = "Born to Innovate. Built to Last."
# ---- palette (official MPM colour system; see _ASSETS/README.md) -----------
INK = "#232022" # Dark Shade · text, dark callouts, primary strokes
GOLD = "#DCBB4F" # Middle Gold · brand accent: rules, step numbers, header underline
KICK = "#998643" # Dark Gold · kicker text, labels, FIG/TABLE tags (gold for text on light backgrounds)
MUTE = "#849698" # Light Accent · secondary text, ledes, captions, footer
CREAM = "#F5F1EC" # meta cells, notes, calc blocks
LINE = "#E6E0D8" # table rules, figure frames
KEYBG = "#FBF6E6" # highlighted ("key") table row / KPI tile
RED = "#A42D20" # warnings, failing values, minimum/limit lines
REDBG = "#F7E9E7"
GRN = "#3F6B3A" # PASS, passing values
GRNBG = "#EAF1E6"
BLU = "#2F5A8A" # data-series only (e.g. blue channel); never for UI chrome
GRY = "#B8B1A8" # de-emphasised data series
FOOT = MUTE # running footer text (Light Accent)
# ---- type ----------------------------------------------------------------
FONT_HEAD = "Montserrat" # headings, kickers, labels, captions
FONT_BODY = "Open Sans" # body copy
FONT_MONO = "JetBrains Mono" # numbers, dimensions, part numbers, calcs
# ---- document types (TYPE field of TYPE-CUST-SUBJ-NN) ----------------------
# code: (header label, kicker label, default classification)
TYPES = {
"INS": ("Installation Guide", "Installation guide", "customer"),
"SOP": ("Standard Operating Procedure", "Procedure", "internal"),
"TN": ("Technical Note", "Technical note", "customer"),
"BOM": ("Bill of Materials", "Bill of materials", "internal"),
"SVY": ("Site Survey", "Site survey", "customer"),
"TAP": ("Technical Action Plan", "Technical action plan", "confidential"),
"DWG": ("Drawing", "Drawing", "customer"),
"TSB": ("Technical Service Bulletin", "Service bulletin", "customer"), # internal edition: classification="internal"
"PRO": ("Proposal", "Proposal", "confidential"),
"SOW": ("Statement of Work", "Statement of work", "customer"),
"WO": ("Field Work Order", "Work order", "internal"),
}
# ---- customer / department codes (CUST field) -------------------------------
# Add new codes here AND in registry.md before issuing a number.
CUSTOMERS = {
"LT": "LakeTran",
"NSH": "Nashville MCC (WeGo)",
"CMT": "CommTran",
"OMT": "Omnitrans",
"SOR": "SORTA / Metro",
"COTA": "COTA",
"GIL": "GILLIG",
# internal departments / company-wide
"MPM": "Message Point Media", # company-wide / product documents
"IT": "MPM IT",
"ENG": "MPM Engineering",
"OPS": "MPM Field Operations",
"QA": "MPM Quality",
}
# provider block for PRO / SOW / WO parties
PROVIDER = {"name": "Message Point Media of Alabama, Inc", "contact": "Jason Stedwell, Director of Technical Services",
"address": "Irondale, AL", "web": "messagepoint.tv"}
CLASSIFICATIONS = {
# key: footer suffix shown after the context ("" = no marking)
"public": "",
"customer": "",
"internal": "INTERNAL USE",
"confidential": "CONFIDENTIAL",
}