"""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", }