A theme engine that turns brand choices into the complete token set the customer-facing portal renders with. The brand colour is decomposed in HSL and used three ways: as the accent for buttons and rules, as hue-tinted neutrals for page, cards, hairlines and text, and as the dark chrome band behind the logo and hero. Tenants who set granular tokens explicitly still win; the derivation only fills what they have not chosen.
Also called: white label client portal · my logo and colours · branded customer portal
Pick a logo and a colour and the whole document re-skins
Buttons, headings, hairlines, greys and the dark hero band are all derived from your brand colour, not a logo bolted onto somebody else's palette. The neutrals are hue-tinted so the greys agree with the logo instead of fighting it, which is the difference between a document that looks designed and one that looks templated. Your customer sees their builder; the platform is never on the page.
No brand colour can produce a page nobody can read
Text and accent colours are picked by measuring real contrast against the surface each one sits on and stepping lightness until it clears the bar. Gold at the same nominal lightness as navy is far brighter to the eye, so any fixed rule passes half the colour wheel and fails the other half. The dashboard progress fill deliberately does not use the accent, because on a navy-branded builder a navy fill on a navy band is invisible — which means you never have to test your own palette.
Three type slots, from a list that cannot produce a bad document
A display face for your name and headings, a body face for everything the customer reads, and a mono face for labels, quantities and dollar figures. The list is curated rather than the whole of Google Fonts, with condensed industrial faces leading the display options, because a builder choosing from 1,800 families lands on something that hurts. Faces load at runtime for the portal only, each with a real fallback stack.
Documents render light, whatever the customer's phone is set to
The whole customer funnel, the invoice and the subcontractor portal force light mode. Left to inherit, a visitor with dark mode on gets white text inside white form fields — the intake form that looks blank but is actually full. An invoice is a document: it should look the same on every screen and on paper.
- 1portalThemeFromBranding derives the palette; the provider redefines the CSS variables on a wrapper
- 2Existing markup written against those variable names re-skins itself with no rewrite
- 3The admin's live preview and the customer's page call the same pure function
- 4Every customer branch (login, estimate, hold, dashboard, success) is themed by one mount at the root
Every builder's customer opened a quote wearing the platform's palette with the builder's logo bolted on top, which tells a buyer at the precise moment they are deciding that their builder outsourced the document. The portal takes the builder's own colours across the whole page. Brand-agnostic had to mean more than swapping a logo: a builder picks two colours and the document re-skins, with no combination able to produce unreadable text or a muddy surface. Even the greys are tinted toward the brand hue so they agree with the logo instead of fighting it, and it holds up identically for teal, barn red, forest green or navy.
- Customer surfaces carrying the platform's palette
- Logo-only branding that still reads as someone else's product
- A brand colour producing an unreadable or muddy page
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →