Colors
Minimal monochrome palette with full semantic colour range for status states and the colour picker swatches.
Core
#0a0a0a
#737373
#a3a3a3
#e5e5e5
#ffffff
Semantic (colour picker palette)
Typography
Geist with tight letter-spacing (−0.005em). Tabular nums throughout. Base size: 13px.
Motion
Spring easing curve. Hover each dot to preview.
cubic-bezier(0.16,1,0.3,1)
cubic-bezier(0.22,1,0.36,1)
ease-in-out 200ms
150ms
250ms
Pill Button
Primary CTA. Full-radius pill, Geist 13px, spring scale on press. Has an animated export/progress state.
Progress fill uses mix-blend-mode:difference to invert text colour as the bar sweeps through.
Icon Button
38×38 circle with border. Scale 0.94 on press. Active state fills black — used when a panel is open.
Brand Pill
The logo wordmark container — full-radius pill with border and subtle shadow. Sits in the top-left of the app.
Toolbar
Floating bottom bar. Two-row layout: top row is the interactive controls, bottom row is the scrollable timeline. Centred with shadow.
Settings Panel
Fixed card positioned top-right when the gear icon is active. 280px wide, 16px padding, list of setting rows.
Settings
Export
Dropdown
Scale + fade animation with origin awareness. Open: 250ms spring. Close: 150ms. Extracted verbatim from source.
Context Menu
Right-click menu with duration inline input, reset button, dividers, and danger row. 10px radius, 4px padding.
Color Picker
HSV picker with hue slider, eyedropper, hex input, and 8-colour swatch grid. Mode tabs switch between colour and image fill.
Timeline
Scrollable horizontal strip of 50×50 thumbnails with hover lift, active border, drag states, and a glassmorphism Add button. Duration badge on each frame.
Forms
Range slider with 3px track and 14px thumb. Select with custom caret. Hex text input with # prefix.
Icon Swap
Animated A↔B icon transition using blur + scale. Used on the play/pause button. CSS-only state, triggered by data-state attribute.
Click to toggle play ↔ pause
Blur: 2px · Scale: 0.25 → 1 · Duration: 200ms
Dot Grid
The infinite canvas background — radial-gradient dot pattern at 22px spacing. Drag-over state shows a dashed inset border.