# Dashboard visual directions — static HTML samplers
Three standalone, fully self-contained mocks of the SAME dashboard.
No frameworks, no build step, no external assets — embedded CSS only
(the brand emblem rides inline as a downscaled PNG data URI).
Open directly via `file://`. Each supports light AND dark via
`prefers-color-scheme` (verify by toggling devtools scheme emulation).
- `dashboard-primer.html` — 1 Curated Primer (light-first)
- `dashboard-control.html` — 2 Control Room (dark-first)
- `dashboard-swiss.html` — 3 Swiss Flat (light-first)
- `dashboard-current.html` — 4 Current quieted (theme-faithful)
All four carry IDENTICAL content structure (the `
` markup is
byte-identical apart from the sampler number/label), so the comparison
is purely visual.
## Header
Every direction keeps the real app's chrome: the emblem + ClankerSaddle
brand at the app's original `height: 8rem` (with its `-0.2rem`
margin-block trim), and the three nav groups from `main.html` — Work
(Dashboard, Tasks, Goals, Chats), Library (Projects, Rules, Stacks,
Discoveries), Admin (Saddles, Users, Model) — plus the Account menu.
Pure CSS `` dropdowns, no JS. Brand and nav are centre-aligned
on one axis (verified via engine geometry: brand/emblem/nav/summary
mids equal to 0.1px in all three directions). The emblem is embedded
per file as a 256px, 64-colour-quantised PNG data URI (~31 KB base64)
so the samplers stay standalone while rendering crisp at 8rem.
## Content model (per the approved hierarchy)
- Zone 1 (top): the advisor entry box ONLY — heading and description
sit INSIDE the composer card, above the textarea; model/snapshot
hint and Start chat below. The front page never shows chat
transcripts themselves (review decision). A single quiet link to
the chats list.
- Zone 2 (one small scroll below): "Needs a human" items tiered ABOVE
queue health — a completion awaiting review, a turn-cap parked task
to wake, an open question; then running / stuck / queued counts and
saddle states.
- Zone 3 (ambient, reduced density): notes, latest discoveries,
active tasks table and activity timeline — ALL sections start
collapsed, rendered as plain ruled expander rows with NO card
chrome (no background, no border box, no radius).
Sample data uses the real app's vocabulary: statuses
draft / queued / assigned / working / blocked / review_requested /
suspended / done / failed; saddle states idle / busy / offline;
blocks review / question; turn-cap parks. Task titles reference real
recent fleet work. Sections are deliberately uneven — one saddle
offline, one task with no latest progress, a sparse notes list —
because perfection reads fake.
## Direction 1 — Curated Primer
GitHub/Primer lineage, disciplined, light default. Cards on a sunken
page, 8px grid, 8px radius, tinted status pills, the existing blue as
accent. The natural evolution of today's `app.css`.
:root (light):
```
--surface-sunken #f6f8fa --surface #ffffff --surface-inset #eff2f5
--ink #1f2328 --ink-muted #59636e --ink-faint #6e7681
--line #d1d9e0 --line-soft #e4eaef
--accent #0969da --accent-surface #ddf4ff
--success #1a7f37 --warning #9a6700 --danger #cf222e
--radius 8px
```
Dark variant: `--surface-sunken #0d1117`, `--surface #151b23`,
`--surface-inset #1c2430`, `--ink #e6edf3`, `--ink-muted #9198a1`,
`--ink-faint #6e7681`, `--line #3d444d`, `--line-soft #262c36`,
`--accent #4493f8`, `--accent-surface #121d2f`, `--success #3fb950`,
`--warning #d29922`, `--danger #f85149`.
Status = tinted pill pairs: working/blocked/queued on yellow tints,
done/progress green tints, failed red tint, review orange tint,
question blue tint, parked/suspended neutral. Type: system-ui 15px.
Shadows: none (1px borders only).
## Direction 2 — Control Room
Dark-first, mono-forward, mission-console restraint. Quiet cold
neutrals; status colour carries the meaning; labels and numerals in
mono. Status reads as small outline capsules in the status hue —
colour IS the signal, fill stays quiet. Light variant is a working
console on white, not an afterthought.
:root (dark, default):
```
--bg #0f1317 --surface #151a20 --raise #1c232b
--ink #c9d4de --dim #7e8b98 --faint #525e6a
--rule #262e38 --rule-hi #394450
--run #4cc38a --warn #f5b452 --crit #ef6460 --info #58a6ff
--accent #58a6ff --radius 4px
--mono ui-monospace … --sans system-ui …
```
Light variant: `--bg #eef1f4`, `--surface #ffffff`, `--raise #f4f6f8`,
`--ink #1b2530`, `--dim #54626f`, `--faint #75828e`, `--rule #d7dee4`,
`--rule-hi #b4c0ca`, `--run #10735a`, `--warn #8f5b00`,
`--crit #c3362f`, `--info #0a5dc2`.
Status semantics: run=green (running/done/busy), warn=amber
(queued/blocked/review/stuck), crit=red (failed), info=blue
(interactive/question). Type: sans 14px body, mono for labels,
metrics, meta and times. Radius 4px; no shadows; saddle states are
tiny square lamps (filled / outline / dashed).
## Direction 3 — Swiss Flat
Strict grid, typographic hierarchy, one strong accent, no shadows, no
ornament. Structure lines are INK, not grey; the frame is the design.
A hard left rail carries brand + zone labels; metrics are oversized
light numerals (weight 200). Status is typography: weight and colour
in near-black / greys, with red reserved for failure and the accent.
:root (light):
```
--paper #fdfdfb --ink #111111 --grey-1 #6b6b6b --grey-2 #82827e
--rule #111111 --rule-thin #d9d9d6
--red #e2231a --radius 0
--font "Helvetica Neue" … --mono ui-monospace …
```
Dark variant: `--paper #121212`, `--ink #f0f0ec`, `--grey-1 #a8a8a4`,
`--grey-2 #7c7c78`, `--rule #f0f0ec`, `--rule-thin #2e2e2c`,
`--red #ff4438`.
Status: failed and the single accent share red; everything else is
typographic (bold caps tags, question underlined in ink). Links are
ink with a thin grey underline; red appears on hover and on the
primary button. Radius 0, no shadows, 2px structural rules.
## Direction 4 — Current quieted (theme-faithful)
The control sample: today's theme kept as close as possible — the
same tokens as `app.css` (`#f6f8fa` sunken page, `#ffffff` cards,
`#0969da` accent, `1a7f37/9a6700/cf222e` status, 8px radius, 8px
grid, system-ui 15px), the buttony nav dropdown menus, bordered cards
with tinted pill badges, `details` sections rendered as cards, and the
full-grid bordered tables. Only the LAYOUT is quieted:
- one column at the app's real 64rem (no second sidebar column),
- "Needs a human" as three rows inside ONE card instead of a card
per item,
- section headings reduced to a single small heading each — no
stacked h2 + h3 pairs, no explanatory paragraphs between sections,
- ambient sections are plain ruled expanders (the app's
details-as-cards chrome removed per review),
- the advisor hero is a single card carrying its own heading and
description, matching `home.html`'s token recipe.
Component styles verified identical to the live `app.css` via
computed-style comparison (radius, shadow, paddings, colours, fonts).
A dark set is included so it honours `prefers-color-scheme` like its
siblings; the light values are the faithful ones.
## Anti-slop checklist (honoured by all four)
No purple-blue gradients, no glassmorphism, no oversized drop
shadows, no marketing hero, no emoji decoration, no fake-perfect
symmetry. Status palettes avoid the blue/purple wash; accent use is
rationed.
## Verification performed
- Files open standalone via `file://` (Chromium 154 headless).
- Light/dark flip verified per file via forced scheme: page
backgrounds and every status colour change to the intended tokens;
content extents identical between schemes (no reflow breakage).
- The four `` blocks verified identical modulo sampler label.
- Nav dropdowns verified open (per-direction probe renders); emblem
verified visible in both schemes in all four directions, rendered
at the app's original 8rem height; brand/nav vertical alignment
verified equal via getBoundingClientRect mids.
- Direction 4 verified component-faithful to `app.css` via computed
styles (radius/shadow/padding/colours/fonts all equal).
- 390px mobile: no horizontal overflow; all zones render.