Most of the app's colors are driven by --azable-* CSS custom properties in apps/web/src/app/globals.css, but a recent color-theme audit found hardcoded hex values bypassing the token system in a couple of places (components/map/cluster-utils.ts, leaflet popup/zoom-control overrides) — both were fixed, but that was found by manual grep, not a lint rule, so nothing prevents new hardcoded hex from creeping back in.
To do: add a lint rule (e.g. a no-restricted-syntax ESLint rule matching hex-color string literals in .ts/.tsx, with the CSS files themselves exempted) or a CI grep check to catch hardcoded hex colors that bypass the --azable-* tokens.
Most of the app's colors are driven by
--azable-*CSS custom properties inapps/web/src/app/globals.css, but a recent color-theme audit found hardcoded hex values bypassing the token system in a couple of places (components/map/cluster-utils.ts, leaflet popup/zoom-control overrides) — both were fixed, but that was found by manual grep, not a lint rule, so nothing prevents new hardcoded hex from creeping back in.To do: add a lint rule (e.g. a
no-restricted-syntaxESLint rule matching hex-color string literals in.ts/.tsx, with the CSS files themselves exempted) or a CI grep check to catch hardcoded hex colors that bypass the--azable-*tokens.