"""Brand single source of truth — name, domain, palette, fonts. The product is **Read the Markets** (read.markets). "Cassandra" remains the in-product *AI persona* (system prompt + chat label) — distinct from the brand, the way Slackbot is distinct from Slack. Anything that crosses 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. 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 neither. The light theme is the *default* in emails — mail clients can't read `localStorage`, so we can't replicate the dashboard's user-toggled theme. Clients that honour `prefers-color-scheme` get the dark palette via media query. """ from __future__ import annotations BRAND_NAME = "Read the Markets" BRAND_SHORT = "Read" DOMAIN = "read.markets" SITE_URL = "https://read.markets" APP_URL = "https://app.read.markets" EMAIL_FROM_DEFAULT = f"noreply@{DOMAIN}" DARK: dict[str, str] = { "bg": "#0a0e14", "surface": "#11151c", "surface-2": "#161b25", "border": "#2a3142", "text": "#d4dae8", "muted": "#8189a1", "dim": "#565f89", "accent": "#00d9ff", "positive": "#50fa7b", "negative": "#ff5b5b", "alert": "#ff8a4a", "warning": "#f1fa8c", } LIGHT: dict[str, str] = { "bg": "#f5f3ec", "surface": "#ffffff", "surface-2": "#efece3", "border": "#d6d3cb", "text": "#1c1f25", "muted": "#545b69", "dim": "#8a8f9a", "accent": "#0e7490", "positive": "#166534", "negative": "#b91c1c", "alert": "#c2410c", "warning": "#a16207", } FONT_MONO = ( "'JetBrains Mono', 'IBM Plex Mono', 'Fira Code', " "ui-monospace, Menlo, Consolas, monospace" ) FONT_SANS = ( "-apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', Roboto, " "'Helvetica Neue', system-ui, sans-serif" )