css: split cassandra.css into per-section files

Splits the 2571-line cassandra.css into ten focused stylesheets:
tokens (palette + fonts), layout (chrome), panels, dashboard,
portfolio, log-chat, auth, settings, news, public. base.html and
public_base.html load only what they need; auth pages (login,
verify, unsubscribe confirm) load tokens + layout + auth.

Brand drift-detection test repointed at tokens.css (where the
palette now lives). 291 tests still pass.
This commit is contained in:
Giorgio Gilestro 2026-05-28 12:31:29 +02:00
parent 78ce8c8b0d
commit 355593c4f7
19 changed files with 2556 additions and 2585 deletions

View file

@ -7,13 +7,13 @@ into user-visible chrome (page titles, email headers, OpenRouter referer)
must read `BRAND_NAME` from here; do not hard-code the string.
Internal identifiers (`cassandra_session` cookie, pyproject package name,
SQLAlchemy GET_LOCK keys, file `cassandra.css`, env var `CASSANDRA_TOKEN`)
keep the legacy name on purpose renaming them would invalidate live
sessions / advisory locks / configs for zero brand benefit.
SQLAlchemy GET_LOCK keys, env var `CASSANDRA_TOKEN`) keep the legacy
name on purpose renaming them would invalidate live sessions /
advisory locks / configs for zero brand benefit.
The colour palette below is hand-authored in CSS as well; a drift-
detection test (`tests/test_branding_consistency.py`) parses
`cassandra.css` and asserts every variable matches. Update both or
`tokens.css` and asserts every variable matches. Update both or
neither.
The light theme is the *default* everywhere dashboard `:root` block,