# Theme System How the look of an installation is chosen and applied. Setting up a platform's theme and branding step by step: [MULTI_PLATFORM_INSTANCES.md](MULTI_PLATFORM_INSTANCES.md), sections 3, 5 and 6. Last checked against the code: 2026-10-19 (branch `laravel-11`). ## Where the active theme comes from 1. `platform/theme.php` in the installation's platform folder: one theme definition with its own `id`. When it exists, `App\Providers\PlatformServiceProvider` registers it in `themes.themes.` and makes it the active theme. 2. Otherwise `config('themes.active')`, which is `TIMEBANK_THEME` in `.env` (default `timebank_cc`), one of the themes in `config/themes.php`: `timebank_cc`, `uuro`, `vegetable`, `yellow` (template `config/themes.php.example`, from which `deploy.sh` creates the file and `config:merge` adds new keys). A theme definition has `name`, `description`, `logos`, `colors` and `typography`. `colors` needs every key the templates have (`primary`, `secondary`, `button-secondary`, `button-secondary-text`, `accent`, `success`, `warning`, `danger-dark`, `danger`, `danger-light`, `info`, `brand`, `background`, `border`, `surface`, `reaction`, `reaction-hover`, `text`, `logo`): a missing key leaves its CSS variable empty. Copy a whole block from `config/themes.php.example` when you make a theme. ## How it is applied: at runtime, one build for all themes - `theme_css_vars()` turns the active theme's colours and typography into CSS custom properties (`--color-primary-500: 37 99 235;`, `--font_family_body: ...`). The layouts (`layouts/app`, `layouts/guest`) put them in a `