/* Base typography shared by the hive-c0re dashboard and the hive-ag3nt web UI. The colour variables it references (`--bg`, `--fg`, …) live in the standalone `theme.css` (Catppuccin Mocha), linked separately by every page BEFORE this file so the `:root` vars resolve — see `theme.css` + docs/web-ui/css-vars.md. Per-page stylesheets append on top of this and must NOT redeclare the colour variables; `theme.css` is the one source of truth. */ body { /* The default UA stylesheet gives `body` an 8px margin — every page using this shared base had it as a `--bg`-coloured strip visible around the whole viewport edge, e.g. left/right of any full-bleed header (swarm-ui's `.shell-header`, `--bg-elev`, doesn't actually reach the real viewport edge without this). Reported live as "small bg colored gap left and right of the header" (reported live by mara). Zeroed here since every page linking this file wants full-bleed chrome, not a browser default nobody asked for. */ margin: 0; background: var(--bg); color: var(--fg); font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Source Code Pro", monospace; line-height: 1.6; } /* Loading spinner used by the shared `asyncBtn()` helper (forms.js) — swapped into a button's content while its async action is in flight. Lives here (not in a per-page stylesheet) because asyncBtn itself is shared between the dashboard and the per-agent UI; keeping the CSS with the JS component it styles avoids one consumer rendering an unstyled, unanimated glyph. */ .spinner { display: inline-block; animation: spin 1s linear infinite; color: var(--amber); } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }