
:root{
--bg:var(--brand-bg);--bg-glow:var(--brand-glow);--panel:var(--brand-surface);
--panel-2:var(--brand-surface-2);--line:var(--brand-border);--line-soft:var(--brand-border-soft);
--fg:var(--brand-text);--dim:var(--brand-muted);--faint:var(--brand-faint);
--accent:var(--brand-accent);--accent-soft:var(--brand-accent-soft);
--ok:var(--brand-ok);--ok-soft:var(--brand-ok-soft);
--danger:var(--brand-danger);--danger-soft:var(--brand-danger-soft);
--warn:var(--brand-warn);--shadow:var(--brand-shadow);
/* activity page */
--muted:var(--brand-muted);--good:var(--brand-ok);--bad:var(--brand-danger);
}
/* Text sitting on an accent fill is hardcoded white; flip it to the readable
   one when the accent is light. The scoped .admin .btn outranks
   .btn-danger/.btn-ghost, so those get scoped rules at the same specificity to
   keep their colors. */
.admin .btn{color:var(--brand-on-accent);}
.admin .btn-danger{color:var(--brand-danger);}
.admin .btn-ghost{color:var(--brand-muted);}

:root{color-scheme:light;--brand-accent:#2f6fe4;--brand-accent-2:#7c5cf0;--brand-accent-soft:rgba(47,111,228,0.12);--brand-on-accent:#ffffff;--brand-bg:#f4f6fa;--brand-surface:#ffffff;--brand-surface-2:#f4f4f5;--brand-text:#1a2233;--brand-muted:#5b6778;--brand-faint:#98a0ac;--brand-border:#e2e8f2;--brand-border-soft:#ecf0f6;--brand-baseline:#b0b6c2;--brand-ok:#0e9f6e;--brand-ok-soft:rgba(14,159,110,0.12);--brand-warn:#a8620a;--brand-warn-soft:rgba(168,98,10,0.12);--brand-danger:#dc2626;--brand-danger-soft:rgba(220,38,38,0.12);--brand-glow:radial-gradient(1200px 600px at 70% -10%,rgba(47,111,228,0.1),transparent 60%);--brand-shadow:0 8px 30px rgba(26,34,51,.08);}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--brand-accent:#4f8ef7;--brand-accent-2:#7c5cf0;--brand-accent-soft:rgba(79,142,247,0.22);--brand-on-accent:#ffffff;--brand-bg:#0b0e14;--brand-surface:#12161f;--brand-surface-2:#1d212a;--brand-text:#e8edf4;--brand-muted:#94a0b1;--brand-faint:#5d6672;--brand-border:#232b3a;--brand-border-soft:#161b25;--brand-baseline:#545c68;--brand-ok:#34d399;--brand-ok-soft:rgba(52,211,153,0.22);--brand-warn:#fbbf24;--brand-warn-soft:rgba(251,191,36,0.22);--brand-danger:#f87171;--brand-danger-soft:rgba(248,113,113,0.22);--brand-glow:radial-gradient(1200px 600px at 70% -10%,rgba(79,142,247,0.16),transparent 60%);--brand-shadow:0 8px 30px rgba(0,0,0,.35);}}
:root[data-theme="dark"]{color-scheme:dark;--brand-accent:#4f8ef7;--brand-accent-2:#7c5cf0;--brand-accent-soft:rgba(79,142,247,0.22);--brand-on-accent:#ffffff;--brand-bg:#0b0e14;--brand-surface:#12161f;--brand-surface-2:#1d212a;--brand-text:#e8edf4;--brand-muted:#94a0b1;--brand-faint:#5d6672;--brand-border:#232b3a;--brand-border-soft:#161b25;--brand-baseline:#545c68;--brand-ok:#34d399;--brand-ok-soft:rgba(52,211,153,0.22);--brand-warn:#fbbf24;--brand-warn-soft:rgba(251,191,36,0.22);--brand-danger:#f87171;--brand-danger-soft:rgba(248,113,113,0.22);--brand-glow:radial-gradient(1200px 600px at 70% -10%,rgba(79,142,247,0.16),transparent 60%);--brand-shadow:0 8px 30px rgba(0,0,0,.35);}