Context
ReportsHQ must read as loghq's sibling: editorial-technical, dark-capable, token-driven - but with its own accent and personality (loghq owns rose #e11d48; pick a clearly different accent that suits "reports/insight", e.g. a deep indigo or emerald family, and defend the choice in the design brief). Study /Users/chris/Code/Apps/loghq: public/tokens.css, public/marketing.css, config/crosswind.ts, config/ui.ts, resources/assets/scripts/site-mode.js, resources/stores/theme.ts.
Read the stacks-design-taste skill first; optionally use stacks-brandkit to generate reference imagery before committing to tokens. Be picky.
Scope
- Design brief committed to the repo: aesthetic direction, the three dials (VARIANCE / MOTION / DENSITY), accent rationale, typography pairing (loghq uses Space Grotesk + JetBrains Mono; choose deliberately - same family kinship is fine, identical is lazy), loaded via
config/ui.tshead withfont-display: swap. public/tokens.cssas the single token source: light + dark palettes,color-schemedeclared, WCAG contrast ratios documented per token pair (loghq documents these inline - match that rigor). Do not use crosswindpreflightsfor tokens; in loghq it silently never emitted.- Dark mode via
[data-theme]+prefers-color-schemewith a pre-paint script so there is no flash; stx owns the theme (configure insite.config.ts; do not add a second competing guard). config/crosswind.tssemantic utilities mapped onto the tokens (bg-canvas,bg-panel,border-line,text-ink/muted/subtle/accent,accent-ink,field,wordmark- mirror loghq's naming so sibling code ports cleanly).- Wordmark/logo treatment (type-based is fine; no hand-rolled SVG icon paths - Iconify
i-hugeicons-*classes for icons). - Favicon + social card assets in
public/.
Acceptance
- A token reference page (dev-only route is fine) renders every token in light and dark with its documented contrast ratio.
- Pre-flight check from
stacks-design-tasteSection 14 passes. No em-dashes anywhere in user-visible copy.
Depends on #2. Part of #1 (M1 Foundation). Ground rules: see #1.