Rams MCP · The full engine, now in your coding agent
flighthq on GitHub

flighthq/flight

Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.

30 files reviewed·July 31, 2026

View on GitHub

Top fix

Introduce a reusable color token layer to replace hardcoded hex values

See the fix

Verdict

A minimal, glassy look built on hardcoded colors with no token layer to back it up. The biggest risk is accessibility debt, missing focus states, low-contrast text, and no fallback for reduced transparency, all stacking on the same unstructured color system.

Files Rams reviewed

examples/runners/electron/src/renderer/index.html

examples/runners/web/src/style.css

tools/functional/src/style.css

tools/gallery/src/style.css

examples/packages/particleeditor/index.html

examples/packages/adjustments/index.html

examples/packages/benchmark/index.html

examples/packages/bitmap/index.html

examples/packages/camera2d/index.html

examples/packages/clock/index.html

examples/packages/collision/index.html

examples/packages/effects/index.html

examples/packages/flowstates/index.html

examples/packages/interaction/index.html

examples/packages/motionpath/index.html

examples/packages/movieclip/index.html

examples/packages/particles/index.html

examples/packages/pathboolean/index.html

examples/packages/platformer/index.html

examples/packages/scene3d/index.html

examples/packages/shapes/index.html

examples/packages/skeleton/index.html

examples/packages/snapshot/index.html

examples/packages/sound/index.html

examples/packages/spatial/index.html

examples/packages/spring/index.html

examples/packages/spritesheet/index.html

examples/packages/text/index.html

examples/packages/textinput/index.html

examples/packages/tilemap/index.html

94/100

Accessibility

3 serious
AccessibilitySerious

examples/runners/web/src/style.css:65

Sidebar example buttons have no visible keyboard focus indicator

In examples/runners/web/src/style.css, .example-btn defines a hover state (background #1e1e1e, color #aaa) but no :focus-visible rule. Tabbing through the sidebar list gives keyboard users nothing but whatever unstyled default the browser supplies on a dark #111 background, which is easy to miss or clipped by the sidebar's overflow rules.

Why it matters

Keyboard users lose track of which example is focused while navigating the list, and can't confirm a selection before pressing Enter.

Fix

Add an explicit :focus-visible style to .example-btn using a visible outline color already in the palette.

.example-btn:hover {
  background: #1e1e1e;
  color: #aaa;
}
.example-btn:hover {
  background: #1e1e1e;
  color: #aaa;
}

.example-btn:focus-visible {
  outline: 2px solid #3d7fff;
  outline-offset: -2px;
}
AccessibilitySerious

tools/functional/src/style.css:101

Blurred renderer bar has no fallback for reduced-transparency preference

#renderer-bar uses background: rgba(8, 8, 8, 0.82) with backdrop-filter: blur(12px) and no @media (prefers-reduced-transparency: reduce) rule. Since the bar floats over the live preview frame, its effective legibility depends entirely on whatever content is rendering underneath.

Why it matters

Users who enable reduced transparency at the OS level to improve legibility get no benefit here, and the bar's readability stays at the mercy of whatever is on screen behind it.

Fix

Add a prefers-reduced-transparency media query that swaps the translucent blur for a solid background.

#renderer-bar {
  ...
  background: rgba(8, 8, 8, 0.82);
  backdrop-filter: blur(12px);
  ...
}
#renderer-bar {
  ...
  background: rgba(8, 8, 8, 0.82);
  backdrop-filter: blur(12px);
  ...
}

@media (prefers-reduced-transparency: reduce) {
  #renderer-bar {
    background: #0a0a0a;
    backdrop-filter: none;
  }
}
AccessibilitySerious

examples/runners/web/src/style.css:53

Sidebar label text fails contrast against the page background

The .example-btn label color #666 sits on the page background #111. That pair computes to roughly 3.3:1, which fails WCAG AA's 4.5:1 minimum for this 12px text.

Why it matters

Low-vision users and anyone in a bright room struggle to read the example names in the sidebar, slowing navigation through the list.

Fix

Raise the default label color to at least 4.5:1 against the surrounding background.

.example-btn {
  ...
  color: #666;
  ...
}
.example-btn {
  ...
  color: #999;
  ...
}
98/100

Color

1 serious
Design SystemSerious

examples/runners/web/src/style.css:12

Base colors hardcoded throughout with no reusable token layer

html, body sets background: #111 and color: #ccc directly, and the rest of the file repeats raw hex values (#161616, #252525, #333, #666, #1e1e1e, #aaa, #1a2740, #3d7fff, #7ab8ff...) with no CSS custom properties tying them together.

Why it matters

Every future theme or contrast fix means hunting down each literal individually, and nothing stops the same gray from drifting to a slightly different hex somewhere else in the file.

Fix

Define the recurring grays as CSS custom properties at :root and reference them everywhere instead of repeating hex literals.

html,
body {
  height: 100%;
  overflow: hidden;
  background: #111;
  color: #ccc;
  ...
}
:root {
  --bg-base: #111;
  --text-base: #ccc;
}

html,
body {
  height: 100%;
  overflow: hidden;
  background: var(--bg-base);
  color: var(--text-base);
  ...
}

Typography

No issues found

Spacing

No issues found

Components

No issues found

Motion

No issues found

UX

No issues found

Craft

No issues found

Working well

  • The `.value` readout uses `font-variant-numeric: tabular-nums` with a fixed `min-width: 40px`, so digit-width changes as sliders move never shift the layout next to it.
  • .selected states on both .example-btn and .renderer-btn pair a color change with a border-left/border-color shift, so selection isn't color-only.
  • .example-btn.selected pairs a left accent border with both background and text color changes, so selection is never carried by color alone.
  • Using system-ui and ui-monospace as font fallbacks is a sensible, dependency-free choice for a debug harness.

Scored July 31, 2026 with Rams Engine v0.0.3 · Engine changelog

This page is an automated design review of flighthq/flight’s UI code: 30 files read against 291 versioned rules covering accessibility, color, typography, spacing, components, UX, motion, and craft. The score is out of 100; any confirmed critical issue caps it at 59.

More design scores

Score your own repo.

Free on public repos, no account. The same engine that scored this page reads your UI code and mints a score page like this one.

Public repos only. The full engine reviews the UI code and mints a public score page — we email you the link too. Already-scored repos open instantly.

Or get a design review on every pull requestInstall Rams