"""Cassandra brand palette — single source of truth. Both the website's CSS (`app/static/css/cassandra.css`) and the email templates (`app/services/email_service.py`) draw from these dicts. CSS hand-authors the values in its `:root` / `[data-theme="light"]` blocks; a drift-detection test (`tests/test_branding_consistency.py`) asserts that what's in this module matches what's in the CSS, so updating the brand in one place without the other fails CI. 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 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" )