Theme

The visual language treats the interface as instrument overlays floating above a live 3D scene: near-black backgrounds, thin hairline borders, frosted-glass panels, and sparing use of color so data — not chrome — draws the eye.

Monochrome, high contrast

Nearly everything is white, grey, or black. Line weight, opacity, and stroke style (solid / dashed / dotted) carry meaning instead of hue.

One accent color

Red (--color-accent · #ff4d4d) is reserved exclusively for critical or live-dynamic data — impact/crash states, the velocity vector, and ground-track markers.

Glassmorphism panels

Controls float in translucent, blurred cards (backdrop-filter: blur()) rather than opaque sidebars, keeping the 3D scene visible underneath at all times.

Progressive disclosure

Every panel section is a native <details>/<summary> so users can collapse what they don't need — no custom JS accordion required.

Two views on small screens

At or below 768px the Orbit Overview pane is dropped. The Ground Track (kept at 2:1) sits above the 3D View, which fills the rest of the screen.

Everything collapsed by default on mobile

On mobile all controls start hidden behind an icon dock. Each icon opens one sheet (Presets, Elements, Simulation, Telemetry, How it works), so only one container is ever on screen.

Color

Every color used anywhere in the prototype, defined once as a CSS custom property and reused everywhere. Matches the color group in tokens/tokens.json.

color-bg
#000000
color-white
#ffffff
color-text
#f4f4f4
color-muted
#8f8f8f
color-subtle
#555555
color-pane-border
#1a1a1a
color-accent
#ff4d4d
color-accent-border
rgba(255,77,77,0.6)
color-accent-soft
rgba(255,77,77,0.15)
color-accent-text
#ffb3b3
color-line
rgba(255,255,255,0.22)
color-line-strong
rgba(255,255,255,0.55)
color-glass
rgba(255,255,255,0.05)
color-glass-faint
rgba(255,255,255,0.06)
color-glass-strong
rgba(255,255,255,0.08)
color-glass-hover
rgba(255,255,255,0.14)
color-glass-solid
rgba(12,12,12,0.78)
color-button-primary-hover
#e2e2e2
color-loader-bg
#0d0d0d

Typography

System font stack — no webfont loading required. --font-family-base: 'Segoe UI', Roboto, Arial, sans-serif; Sizes, weights, and letter-spacing are all tokenized; the full ramp is listed after the usage samples.

Orbital Trajectory Sandbox
font-size-16 · weight-semibold · letter-spacing-0-5
Panel Title / Section Summary
font-size-11 · uppercase · letter-spacing-1-5
Slider label & body text
font-size-12-5 · weight-regular
Telemetry row value — 7.67 km/s
font-size-12 · tabular-nums
Helper / hint text under a control
font-size-10-5 · color-muted
font-size-10 · color-subtle

Full font-size ramp, named by pixel value (matches font.size in the JSON).

font-size-9
9px
font-size-10
10px
font-size-10-5
10.5px
font-size-11
11px
font-size-11-5
11.5px
font-size-12
12px
font-size-12-5
12.5px
font-size-13
13px
font-size-16
16px
font-size-24
24px

Weights, letter-spacing, and line-height tokens.

Font weight
Regular
weight-regular · 400
Semibold
weight-semibold · 600
Bold
weight-bold · 700
Letter spacing
letter-spacing-0
0
letter-spacing-0-5
0.5px
letter-spacing-0-8
0.8px
letter-spacing-1-2
1.2px
letter-spacing-1-5
1.5px
letter-spacing-2
2px
Line height
line-height-1-3
1.3
line-height-1-5
1.5
line-height-1-55
1.55
line-height-1-6
1.6

Spacing

Every padding, margin, and gap in the prototype, named by its pixel value rather than snapped to an idealized scale — this keeps the exact spacing already used, just made reusable and consistent across files.

space-1
1px
space-2
2px
space-3
3px
space-4
4px
space-5
5px
space-6
6px
space-7
7px
space-8
8px
space-10
10px
space-12
12px
space-14
14px
space-16
16px
space-18
18px
space-20
20px
space-22
22px
space-24
24px
space-28
28px
space-36
36px
space-48
48px
space-56
56px
space-64
64px
space-100
100px

Radius & Effects

Corner radii, blur amounts, border weights, transition durations, and shadows used across panels, chips, and controls.

Radius
radius-3
3px
radius-4
4px
radius-8
8px
radius-10
10px
radius-12
12px
radius-14
14px
radius-18
18px
radius-20
20px · pill
radius-24
24px · sheet
radius-round
50%
Blur / border / duration / shadow
blur-10
10px backdrop-filter
blur-16
16px backdrop-filter
blur-22
22px backdrop-filter
saturate-panel
160%
border-width-1
1px
border-width-1-5
1.5px
duration-fast
0.15s
duration-base
0.18s
duration-slow
0.5s
duration-sheet
0.28s
easing-standard
cubic-bezier(0.2,0.8,0.2,1)
shadow-sheet
0 -12px 40px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.06)
shadow-panel
0 20px 60px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.06)

Components

Buttons — pill-shaped, transparent by default. Three variants layered on the same base class.

Slider control — native range input, white accent, value shown inline in the label.

Toggle checkbox & info tooltip icon.

i

Collapsible section — native <details> with a rotating chevron, no JS.

Orbital Elements
Six sliders — semimajor axis, eccentricity, inclination, RAAN, argument of periapsis, true anomaly — collapse under this pattern throughout the app.

Telemetry rows & orbit-type badges — dashed dividers, stroke-style differentiates state instead of color.

Orbit typeElliptical
Apoapsis alt.18,411 km
Periapsis alt.402 km
Circular Elliptical Escape Suborbital / Impact

Pane label — floating chip identifying a 3D viewport, and a banner toast for transient status messages.

3D View Ground Track Orbit Overview

Floating glass panel — the base container for every control group. Blurred, bordered, drop-shadowed, corner-pinned.

Telemetry
Eccentricity0.300
Period3.8h

Page loader — full-screen percentage counter shown on first load (--color-loader-bg, fades out over --duration-slow).

Responsive & Mobile

One breakpoint switches the app from three floating panels to a two-view layout with an icon dock. CSS media queries can't read custom properties, so main.css repeats the breakpoint values; main.js reads them from the tokens so the JavaScript and CSS always agree.

Breakpoints & sizes
breakpoint-mobile
768px · max-width
breakpoint-landscape-height
500px · touch + max-height (phones in landscape)
size-touch-target
44px · min tap height
size-icon
20px · dock glyph
size-dock
64px · + safe-area inset
size-sheet-max
52dvh
size-sheet-landscape
340px
Stacking (z-index)
z-index-pane-label
3
z-index-overlay
5 · banner, HUD
z-index-panel
6 · panels / sheets
z-index-dock
8
Layout

Icon dock — five icon buttons, one per container. Monochrome 1.5px stroke icons at --size-icon; the open sheet's button gets the glass-hover fill and a hairline border. In landscape it becomes a vertical rail with labels hidden.

Bottom sheet — the mobile form of a floating panel. Denser glass (--color-glass-solid), --radius-24 top corners, upward --shadow-sheet, a grab handle, and a sticky header whose × collapses it. Slides in over --duration-sheet with --easing-standard; motion is removed for reduced-motion users.

Telemetry
Altitude4,121.9 km
Speed7.02 km/s