Menashi·Prompt Library 14 prompts
← all prompts

Motion craft standard — reference, not prompt

motion skill motiontimingeasingtaste

Result — Handed alongside motion work. The house timing bands and the cheap/expensive lists are what models actually absorb.

When to reach for this

Not a prompt — a **standard to attach to any motion brief**. It gives the model

The prompt

# Motion notes — the standard this asset should hit

Written for whoever refines RAIL STORE. These are the things that separate a
correct implementation from one that feels expensive. Everything here is a
judgement call, so disagree where you have a better argument.

## The garment turn is the whole asset

If only one thing gets your attention, it is this. Currently the turn is an 240 ms
opacity crossfade between two prepared images. It is *correct* and it is *cheap*.

What the reference shows is a garment **physically turning on its hanger**. The
hanger does not move. The hook does not move. The garment rotates about the vertical
axis through the hook, so its silhouette narrows to almost nothing at the halfway
point and the chest print slides across and out of view.

Ways to get there, roughly in order of how good they look per unit of risk:

1. **3D transform with a two-image face.** Put the `front` view on the front face and
   the `side` view on a rotated face, and rotate the pair about Y with
   `transform-style: preserve-3d`. Real geometry, real foreshortening. Needs care:
   the two images have different widths, so the hinge has to be the hook, not the
   image centre.
2. **Crossfade plus a strong horizontal squeeze.** Scale X from the side view's
   aspect to the front view's, with the easing on `cubic-bezier(0.22,1,0.36,1)` and
   the squeeze passing through ~0.15 at the midpoint. Much simpler, reads as a turn,
   and is very hard to break.
3. **Layered parallax.** Side view and front view offset horizontally and cross-faded
   on slightly different timers, so the two never resolve at the same instant. Reads
   as depth. Cheap.

Whichever you choose: **the hook must be the pivot.** A garment that scales or
rotates about its own centre detaches from the rail, and that single detail is what
makes an implementation look amateur. `transform-origin` should be the hook, which is
at 3.11% down the canvas and horizontally centred.

Do not let the neighbours move before the hovered garment does. The spread should
read as *the row making room*, so it lags the turn by ~40–60 ms rather than starting
with it.

## Durations and easing — house positions

- Durations that affect a *decision* (hover on a control): 120–160 ms. Longer feels
  laggy; the user is waiting on their own intent.
- Durations that show *the object obeying physics* (the garment turn, the overlay):
  220–320 ms. Anything shorter reads as a cut, anything longer as a loading bar.
- Staggered elements: 40–80 ms apart, never more. Beyond that the lag reads as jank.
- Easing: `cubic-bezier(0.22, 1, 0.36, 1)` (ease-out-quint) for anything arriving.
  `ease-out` for small state changes. **Never** ease a marquee — constant velocity or
  it looks like a stalled scroll.
- Never animate a focus ring. It must appear instantly, because it is an
  accessibility affordance and a delayed one is a usability failure.

## Things that read as expensive

- **Nothing arrives from nowhere.** Every element that appears should be moving
  *from* a plausible origin — the caption from the garment, the overlay from the
  catalogue layer, the pill from below. Instant appearance is what makes interfaces
  feel like jump-cuts.
- **The tap/stroke of a physical material.** A garment has weight. When the row
  spreads, do not let it glide uniformly — a hair of overshoot on the neighbours, or
  a 1.5% settle, is what makes it read as cloth rather than CSS.
- **Optical alignment over mathematical alignment.** A centred uppercase micro-label
  with letter-spacing needs its left sidebearing compensated or it reads 1px right.
  The counter and the name are optically centred as a pair, not each individually.
- **Restraint in the field.** The pegboard is a designed surface, not a pattern. It
  should be legible at 30 cm and gone at 1 m. If you can see individual rings while
  looking at a garment, it is too strong.
- **Continuous, seamless loops.** The marquee must not jump at the wrap. Translate by
  exactly one content-width, and make sure the duplicated copy is `aria-hidden` with
  no focusable element in it.

## Things that read as cheap — avoid these specifically

- Long durations on micro-interactions.
- Spring/bounce easing on anything that is not a deliberate physical metaphor.
- Shadows as decorative drops rather than as light. A shadow that is a soft grey blob
  under an object is a 2013 app icon; a shadow that falls *away from a consistent
  light source* and softens with distance is photography.
- Fading both ends of a transition so nothing is ever quite opaque.
- Animating `width`/`height`/`top`/`left` where `transform` would do. The spread
  currently animates `left`, which relayouts the row on every frame — transform is
  the correct channel and it is also smoother.
- Motion that continues when the user has asked for less of it. `prefers-reduced-motion`
  must produce instant swaps and a static marquee, not "the same thing but faster".

## The bar

Look at the reference frames in `/home/ubuntu/menashi-webstore/crops/` again before
you start and after you finish. The question is not "does mine match" — it is
**"would someone screenshot mine and post it"**. If the answer is no, find the thing
that makes it no and fix that, not the three easiest things instead.

Notes

Writing down *why* something reads as cheap ("a shadow that is a soft grey blob under

kind
motion
type
skill
model
any
effort
high
tool
manual
author
designer
status
proven
project
rail-store
created
2026-10-03

first used at /home/ubuntu/rail-store/references/motion-notes.md