Flattened radii to instrument-panel bezels, retuned the caution color hierarchy, replaced glossy gradients with flat panel surfaces, added a persistent master-caution bar, condensed Oswald display type, corner-frame targeting brackets on instrument tiles, and a blueprint grid ground.
5.5 KiB
Design
World
Glass Flight Deck — an aviation cockpit/EICAS instrument panel, not a rounded-card SaaS admin theme. Built code-led (no image generation available in this environment); the direction contract lives at .impeccable/surfaces/web-src.md (seed key 026d7572, chosen card: IMPECCABLE'S PICK, "Glass Flight Deck").
Palette
- Ground: near-black graphite,
--bg #090b0e→--bg-surface #12151b→--bg-elevated #161a22(dark, primary theme). Light theme kept fully coherent as the secondary theme (--bg #f8fafcetc.), unchanged from the pre-existing ramp. - Caution hierarchy (never decorative — earned only by state):
--status-oknominal green,--status-warnamber,--status-errormaster-caution red (rarest color on screen, reserved),--status-infolive-data cyan (shifted from the previous blue so "telemetry updating" never reads as a link). - Brand accent: oxide (rust/iron, unchanged) — carries primary actions and the one-off "Ferrum" identity (BrandMark, active nav), kept distinct from the caution colors exactly like a real avionics brand strip is distinct from its warning lights.
Type
--font-sansInter (body copy only),--font-displayOswald (self-hosted/fonts/oswald-variable.woff2, replacing Space Grotesk),--font-monoJetBrains Mono. Oswald is a genuinely condensed grotesk — the single highest-leverage move in this pass, sincefont-displayis already used byCardTitle/DialogTitle/WidgetChromeand 15 page files, so the swap re-typeset the whole app's headings at once.panel-labelutility (index.css) now setsfont-family: var(--font-display)explicitly (not just uppercase+tracking on inherited Inter) — every page title, nav item, group label, badge, and tab renders in true condensed Oswald caps. Page titles sit at2.25remwith tight0.02emtracking (condensed faces don't need heavy tracking at display size).- All numeric/data fields render in
font-monowith.tabular(tabular-nums) — inputs, selects, KPI values, table cells.
Signature motifs
corner-frameutility: two diagonal targeting-reticle corner brackets (top-left + bottom-right), used sparingly on instrument readouts only — every KPI tile and the page-header icon plate — never as blanket card decoration.- Master-caution bar is now persistent, not just reactive: a quiet green "ALL SYSTEMS NOMINAL" strip pinned above the header when the fleet is clean, banded amber/red when it isn't. It never disappears, so the redesign's signature element is visible on every page regardless of fleet state.
- Blueprint grid ground: the dot-grid background was replaced with a layered fine (8px) + bold (32px) line grid — reads as a technical drawing surface, applied identically on the authenticated app and the login/setup screen.
Radius & elevation
--radius-sm/md/lg/xltightened to 2/3/4/6px (from 6/8/12/16px) — this single token change flattened everyrounded-sm/md/lg/xlutility app-wide to instrument-panel bezels.rounded-2xl/rounded-fullusages that bypassed the tokens (badges, buttons, the command palette, track-fill bars) were hand-converted to rectangular/rounded-sm.- Glossy two-tone gradients removed from Button, BrandMark, the header avatar chip, and the sidebar active-nav treatment — replaced with a flat panel color plus one hairline inset top-highlight (the physical bezel edge), never a gradient sweep.
- Card's
railprop no longer paints a coloredborder-left(a banned pattern) — it keeps only the faint background tint; explicit signal is a<StatusDot>/<Badge>pairing instead.
Components
- Badge: rectangular annunciator chip (
rounded-sm, bordered,panel-label), not a pill. - Switch: rectangular panel-toggle track/thumb, not an iOS pill.
- KpiCard: digit-bank readout —
panel-labelmicro-label,font-monotabular value, flat bordered tile, squared progress rail with a caution glow only past a warn/error threshold (--caution-glow-warn/error). - MasterCautionBar (new,
components/layout/MasterCautionBar.tsx): readsuseFleetOverview()/summarizeFleet()fleet-wide; renders nothing when nominal, a banded (caution-bandutility) amber/red strip pinned above the header when critical alerts, offline connections, or warnings exist anywhere in the fleet. Links to/alerts. - DataTable / Input / Select / Tabs: unchanged structurally, retuned to the flattened radius and (Input/Select)
font-mono.
Verification
Visually verified in-browser (Playwright, dark mode) against a live build of the app: Login, first-run Setup, Fleet Overview, Inventory (empty state), Settings (Appearance), Custom Dashboard, and Overview at a 390px mobile width. Not individually screenshotted this pass: Storage, Pools, HA, Firewall, Backups, Tasks, Alerts, Users, Audit, Connections, Topology, Node Detail, Console, Profile — these inherit the redesigned shared primitives/tokens and compile clean, but were only reviewed via component-level diffs, not rendered. The master-caution bar's firing (amber/red) state was reasoned through code, not observed live — the only test fleet available had zero alerts.
Open follow-ups
- Screenshot the remaining pages listed above and fix anything page-specific the shared-component pass didn't reach.
- Force or seed a critical/warning alert to visually confirm the master-caution bar's banded state and its
/alertslink. - If a genuinely condensed grotesk becomes worth the added font weight later, it would sharpen the panel-label register beyond tracked-caps Inter — not required now.