The previous `<link rel="icon">` pointed at `/sencho-logo.png`, which is
not present in `frontend/public/`, so every page load 404'd the favicon
and browser tabs fell back to the generic globe glyph.
Point the icon at the two PNGs that actually ship in `frontend/public/`
(`sencho-logo-dark.png` and `sencho-logo-light.png`) and let the browser
pick the right one via `prefers-color-scheme`. Add an `apple-touch-icon`
so iOS home-screen pinning gets a real asset instead of a screenshot.
- Repoint --chart-1..3 to brand/warning/destructive so cyan leads as the
primary data color, amber marks peaks, rose marks errors. --chart-4/5
fall back to neutral greyscale tones tuned per theme.
- Add --data-line-width (1.25px) and --data-peak tokens so sparklines
across dashboard, stack table, and readiness views share one source
of truth instead of re-deriving per component.
- Introduce five semantic label role aliases (env, role, owner, risk,
custom) mapped to existing hues. Raw ten-hue palette stays in place
for existing consumers; new labels should consume roles.
- Replace Georgia serif with Instrument Serif and add --font-display
alias in both :root and .dark; expose font-display via @theme inline
so Tailwind utility classes can use it. Load the family from Google
Fonts alongside Geist + Geist Mono.
The /envs endpoint now filters to only return env files that actually exist
on disk, and absolute env_file paths from compose files (e.g. shared
globals.env in a sibling directory) are no longer rejected. The inline
theme-detection script is moved to an external file to comply with CSP.
Install motion + animate-ui, overhaul design tokens with brand cyan accent,
and replace CSS keyframe animations in Dialog, Tabs, Switch, and Tooltip
with spring-physics and blur-fade transitions via animate-ui Radix primitives.