Skip to main content

Branding configuration

Generates the document imported by Portal customisation → Branding → Import configuration. Output a single JSON object. Every field is optional: whatever you omit keeps its current value in the portal. Nothing is written to the database on import — the operator reviews the result in the form and presses Save.

Document

kind is optional, but when present it must be "branding": a document declaring another kind is refused, so a coaching document pasted into the branding tab fails loudly instead of half-applying. Without kind the import still runs, with a warning that the type could not be verified.

Fields

style

  • bold — serif display headings, large type, gradient accents, dark position posters.
  • minimal — headings drop to the body font at reduced sizes, gradients collapse to flat colour, white cards instead of dark posters.
This is a single switch across the whole portal; there is no per-page override. A portal with its own theme CSS usually wants minimal, so the theme is not fighting the gradients.

Colour format

Colours are space-separated HSL channels, not hex and not hsl(...):
Convert hex to HSL before writing the document (round each channel to a whole number). The values are injected straight into CSS custom properties, so an invalid string produces an unstyled portal rather than an error. A portal theme (theme CSS) reads these through var(--accent), so the brand colour set here stays the single source of truth even when the pages are restyled.

Speech term boosting

Domain vocabulary that speech-to-text would otherwise mishear. Supply the words a learner or candidate will actually say out loud that a general-purpose recogniser gets wrong: clinical terms, drug names, product names, the organisation’s own name. Constraints, enforced on import exactly as the form enforces them:
  • 5 to 50 characters per term. Shorter or longer terms are dropped and reported. This rules out most short abbreviations — ECG is too short to qualify, electrocardiogram is fine.
  • Maximum 100 terms. Beyond that the first 100 are kept and the rest reported.
  • Only supported in some speech languages. The branding tab lists which; a term set for an unsupported language is simply inert.
Quality matters more than quantity. A long list of common words dilutes the boost and can make recognition worse, so prefer 10–40 genuinely domain-specific terms over a hundred generic ones. Write each term as it is spoken, in normal capitalisation.

Not in this document

These are set in the admin by hand; the import neither reads nor changes them:

Rules

  • Reject the document rather than guess if style or report_template is not one of its values.
  • Do not invent colours to fill the palette. Supply only what the brand defines and let the rest keep their current values.
  • Check contrast between primary and primary_opposite before emitting.
  • Only reference logos that are already hosted at a public https URL.