spectral-theme.md
markdown
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2
feat: add repair-commit wire endpoint (API parity with repa…
Opus 4.8
minor
⚠ breaking
1 day ago
Spectral
The visual language of MuseHub.
A theme built on opacity-layered surfaces, spectral gradients, and a strict token hierarchy. Every pixel on screen traces back to one file: src/scss/theme/_tokens.scss
Color System
Background Layers
Four depth levels. Never skip a layer or go backwards.
--bg-void
#07070f
--bg-base
#0d1117
--bg-surface
#161b22
--bg-elevated
#1c1c2e
--bg-overlay
#21213a
--bg-hover
#2a2a42
Borders
Opacity-based so they work on any surface layer.
--border-subtle
--border-default
--border-strong
--border-glow
Text
Primary — main content, headings
--text-primarySecondary — labels, metadata
--text-secondaryMuted — timestamps, counts
--text-mutedDisabled — inactive elements
--text-disabledAccent & Status
--color-accent
accent-link
--color-success
--color-warning
--color-danger
--color-purple
--color-orange
--color-rose
--color-teal
--agent-accent
Gradients
--gradient-spectral
--gradient-agent
--gradient-void
--gradient-surface
Domain Colors
code
midi
mist
generic
agent
Dimension Slots
A — Harmonic
B — Rhythmic
C — Melodic
D — Structural
E — Dynamic
Typography
Families
--font-sans — Inter
The quick brown fox jumps over the lazy dog
--font-mono — JetBrains Mono
fn compute_snapshot_id(path: &str) -> Hash {
Size Scale
Aa
--text-3xl · 48px · displayAa
--text-2xl · 32px · hero headingAa
--text-xl · 24px · page headingAa
--text-lg · 20px · section headingAa
--text-md · 17px · emphasized bodyAa
--text-base · 15px · bodyAa
--text-sm · 13px · secondary textAa
--text-xs · 11px · micro labelsComponents
Buttons
Badges & Pills
success
warning
danger
accent
agent
default
Cards & Surfaces
Surface card
--bg-surface
Elevated card
--bg-elevated
Gradient surface
--gradient-surface
Code Block
fn render_markdown(content: &str) -> String {
mistune::html(content)
.pipe(inject_heading_anchors)
}
Inline Elements
A link looks like this clickable text
Inline code:
compute_snapshot_id()A blockquote — secondary color, italic, left border.
Agent Provenance
claude-sonnet-4-6
claude-code · signed
Signature verified
Spacing — 8pt Grid
1·4px
2·8px
3·12px
4·16px
5·20px
6·24px
7·32px
8·40px
9·48px
10·64px
Architecture
Two-layer SCSS split. A selector never appears in both layers.
components/
color · background · border · font-* · letter-spacing · text-transform · transition · animation · box-shadow · opacity · cursor
pages/
display · flex · grid · padding · margin · gap · width · height · overflow · position · align-items · justify-content
Quick Reference
| Token group | Prefix | Count |
|---|---|---|
| Backgrounds | --bg-* |
6 |
| Borders | --border-* |
4 |
| Text | --text-* |
4 sizes + 8 scale |
| Colors | --color-* |
12 |
| Gradients | --gradient-* |
6 |
| Domains | --domain-* |
5 × 3 |
| Dimensions | --dim-* |
5 × 2 |
| Spacing | --space-* |
12 |
| Agent | --agent-* |
2 |
All tokens defined in src/scss/theme/_tokens.scss.
Icons
All icons are SVG symbols in _icon_sprite.html and rendered via the icon(name, size, class) Jinja2 global. The sprite is inlined in base.html so every page has access.
Usage
{{ icon("bot", 16) }} {# default color (currentColor) #}
{{ icon("check", 14, "icon--success") }} {# with extra class #}
In plain HTML or docs:
<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.5">
<use href="#icon-bot"></use>
</svg>
Sizing convention
| Context | Size |
|---|---|
| Nav / toolbar button | 16 |
| Inline text (body) | 14 |
| Small meta / badge | 12 |
| Micro / status dot | 10 |
| Hero / empty state | 32–48 |
Icon catalog
activityagent-smalertalert-fillalert-trianglearrow-leftarrow-rightarrow-up-rightbanbookbook-openbooksbotbranchbranch-smbugcheckcheck-circlechevron-downchevron-leftchevron-rightchevrons-leftchevrons-rightchevrons-upcirclealert-circleclock-circleclock-smcodebracescommitcopycorner-right-downcpucrosshairdatabasedocumentdomain-graphdotdownloaddropleteditexperimentexternal-linkeyefile-codefile-datafile-defaultfile-textflamefolderforkglobegridhearthelp-circlehomeinboxinfoinfo-dotinfo-filllayerslinklistloaderlocklock-dotlock-fillmap-pinmenumergemessagemessage-circlemessage-squaremoonmusicpackageplusradiorefresh-cwsearchshareshieldsnowflakesplitstarsunsymbolstagtargetterminaltrending-uptwittertypeuseruser-simpleuser-smusersvolume-2wrenchxexplosionzap
File History
1 commit
sha256:3ff9c9863a9891bdcde71b4a43228f66d0493e38b7cc1d09fe9eb7de774046b2
feat: add repair-commit wire endpoint (API parity with repa…
Opus 4.8
minor
⚠
1 day ago