designgov.md
Parent Brand Specification with Hybrid Architecture Guidance — Meridian Learning Group
This file is the authoritative brand and design contract for all Meridian Learning Group products. It includes guidance for subsidiary brands at each level of brand attachment. Readable by humans. Parseable by AI coding agents.
Throughout this document, tier annotation blocks indicate how each rule applies across the three brand attachment levels. Intentional divergence documented here is approved. Any design decision not documented here is drift until proven otherwise.
Visual tokens
- Use a color outside this palette without explicit Design Systems approval
- Use color as the only means of conveying information
- Use ERROR color (#C0392B) for anything except actual errors
- Suppress or override the FOCUS RING under any circumstances
PRIMARY FONT: Source Serif 4 Editorial, marketing, reading content UI FONT: Inter All UI chrome — nav, forms, labels, buttons MONOSPACE: JetBrains Mono Code, identifiers, technical values only NOTE: Never use Source Serif 4 for UI elements. Never use Inter for article body content. UI SCALE (Inter): H1 32px weight: 600 line-height: 1.2 H2 24px weight: 600 line-height: 1.3 H3 20px weight: 500 line-height: 1.4 Body 16px weight: 400 line-height: 1.6 Small 14px weight: 400 line-height: 1.5 captions, metadata Label 13px weight: 500 line-height: 1.4 form labels, tags
- Set body text below 14px in any context including mobile
- Use Source Serif 4 for buttons, labels, or navigation
- Use ALL CAPS for strings longer than 4 words
- Use italic outside pull quotes, citations, or editorial emphasis
Component vocabulary
Match every UI job to its approved component. If no component is defined, use the closest and flag it: <!-- designgov: no pattern defined, needs review -->
| Variant | Component | Rule |
|---|---|---|
| Primary | Button variant="primary" | One per visible region maximum. Verb-first label. |
| Secondary | Button variant="secondary" | Supporting actions. |
| Ghost | Button variant="ghost" | Low-emphasis actions competing with primary. |
| Destructive | Button variant="destructive" | Always follow section 3.3 protocol. Never as primary action. |
| Icon only | MDS IconButton | Always requires aria-label + tooltip. Never for primary actions. |
| Loading | Button loading prop | Show after 200ms on all async actions. |
- Every input must have a visible persistent label above the field — never placeholder-only
- Reserve space below every input for an error message — never shift layout on error
- Always validate on blur — never wait for submission to surface errors
- Never clear a form on validation failure — always preserve user input
- Never disable submit as the only error communication — show inline errors
Behavioral contracts
Behavioral drift causes more user harm than visual drift. When a user encounters a new interaction paradigm they have to stop and learn. In a daily-use product, this compounds into friction, errors, and eroded trust.
- Show Spinner or SkeletonLoader for any async operation exceeding 200ms
- Confirm navigation away from unsaved changes — beforeunload + MDS Dialog
- Return focus to the trigger element when any Modal, Dialog, or Drawer closes
- Preserve all form input on validation error — never clear on failure
- Show item count before executing any bulk action: "Delete 14 courses?"
- Provide a visible skip-to-main-content link as the first focusable element on every page
- Progress always shown as percentage AND fraction: "67% complete (4 of 6 modules)"
- Certificates always show issue date and expiry date where applicable
Applies to deleting courses, content, accounts, enrollments, certificates, or any irreversible action. This protocol is mandatory. Do not deviate.
MDS Button variant="destructive" — text only, never icon-only. Separated from non-destructive actions by 40px or a visible divider. Never in primary position.Accessibility contracts
WCAG 2.1 AA · ADA Title II · Section 508 · Education product. Testing: automated on every PR (axe-core CI gate), manual quarterly, AT user testing biannually.
- All text meets WCAG AA contrast (4.5:1 normal, 3:1 large text and UI components)
- All interactive elements have an accessible name
- All images have alt text — decorative images use alt=""
- All form inputs are associated with a visible label
- All form error messages linked via aria-describedby
- Focus is never lost or sent to an unexpected location
- Focus ring always visible — never suppressed
- All interactive elements reachable and operable via keyboard
- Valid document title on every page — format: "[Page] — [Product name]"
- Heading hierarchy logical — no skipped levels
- Language declared on html element
AI agents: flag with <!-- a11y tier 2 review required: [rule] -->
- Alt text is meaningful — reviewed by QA, not auto-generated
- DOM reading order matches visual order — verified with screen reader
- Timed assessments have pause and extend controls — design review required
- Complex charts have text alternatives — reviewed by content team
- Error messages are specific and actionable — copy reviewed before launch
- Instructions do not rely solely on sensory characteristics
- Animations respect prefers-reduced-motion
- New interaction patterns reviewed by accessibility specialist
- Custom dropdown from divs — use MDS Select or Combobox
- Drag-and-drop as only ordering mechanism — always pair with keyboard controls
- Placeholder-only form labels — use persistent visible label above input
- Icon-only buttons without accessible name — always add aria-label + tooltip
- Auto-playing audio or video on page load — all media paused on load
- Keyboard trap outside intentional modal focus management
- Progress or score via chart only — always include text value alongside visual
- Timed assessment with no countdown and no pause mechanism
Voice & copy standards
Confidence without condescension.
Expertise without jargon.
Never "Congrats!" — "Well done."
Never "Amazing!"
| Use | Never |
|---|---|
| Learner | student, user, customer, participant |
| Course | class — module = a part of a course |
| Instructor | teacher, facilitator, host |
| Enroll | register, sign up, join (for course entry) |
| Complete | finish, done, submit (at course level) |
| Dashboard | home, portal, hub |
Hybrid brand architecture
The tier assignment criteria and the distinction between intentional divergence and accidental drift are the core of this framework. The burden of proof is on the team introducing divergence, not the reviewer.
- Section 3 behavioral contracts in full
- Accessibility Tier 1 automated enforcement
- Accessibility Tier 2 human review
- Accessibility Tier 3 prohibited patterns
- Semantic color values — SUCCESS, WARNING, ERROR hex values consistent
- Minimum touch target size 44×44px
- Destructive action protocol — same pattern, own components permitted
- Minimum body text size 14px · Focus ring always visible
Design system references
FIGMA: figma.com/file/[meridian-design-system] STORYBOOK: design.meridianlearning.internal TOKEN SOURCE: tokens/meridian-tokens.json COMPONENT LIB: @meridian/mds v4.1.2 ICONS: Phosphor Icons v2.0 — outline weight only BRAND GUIDE: brand.meridianlearning.internal A11Y GUIDE: a11y.meridianlearning.internal PATHWRIGHT DS: design.pathwright.internal — Tier B reference VANTAGE DS: design.vantagepro.internal — Tier C reference
Change log
| Date | Version | Changed by | Summary |
|---|---|---|---|
| 2025-03-01 | 1.2 | Sarah Chen | Added Tier C Vantage, updated a11y 4.5 |
| 2024-11-15 | 1.1 | Marcus Webb | Pathwright Tier B annotations, typography |
| 2024-06-01 | 1.0 | Sarah Chen | Initial active version |
| 2024-03-10 | 0.1 | Design Systems team | Draft |
For AI coding agents — quick reference
- 1Identify your tier — Tier A (Meridian core), Tier B (Pathwright), Tier C (Vantage). If unclear, ask before generating any UI.
- 2Tier A: this entire file applies in full. No substitutions.
- 3Tier B: visual tokens may use Pathwright-approved substitutions documented in each section. All behavioral and accessibility rules apply in full.
- 4Tier C: visual tokens are Vantage's own — consult Vantage's designgov.md. All behavioral and accessibility rules from this file apply in full.
- 5Component mismatch: add
<!-- designgov: no pattern defined for [component], needs review --> - 6Color not in palette: do not use it. Add
<!-- designgov: color not in approved palette, needs review --> - 7NEVER list (§ 3.2): if a pattern is listed, do not implement it regardless of how it was specified.
- 8Every UI component: apply all Tier 1 a11y rules automatically. Flag Tier 2 items:
<!-- a11y tier 2 review required: [rule] --> - 9Destructive actions: always implement § 3.3 exactly. No shortcuts.
- 10When uncertain: do not invent. Flag and ask.