02 · Components

The app’s own parts, live on the page.

Every specimen below is the app’s real markup, styled by the app’s real stylesheet, so it matches the product to the pixel. Hover, press and drag them. Static copies show the hover, pressed, focus, selected, disabled and loading states side by side.

Keys and buttons

The raised key is Mootionblue’s signature control: a face on a darker edge that travels 2 px when pressed.

Default
Hover
Pressed
Focus
Disabled
Key

The pressable 3D key for primary actions in bars and panels. It presses down 2 px on the edge.

.key

Small
Accent
Accent pressed
On
Wide
Key variants

Small for bars, accent for the one action that moves the work forward, on for a toggled setting, wide for panel actions.

.key.small · .key.accent · .key.on · .key.wide

Default
Hover
Pressed
Selected tool
Toggled on
Disabled
Tool button

Square 40 px icon buttons in the toolbars. The selected tool gets the accent key; toggles get a soft fill.

.tool · .tool.active.primary-tool

Icon button
Icon hover
Text button
Danger
Danger hover
Icon, text and danger buttons

Quiet buttons for secondary actions inside tiles, cards and dialogs.

.icon-button · .text-button · .danger-button

Default
Hover
Loading
Upload

A dashed drop target that turns accent on hover and dims while a file uploads.

.upload · .upload.busy

Ask Claude key

Floats under the stage. Reads “Ask Claude” with nothing selected and “Edit this” when a layer is.

.ask-key

Transport

Time readout, beat stepping, the round play button and the video length picker.

.transport · .play · .duration-pick

Fields

Fields sit on a tinted fill with no border; focus draws a 2 px accent ring. Labels sit to the left in a 72 px column.

Default
Filled
Focus
Disabled
Text field

One line of text. The placeholder is an example, never the label.

.field

Text area

Layer text and prompts. Grows with a vertical resize handle.

textarea

Position
Size
Number field

Paired numbers with a draggable prefix: drag the X, Y, W or H to scrub the value.

.num · .num-prefix · .row.pair

Type seconds (1.5), minutes (0:02.25) or frames (12f). ↑↓ steps a frame, ⇧ ten. 60 fps.
Time fields

Start, duration and end in seconds, with the frame count under each.

.time-fields · .time-input

Colour field

A chip that opens the system picker, a hex field and twelve swatches; the chosen swatch gets a ring.

.color-field · .hex-field · .chip · .swatches

Font
Weight
Select

A native select dressed as a field, with the app’s chevron. The second one shows focus.

.select

Size
Tracking
Opacity
Rotation
Slider

A 4 px track filled to --p and a 22 px white thumb that grows on press. Drag them; the last row shows typing a value.

.slider · .slider-value

Search field

Searches inside a library popover.

.fx-search

Selection controls

Choices slide rather than blink: the thumb and the tab pill travel on the spring curve.

Segmented control

Two to five options. The thumb slides on --i with the spring; click to try it.

.segmented · .seg-thumb

Replace sound choice

The Sound library’s “Keep length” or “Natural length” choice, a segmented control with a hint under it.

.segmented

Tabs with the sliding pill

The inspector’s tabs. The pill moves by --i on the spring; the set changes with the selection.

.tabs · .tab-pill

Off
On
Toggle key

Mootionblue has no switch: a setting that turns on is a wide key that gains a check and the good colour.

.key.wide.on

Keyframe off
Keyframe hover
Keyframe on
Track locked
Track hidden
Muted
Keyframe and track toggles

Diamonds add keyframes from a card head; track toggles lock, hide or mute a row and turn amber or red when on.

.key-toggle · .row-toggle.lock/.hide/.mute

Checkbox
Tile pick
Tile picked
Checkbox and tile pick

A plain checkbox for settings; the round pick selects tiles on Home.

.check · .pick

Filter chips

Filters on Home. One is always on.

.lib-chips · .lib-chip.on

Cards

Inspector content sits in 18 px cards. The fold chevron turns and the body opens on the spring.

PopEntrance sound · Your colours. pill
Panel heading

Tops the inspector for a selection: a type badge, the name you can edit, then duplicate, export, delete and deselect.

.layer-heading · .badge · .sound-heading

Opacity
Width

Sits under the letters and reaches this far past them.

Card with fold

Open and closed cards. Click a head to fold it. A diamond in the head adds a keyframe for that group.

.card · .card-head · .card-fold · .fold

Menus pop from their anchor on the spring. Hover fills the row with the accent; danger rows fill red.

Context menu

Right-click on a clip. Shortcuts sit in key caps on the right; Delete is the danger row.

.context-menu · .menu-item.danger · kbd

Context menu with confirm-delete row

Choosing Delete turns the row into Cancel and a red Delete in place, so the menu never jumps.

.menu-confirm · .menu-confirm-cancel · .menu-confirm-go

Export popover

Format cards with a radio, a one-line summary and the accent key.

.export-sheet · .export-format.on

Shader library

Search, grouped tiles and a star to favourite. Previews here are CSS stand-ins for the live shader thumbnails.

.fx-menu · .fx-tile-wrap · .fx-star

Overlays

Modals rise on panel-in with the spring; the shade blurs what’s behind. Toasts drop from the top and offer the undo.

Deleted “Your copy. pill”. Press ⌘Z to undo.
Toast

Confirms an edit and says how to undo it. Leaves after five seconds.

.toast

esc
Ask Claude…
↑↓ Move↩ Run Shortcuts
Command palette

⌘K. Grouped commands with their shortcuts as key caps; the first row asks Claude.

.cmdk · .cmdk-item · .keycap

SavedSaved
SavingSaving
Unable to saveNot saved
⠋ClaudeTiming the entrances to the beat
42%

Exporting MP4 · 15.0s · 60 fps

Loading and progress

Saving dot that blinks amber, Claude at work with a braille spinner and shimmer, and export progress.

.save-state.busy · .agent-status · .export-progress

Account

The avatar sits at the end of the top bar on Home and in the editor.

Account menu

Who’s signed in, a link to account settings and Sign out.

.account-menu · .account-pop

Initial
Hover
Image
Avatar

36 px circle with the first initial, or the profile picture.

.avatar · .avatar.has-image

Timeline

Rows share one label column. Sections head the track, then effects, sound and the packed layer rows. Scroll sideways on a phone.

0:000:010:020:030:040:050:060:070:080:090:100:110:120:130:140:15
Effects
Fade out→ Your colours. pill
Score · Candy Launch
Score · Candy Launch
Sound effects
Pop0.50s
Narrator
+3
Make something move labelpop
Every frame stays yours.rise
Colour beat 4pop
Watch it move.rise
Glossy blue orbitpop
Something newrise
Your launch brieftypewriter
Your story.pop
Make something movepop
Colour beat 3pop
Something new cardturn (3d)
Prompt candyrise
Your story. pillpop
Say it. Watch it move.fade
Colour beat 2pop
Brand introrise
Say it.slam
Your idea.pop
Timeline

The toolbar, ruler, section pills, the fx lane with a Fade out effect, the score, sound-effect cues with the Pop cue selected, and packed layer rows. The red flag is the playhead.

.timeline-shell · .ruler-row · .sections-row · .fx-row · .audio-group · .layer-row · .playhead

Every frame stays yours.rise
Text clip
Make something move labelpop
Selected
Colour beat 4pop
Shape clip
Folder · live eyes
Code clip
Clip

A layer on the timeline: trim handles at each end, fade dots, the name and its entrance. Selected clips get the white ring.

.layer-clip · .trim-handle · .clip-selected

Section pill

Coloured pills name each section; cuts between them can be rolled. Double-click a pill to set marks.

.section-pill · .cut.scene

Pop0.50s
Sound-effect cue

A mark per cue with a bar for its length. The selected cue shows its name and time.

.sfx-hit · .sfx-mark · .sfx-len · .sfx-tag

Playhead

The red flag scrubs; hold ⇧ to snap to beats.

.playhead-rail · .playhead

Inspector

The panel on the left. Tabs change with the selection: Style and Motion for a layer, Sound for a cue.

Style panel

Text, colour, outline, shadow and timing for the selected text layer.

aside.inspector · .layer-heading · .card

Motion panel

Entrance, exit and keyframes for the selected layer.

aside.inspector

Sound panel with library tiles

Volume, pitch and length for a cue, then the library: Keep length or Natural length, and tiles with an envelope, a name and a preview button.

.sound-heading · .sound-grid · .sound-tile.on

Claude panel

Connect Claude Code, or ask the built-in assistant.

aside.inspector

Libraries

Shaders, effects and sounds share one tile grammar: a preview, a name, and a quiet secondary action.

Default
Hover
Favourite
Picked
Shader and effect tiles

Hover lifts the tile and reveals the star; a favourite keeps a filled star.

.fx-tile · .fx-star.on

Effect library

Open and close effects first, then basics. Hover previews on the stage; a click adds at the playhead.

.fx-menu

Default
Hover
Playing here
Auto
Sound tiles

An envelope drawn from the sound, its name and length, and a preview button.

.sound-tile · .sound-pick · .sound-play

Home tiles

Home is a grid of projects and folders, with start tiles for new work across the top.

Start tiles

Blank formats, templates with their own art, and Import.

.start-row · .start-tile · .start-tile.template

15s · 1920×1080
mootionblue · LaunchEdited just now
15s · 1920×1080
Vertical trailerEdited 2 hours ago
15s · 1080×1080
One shapeEdited yesterday
Move here
Social0 projects
Project and folder tiles

A thumbnail you can scrub, the duration and size on hover, the name and when it was edited. The third tile is selected.

.project-tile · .project-tile.selected · .folder-tile

Social 0 projectsFolder———
mootionblue · LaunchLandscape15s—just now
Untitled landscapeLandscape15s—just now
Untitled squareSquare15s—just now
List rows

The list view: thumbnail, name, format, length, folder and date.

.project-row · .folder-row

Library tools

Filters, search, sort and the grid or list switch.

.lib-tools

Multi-select bar

Appears while selecting: count, Select all, Move to folder, Pin, Download and Delete. Delete asks in place, naming how many.

.bulk-bar · .bulk-btn.danger · .bulk-confirm

Loading tiles

Shown while projects load, at the size of a real tile.

.project-tile.skeleton

Sign-in form

Clerk’s form, dressed in the app’s type and tokens by auth.css. The page is the card; there is no box around the form.

Welcome back

Sign in to pick up where you left off.

Sign-in form

Email first, then a code. The primary button is a taller cousin of the key.

.mb-clerk-title · .mb-clerk-input · .mb-clerk-primary

Verify your email

Enter the code sent to sam@example.com.

Code step

Six boxes for the emailed code; the caret sits in the next empty box.

.mb-clerk-otp

Input focus
Button hover
Button pressed
Field and button states

Focus draws the accent border with a soft halo; the button presses 2 px like a key.

.mb-clerk-input:focus · .mb-clerk-primary:active