@nodaro/prompts 1.18.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/index.cjs +9861 -1414
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +209 -10
  4. package/dist/index.d.ts +209 -10
  5. package/dist/index.js +9199 -765
  6. package/dist/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/__tests__/adult-only-ratchet.test.ts +18 -1
  9. package/src/__tests__/assemble-suno-input.test.ts +14 -1
  10. package/src/__tests__/character-motion-docs-example.test.ts +26 -0
  11. package/src/__tests__/character-motion-timing-catalogs.test.ts +76 -0
  12. package/src/__tests__/character-motion.test.ts +207 -0
  13. package/src/__tests__/fixtures/parameter-hint-golden.json +137 -1
  14. package/src/__tests__/hint-join.test.ts +57 -0
  15. package/src/__tests__/parameter-hint-mode.test.ts +28 -0
  16. package/src/__tests__/parameter-prompt-hint.test.ts +159 -0
  17. package/src/__tests__/parameter-registry-sync.test.ts +2 -0
  18. package/src/__tests__/picker-analyzer-registry.test.ts +1 -1
  19. package/src/__tests__/sound-aggregator.test.ts +1 -1
  20. package/src/__tests__/transition-timing-catalogs.test.ts +1 -1
  21. package/src/__tests__/video-reference-features.test.ts +10 -1
  22. package/src/age-floor.ts +1 -1
  23. package/src/assemble-suno-input.ts +3 -2
  24. package/src/camera-motions.ts +44 -42
  25. package/src/character-motion/animals-pets.ts +89 -0
  26. package/src/character-motion/athletic-stunts.ts +218 -0
  27. package/src/character-motion/camera-interaction.ts +137 -0
  28. package/src/character-motion/combat-weapons.ts +206 -0
  29. package/src/character-motion/dance.ts +173 -0
  30. package/src/character-motion/entrances-exits.ts +113 -0
  31. package/src/character-motion/evasive-falls.ts +134 -0
  32. package/src/character-motion/everyday-actions.ts +278 -0
  33. package/src/character-motion/face-expression.ts +182 -0
  34. package/src/character-motion/gestures.ts +308 -0
  35. package/src/character-motion/head-gestures.ts +98 -0
  36. package/src/character-motion/idle-ambient.ts +128 -0
  37. package/src/character-motion/posture-shifts.ts +143 -0
  38. package/src/character-motion/runway.ts +101 -0
  39. package/src/character-motion/stage-performance.ts +131 -0
  40. package/src/character-motion/turns-looks.ts +116 -0
  41. package/src/character-motion/two-person.ts +233 -0
  42. package/src/character-motion/types.ts +42 -0
  43. package/src/character-motion/unnatural-horror.ts +95 -0
  44. package/src/character-motion/vehicles-mounts.ts +101 -0
  45. package/src/character-motion/walks-runs.ts +125 -0
  46. package/src/character-motion.ts +286 -0
  47. package/src/factory-presets/music.ts +35 -35
  48. package/src/hint-join.ts +26 -0
  49. package/src/index.ts +2 -0
  50. package/src/parameter-prompt-hint.ts +67 -1
  51. package/src/picker-analyzer-registry.ts +9 -5
  52. package/src/picker-catalogs.ts +24 -0
  53. package/src/picker-wiring.ts +2 -0
  54. package/src/prompt-wizard-categories.ts +9 -5
  55. package/src/provider-prompt-doctrine.ts +1 -1
  56. package/src/sound-aggregator.ts +1 -1
@@ -0,0 +1,98 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** Head Gestures — 31 entries. Category id `head-gestures`. */
4
+ export const HEAD_GESTURES_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { id: "nod-eagerly", label: "Eager Nodding", category: "head-gestures", description: "A quick run of small, excited nods",
6
+ promptHint: "the subject nods eagerly in a quick run of small bouncing nods, the chin bobbing down and up as the eyebrows lift and a smile widens, the head settling level after the last nod",
7
+ term: "nods eagerly in small quick nods" },
8
+ { id: "give-firm-nod", label: "Firm Single Nod", category: "head-gestures", description: "One sharp, decisive nod of agreement",
9
+ promptHint: "the subject gives a single firm nod, the chin dropping sharply once and stopping dead with the jaw set and the eyes steady, before lifting the head back to level and holding it there",
10
+ term: "gives one firm decisive nod" },
11
+ { id: "nod-knowingly", label: "Knowing Nod", category: "head-gestures", description: "Small nods with a closed, knowing half-smile",
12
+ promptHint: "the subject nods knowingly in small nods, the lips pressing into a closed half-smile and the eyes narrowing slightly as if a suspicion is confirmed, the head settling level after the last nod",
13
+ term: "nods knowingly with a half-smile" },
14
+ { id: "give-chin-up-nod", label: "Chin-Up Nod", category: "head-gestures", description: "Casual upward chin-nod of greeting",
15
+ promptHint: "the subject flicks the chin upward in a single short nod of greeting, the head tipping back slightly and the eyebrows lifting briefly, before dropping the head back to level with a relaxed look",
16
+ term: "gives a chin-up nod" },
17
+ { id: "dip-head-in-thanks", label: "Nod of Thanks", category: "head-gestures", description: "Small grateful dip of the head, eyes closing",
18
+ promptHint: "the subject dips the head forward in a small grateful nod, the eyes closing briefly and a faint smile forming, and lifts the head back to level as the eyes reopen",
19
+ term: "dips head in a grateful nod" },
20
+ { id: "nod-along-listening", label: "Listening Nods", category: "head-gestures", description: "Small intermittent nods while someone talks",
21
+ promptHint: "the subject gives small intermittent nods while keeping the gaze on someone speaking nearby, the chin dipping lightly with a pause between nods, the lips closed and the face attentive throughout",
22
+ term: "nods along while listening" },
23
+ { id: "shake-head-in-disbelief", label: "Disbelieving Head Shake", category: "head-gestures", description: "Side-to-side head shake, eyes wide, mouth open",
24
+ promptHint: "the subject shakes the head side to side in wide, heavy turns of disbelief, the eyes wide and fixed ahead and the mouth slightly open, until the head comes to rest at center",
25
+ term: "shakes head in disbelief" },
26
+ { id: "shake-head-sadly", label: "Sad Head Shake", category: "head-gestures", description: "Small reluctant refusal with lowered eyes",
27
+ promptHint: "the subject shakes the head side to side in two small reluctant turns of refusal, the gaze lowered, the inner brows lifting and the lips pressed together in apology, the head settling still and slightly bowed",
28
+ term: "shakes head sadly in refusal" },
29
+ { id: "shake-head-no-no-no", label: "Rapid No-No-No", category: "head-gestures", description: "Rapid tiny head shakes, urgently refusing",
30
+ promptHint: "the subject shakes the head in rapid tiny side-to-side shakes, the eyes wide and the lips mouthing no, the chin barely leaving center, until the head stops square and still",
31
+ term: "shakes head no in rapid tiny shakes" },
32
+ { id: "shake-head-amused", label: "Amused Head Shake", category: "head-gestures", description: "Shakes head with a crooked, amused smile",
33
+ promptHint: "the subject shakes the head side to side with the eyes cast down, a breath of laughter puffing through the nose and a crooked smile spreading, before stopping the head and lifting the gaze back up",
34
+ term: "shakes head with an amused smile" },
35
+ { id: "tilt-head-both-ways", label: "Puzzled Double Tilt", category: "head-gestures", description: "Tilts one way, then the other, puzzling it out",
36
+ promptHint: "the subject tips the head toward one shoulder and holds it with narrowed eyes, and swings it across to the other shoulder in a second puzzled tilt, the gaze staying fixed ahead",
37
+ term: "tilts head one way and the other, puzzled" },
38
+ { id: "wobble-head-so-so", label: "Head Wobble", category: "head-gestures", description: "Loose side-to-side wobble meaning so-so",
39
+ promptHint: "the subject rocks the head in a loose side-to-side wobble, each ear dipping toward its shoulder in turn while the face stays forward and the lips purse noncommittally, before the head settles upright",
40
+ term: "wobbles head side to side, so-so" },
41
+ { id: "flick-hair-back-with-head", label: "Flick Hair Back", category: "head-gestures", description: "Snaps head aside to throw the hair back",
42
+ promptHint: "the subject snaps the head sharply to one side and back, throwing the hair off the face so it swings over the shoulder and falls behind it, the chin ending slightly lifted",
43
+ term: "flicks hair back with a head snap" },
44
+ { id: "jut-chin-defiantly", label: "Jut Chin Defiantly", category: "head-gestures", description: "Chin thrust forward, jaw set in defiance",
45
+ promptHint: "the subject juts the chin forward and slightly up, the jaw setting hard and the neck stiffening, the lips pressed tight and the eyes locked straight ahead in defiance, and holds the defiant set",
46
+ term: "juts chin forward defiantly" },
47
+ { id: "raise-chin-proudly", label: "Raise Chin Proudly", category: "head-gestures", description: "Chin lifts a notch, gaze down the nose",
48
+ promptHint: "the subject lifts the chin a notch from level, the neck lengthening and the shoulders drawing back, the eyelids lowering so the gaze looks down the nose, and holds the proud angle",
49
+ term: "raises chin proudly" },
50
+ { id: "toss-head-haughtily", label: "Haughty Head Toss", category: "head-gestures", description: "Chin flicks up as the face turns away",
51
+ promptHint: "the subject flicks the chin up and turns the face sharply away to one side in a haughty toss, the eyes closing briefly and the nose lifted, and holds the head averted",
52
+ term: "tosses head up and away haughtily" },
53
+ { id: "lower-head-in-shame", label: "Lower Head in Shame", category: "head-gestures", description: "Head sinks, eyes slide away, shoulders curl",
54
+ promptHint: "the subject lowers the head until the chin nears the chest, the eyes dropping and sliding away to one side and the shoulders curling inward, and holds the bowed, averted head",
55
+ term: "lowers head in shame" },
56
+ { id: "bow-head-solemnly", label: "Bow Head Solemnly", category: "head-gestures", description: "Head bowed from the neck in quiet respect",
57
+ promptHint: "the subject bows the head forward from the neck until the chin rests near the chest, the eyes closing and the body going still, and holds the lowered head in quiet respect",
58
+ term: "bows head in solemn silence" },
59
+ { id: "hang-head-in-defeat", label: "Hang Head in Defeat", category: "head-gestures", description: "Head drops heavy as the shoulders slump",
60
+ promptHint: "the subject lets the head drop and hang heavy from the neck, the shoulders slumping forward on a long exhale and the eyes going unfocused toward the floor, and leaves the head hanging",
61
+ term: "hangs head in defeat" },
62
+ { id: "drop-head-back-against-wall", label: "Head Back Against Wall", category: "head-gestures", description: "Head falls back to rest on the wall, exhausted",
63
+ promptHint: "the subject lets the head fall back until the back of the skull rests against the wall behind, the eyes closing and the throat lengthening as the breath leaves in an exhausted exhale",
64
+ term: "lets head fall back against the wall" },
65
+ { id: "rest-temple-on-window", label: "Temple Against Window", category: "head-gestures", description: "Head tilts to rest against the glass",
66
+ promptHint: "the subject tilts the head sideways until the temple comes to rest against the window, the shoulders loosening and the gaze drifting out through the glass, and stays leaning there",
67
+ term: "rests head against the window" },
68
+ { id: "point-with-chin", label: "Chin Point", category: "head-gestures", description: "Jerks the chin toward a spot, over there",
69
+ promptHint: "the subject jerks the chin toward a spot or person off to one side, the lips pushing forward and the eyebrows lifting as the eyes flick the same way, before bringing the head back to center",
70
+ term: "points with a jerk of the chin" },
71
+ { id: "beckon-with-head", label: "Head Beckon", category: "head-gestures", description: "Jerk of the head saying come on, follow",
72
+ promptHint: "the subject jerks the head sideways toward one shoulder in a come-on signal, the chin swinging out toward the direction to follow and back once or twice as the eyebrows lift, and faces forward again",
73
+ term: "beckons with a jerk of the head" },
74
+ { id: "pull-head-back-surprised", label: "Pull Head Back", category: "head-gestures", description: "Head draws straight back, chin tucked, brows up",
75
+ promptHint: "the subject pulls the head straight back in surprise, the chin tucking in against the neck, the eyebrows shooting up and the eyes widening, and holds the drawn-back position",
76
+ term: "pulls head back in surprise" },
77
+ { id: "avert-head-in-disgust", label: "Avert Head in Disgust", category: "head-gestures", description: "Head rears back and twists away from a smell",
78
+ promptHint: "the subject rears the head back and twists it away to one side, the chin tucking toward the shoulder on that side and the nose wrinkling, and holds the face turned away from the smell",
79
+ term: "averts head in disgust" },
80
+ { id: "lean-head-in-to-listen", label: "Lean In to Listen", category: "head-gestures", description: "Head pushes forward, one ear toward the sound",
81
+ promptHint: "the subject pushes the head forward and tilts it to bring one ear toward a faint sound, the eyes drifting unfocused and the brow knitting in concentration, and holds still to listen",
82
+ term: "leans head in to listen" },
83
+ { id: "rest-chin-in-hand", label: "Rest Chin in Hand", category: "head-gestures", description: "Chin sinks into the palm, gaze drifting",
84
+ promptHint: "the subject props one elbow on a surface and lowers the chin into the open palm, the cheek pushing up against the fingers as the weight of the head settles and the gaze drifts idly",
85
+ term: "rests chin in one hand" },
86
+ { id: "shake-off-daze", label: "Shake Off Daze", category: "head-gestures", description: "Hard head shakes to clear a dazed mind",
87
+ promptHint: "the subject squeezes the eyes shut and gives the head a few hard shakes side to side, the cheeks jostling, and blinks the eyes open wide as focus returns",
88
+ term: "shakes head to clear a daze" },
89
+ { id: "shake-out-wet-hair", label: "Shake Out Wet Hair", category: "head-gestures", description: "Vigorous head shake flinging water from hair",
90
+ promptHint: "the subject bends slightly forward and shakes the head vigorously side to side, the wet hair whipping and flinging droplets outward, and straightens up with the hair tousled across the face",
91
+ term: "shakes water out of wet hair" },
92
+ { id: "duck-head-sheepishly", label: "Duck Head Sheepishly", category: "head-gestures", description: "Head ducks down, eyes peek up, sheepish grin",
93
+ promptHint: "the subject ducks the head down and forward, the shoulders creeping up and the chin tucking, the eyes peeking up from under the brows with an apologetic grin, and holds the sheepish look",
94
+ term: "ducks head sheepishly" },
95
+ { id: "roll-head-full-circle", label: "Full Neck Roll", category: "head-gestures", description: "Head rolls in one full circle around the neck",
96
+ promptHint: "the subject drops the chin toward the chest and rolls the head in one full circle, past one shoulder, tipping back, past the other shoulder and down to the chest again, before lifting the head upright",
97
+ term: "rolls head in a full circle" },
98
+ ]
@@ -0,0 +1,128 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** Idle & Ambient — 41 entries. Category id `idle-ambient`. */
4
+ export const IDLE_AMBIENT_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { id: "breathe-visibly", label: "Breathe Visibly", category: "idle-ambient", description: "Chest rises and falls in a steady resting rhythm",
6
+ promptHint: "the subject holds still while the chest and shoulders rise on each inhale and sink back on each exhale in a steady resting rhythm, the rest of the body relaxed",
7
+ term: "breathes visibly at rest" },
8
+ { id: "sway-subtly", label: "Sway Subtly", category: "idle-ambient", description: "Barely-there side-to-side drift of a standing body",
9
+ promptHint: "the subject holds a standing position while the whole body drifts an inch or two to one side and back the other way in a barely visible balancing sway, feet planted",
10
+ term: "sways subtly in place" },
11
+ { id: "shift-weight", label: "Shift Weight", category: "idle-ambient", description: "Weight moves from one foot to the other and back",
12
+ promptHint: "the subject stands with weight on one leg, eases the pelvis across to load the other foot as the free knee softens, settles there, and drifts back again",
13
+ term: "shifts weight foot to foot" },
14
+ { id: "fidget-with-hands", label: "Fidget With Hands", category: "idle-ambient", description: "Restless small hand movements, fingers picking and rubbing",
15
+ promptHint: "the subject keeps both hands low in front of the body, fingers rubbing against each other, thumbs picking at the opposite palm and knuckles in restless small movements that never fully stop",
16
+ term: "fidgets with hands" },
17
+ { id: "blink-naturally", label: "Blink Naturally", category: "idle-ambient", description: "Relaxed natural blinks over a steady gaze",
18
+ promptHint: "the subject holds a steady gaze while the eyelids close and reopen in relaxed natural blinks at irregular intervals, the head and shoulders otherwise still",
19
+ term: "blinks naturally" },
20
+ { id: "look-around", label: "Look Around", category: "idle-ambient", description: "Eyes and head scan the surroundings side to side",
21
+ promptHint: "the subject turns the head to one side, eyes scanning the surroundings, brings it back through center and turns to the other side, gaze resting on each point of interest",
22
+ term: "looks around the space" },
23
+ { id: "tap-foot", label: "Tap Foot", category: "idle-ambient", description: "Heel planted, toes tap the ground in a steady beat",
24
+ promptHint: "the subject keeps one heel planted while the toes of that foot lift and tap back down against the ground in a steady beat, the leg bouncing slightly with each tap",
25
+ term: "taps a foot" },
26
+ { id: "drum-fingertips", label: "Drum Fingertips", category: "idle-ambient", description: "Fingertips ripple against a surface, pinky to index",
27
+ promptHint: "the subject rests one hand on a nearby surface and drums the fingertips against it in a rolling ripple from little finger to index, repeating the pattern absently in a loose restless rhythm",
28
+ term: "drums fingertips on a surface" },
29
+ { id: "adjust-clothes", label: "Adjust Clothes", category: "idle-ambient", description: "Tugs a hem, straightens a collar, smooths the front",
30
+ promptHint: "the subject tugs the hem of the garment down straight with both hands, smooths the front down over the torso, straightens the collar or strap with one hand and lets the arms drop back to rest",
31
+ term: "adjusts clothing" },
32
+ { id: "crack-neck", label: "Crack Neck", category: "idle-ambient", description: "Sharp head tilt to each side with a release",
33
+ promptHint: "the subject tips the head sharply toward one shoulder until it stops, brings it back to center and tips it to the other side, jaw loosening after each release",
34
+ term: "cracks the neck" },
35
+ { id: "roll-shoulders", label: "Roll Shoulders", category: "idle-ambient", description: "Shoulders lift, rotate back and drop in loose circles",
36
+ promptHint: "the subject lifts both shoulders up toward the ears, rolls them back and down in a loose circle and lets them drop, repeating the circle as the upper back loosens",
37
+ term: "rolls the shoulders" },
38
+ { id: "stretch-arms-overhead", label: "Stretch Arms Overhead", category: "idle-ambient", description: "Reaches up, palms pushed upward, then releases",
39
+ promptHint: "the subject reaches both arms straight up overhead, interlaces the fingers and pushes the palms upward as the back arches, and releases the arms back down to the sides with the shoulders dropping",
40
+ term: "stretches arms overhead" },
41
+ { id: "pace-restlessly", label: "Pace Restlessly", category: "idle-ambient", description: "Short restless line walked one way, turned, walked back",
42
+ promptHint: "the subject walks a few restless steps in one direction, plants a foot, turns about and walks the same short line back the other way, hands clasped behind the back, repeating the circuit",
43
+ term: "paces restlessly in a short line" },
44
+ { id: "rock-on-heels", label: "Rock on Heels", category: "idle-ambient", description: "Weight rolls from heels to toes and back",
45
+ promptHint: "the subject stands with feet together and rolls the weight back onto the heels so the toes lift, tips forward onto the balls of the feet, and rocks back again, hands at rest",
46
+ term: "rocks heel to toe" },
47
+ { id: "fiddle-with-ring", label: "Fiddle With Ring", category: "idle-ambient", description: "Twists a ring around one finger, back and forth",
48
+ promptHint: "the subject holds the hands together low in front and turns a ring around one finger with the thumb and fingertips of the other hand, twisting it back and forth in an absent repeated motion",
49
+ term: "fiddles with a ring" },
50
+ { id: "bite-nail", label: "Bite Nail", category: "idle-ambient", description: "Raises a hand and nibbles at a fingernail",
51
+ promptHint: "the subject raises one hand to the mouth and nibbles at the edge of a fingernail, eyes drifting elsewhere, lowers the hand partway, and brings it back up to the lips again",
52
+ term: "bites a fingernail" },
53
+ { id: "hug-self-against-cold", label: "Hug Self Against Cold", category: "idle-ambient", description: "Arms wrap the torso, hands rub the upper arms for warmth",
54
+ promptHint: "the subject wraps both arms across the chest, grips the opposite upper arms and rubs them up and down for warmth, shoulders hunching and drawing in as the body tightens against the cold",
55
+ term: "hugs self against the cold" },
56
+ { id: "bounce-on-toes", label: "Bounce on Toes", category: "idle-ambient", description: "Light springy bounces on the balls of the feet",
57
+ promptHint: "the subject rises onto the balls of the feet and drops back down in light springy bounces, knees soft, heels barely touching the ground, arms loose at the sides",
58
+ term: "bounces on the toes" },
59
+ { id: "stretch-neck", label: "Stretch Neck", category: "idle-ambient", description: "Ear eases toward each shoulder in a long lean",
60
+ promptHint: "the subject leans the head to one side, ear easing toward the shoulder and holding the stretch, lifts it back through center and leans to the other side, shoulders staying level",
61
+ term: "stretches the neck side to side" },
62
+ { id: "glance-at-watch", label: "Glance at Watch", category: "idle-ambient", description: "Repeated wrist lift to check the time",
63
+ promptHint: "the subject lifts the wrist, turns it to glance down at a watch, drops the arm back to the side, looks up and away, and lifts the wrist to check the time again",
64
+ term: "glances at the watch repeatedly" },
65
+ { id: "exhale-and-settle", label: "Exhale & Settle", category: "idle-ambient", description: "Deep breath in, long breath out, shoulders drop",
66
+ promptHint: "the subject draws a deep breath that lifts the chest and shoulders, lets it out in a long exhale as the shoulders drop and the whole body softens into a settled stillness",
67
+ term: "exhales and settles" },
68
+ { id: "nod-to-music", label: "Nod to Music", category: "idle-ambient", description: "Head bobs in time with unheard music",
69
+ promptHint: "the subject bobs the head in a small steady down-up nod as if keeping time with music only they can hear, chin dipping on each beat, shoulders loose",
70
+ term: "nods along to unheard music" },
71
+ { id: "sway-eyes-closed", label: "Sway With Eyes Closed", category: "idle-ambient", description: "Eyes shut, body rocks side to side in place",
72
+ promptHint: "the subject closes the eyes and lets the body rock from side to side in place, weight rolling foot to foot, head drifting with the motion and face relaxed",
73
+ term: "sways in place with eyes closed" },
74
+ { id: "twirl-hair", label: "Twirl Hair", category: "idle-ambient", description: "Winds a strand of hair around one finger",
75
+ promptHint: "the subject lifts one hand to a loose strand of hair, winds it around the index finger, lets it unwind and winds it again in an absent repeated motion, gaze elsewhere",
76
+ term: "twirls a strand of hair" },
77
+ { id: "knead-back-of-neck", label: "Knead Back of Neck", category: "idle-ambient", description: "Hand reaches back to knead the neck, head dips",
78
+ promptHint: "the subject reaches one hand behind the head to grip the back of the neck, kneads it with the fingers as the head dips and the elbow points out, and lets the hand slide down",
79
+ term: "kneads the back of the neck" },
80
+ { id: "tuck-hair-behind-ear", label: "Tuck Hair Behind Ear", category: "idle-ambient", description: "Fingers sweep a strand back behind the ear",
81
+ promptHint: "the subject raises one hand to the face, sweeps a loose strand of hair back with the fingertips and tucks it behind the ear, and lets the hand drop back to the side",
82
+ term: "tucks hair behind the ear" },
83
+ { id: "wring-hands", label: "Wring Hands", category: "idle-ambient", description: "Hands clasp and twist over each other, restless",
84
+ promptHint: "the subject clasps both hands together in front of the body and wrings them, one hand twisting over the other, fingers sliding and interlacing, pressing and releasing in a restless repeated motion",
85
+ term: "wrings the hands" },
86
+ { id: "pop-knuckles", label: "Pop Knuckles", category: "idle-ambient", description: "Presses and flexes each hand's knuckles in turn",
87
+ promptHint: "the subject presses the fingers of one hand flat with the other, bends them back until the knuckles pop, swaps hands and does the same, and shakes both hands loose",
88
+ term: "pops the knuckles" },
89
+ { id: "cross-and-uncross-arms", label: "Cross & Uncross Arms", category: "idle-ambient", description: "Arms fold across the chest, release, fold again",
90
+ promptHint: "the subject folds both arms across the chest, holds them there, lets them drop to the sides, and folds them again the other way round, torso settling with each change",
91
+ term: "crosses and uncrosses the arms" },
92
+ { id: "scuff-toe", label: "Scuff Toe", category: "idle-ambient", description: "Toe drags small arcs against the ground",
93
+ promptHint: "the subject keeps weight on one leg while the toe of the other foot drags small arcs back and forth against the ground, head tipped down toward it, hands at rest",
94
+ term: "scuffs a toe on the ground" },
95
+ { id: "shift-in-seat", label: "Shift in Seat", category: "idle-ambient", description: "Seated body resettles, legs recross",
96
+ promptHint: "the subject resettles in the seat, lifting the pelvis slightly to shift position, uncrossing and recrossing the legs and leaning back into a new resting posture",
97
+ term: "shifts in the seat" },
98
+ { id: "stifle-a-yawn", label: "Stifle a Yawn", category: "idle-ambient", description: "Mouth opens wide, hand covers it, eyes squeeze",
99
+ promptHint: "the subject opens the mouth wide in a yawn, raises one hand to cover it, eyes squeezing shut and head tipping back, and lets the hand drop as the jaw closes",
100
+ term: "stifles a yawn" },
101
+ { id: "shiver-tremble", label: "Shiver & Tremble", category: "idle-ambient", description: "Fine tremor runs through the body, shoulders drawn up",
102
+ promptHint: "the subject shivers, shoulders drawing up toward the ears and jaw tightening as a fine tremor runs through the arms and torso, hands shaking slightly and the body pulling in on itself",
103
+ term: "shivers and trembles" },
104
+ { id: "bounce-knee-seated", label: "Bounce Knee While Seated", category: "idle-ambient", description: "Seated, one heel lifts and the knee jiggles up and down",
105
+ promptHint: "the subject sits with one heel lifted off the ground and bounces that knee up and down in a small restless jiggle driven from the ball of the foot, the rest of the body still",
106
+ term: "bounces a knee while seated" },
107
+ { id: "blow-hair-from-face", label: "Blow Hair From Face", category: "idle-ambient", description: "Puffs air upward to lift a strand off the forehead",
108
+ promptHint: "the subject juts the lower lip forward and blows a puff of air upward so a loose strand of hair lifts off the forehead, flutters and drops back into place",
109
+ term: "blows a strand of hair from the face" },
110
+ { id: "swing-dangling-feet", label: "Swing Dangling Feet", category: "idle-ambient", description: "Seated with feet hanging free, lower legs swing",
111
+ promptHint: "the subject sits with the feet dangling clear of the ground and swings the lower legs forward and back from the knees in an easy alternating rhythm, heels knocking lightly against the seat edge",
112
+ term: "swings dangling feet" },
113
+ { id: "twirl-pen", label: "Twirl Pen", category: "idle-ambient", description: "Flicks a pen around the thumb in a continuous spin",
114
+ promptHint: "the subject holds a pen between the fingers of one hand and flicks it around the thumb in a continuous spinning twirl, catching it each time it comes round and sending it spinning again",
115
+ term: "twirls a pen" },
116
+ { id: "spin-in-office-chair", label: "Spin in Office Chair", category: "idle-ambient", description: "Pushes off to send a swivel chair round in a full turn",
117
+ promptHint: "the subject sits in a swivel chair, pushes off with one foot to send the chair round in a full spinning turn with the legs lifted clear, and drags a toe to stop facing forward again",
118
+ term: "spins in an office chair" },
119
+ { id: "nod-off-and-jerk-awake", label: "Nod Off & Jerk Awake", category: "idle-ambient", description: "Head sinks as eyes droop, then snaps upright with a jolt",
120
+ promptHint: "the subject nods off, eyelids drooping and head sinking forward until the chin nears the chest, and jerks awake with a jolt, head snapping upright and eyes flying open",
121
+ term: "nods off and jerks awake" },
122
+ { id: "rock-back-and-forth-huddled", label: "Rock Huddled", category: "idle-ambient", description: "Knees drawn up, arms around the shins, body rocks",
123
+ promptHint: "the subject sits huddled with the knees drawn up and arms wrapped around the shins, and rocks the whole body forward and back from the pelvis in a steady repeated motion, head bowed",
124
+ term: "rocks back and forth while huddled" },
125
+ { id: "blow-into-cupped-hands", label: "Blow Into Cupped Hands", category: "idle-ambient", description: "Cupped hands raised to the mouth, warmed with breath",
126
+ promptHint: "the subject raises both hands cupped together to the mouth, blows a long breath into the palms, rubs them against each other and blows into them again, shoulders hunched against the cold",
127
+ term: "blows into cupped hands" },
128
+ ]
@@ -0,0 +1,143 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** Posture Shifts — 46 entries. Category id `posture-shifts`. */
4
+ export const POSTURE_SHIFTS_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { id: "sit-down-on-chair", label: "Sit on Chair", category: "posture-shifts", description: "Lowers from standing into a chair",
6
+ promptHint: "the subject backs up to a chair, bends at the knees and waist, reaches one hand back to the seat and lowers their weight onto it, settling upright with both feet flat",
7
+ term: "sits down on a chair" },
8
+ { id: "sit-down-on-floor", label: "Sit on Floor", category: "posture-shifts", description: "Lowers from standing to sitting on the ground",
9
+ promptHint: "the subject bends at the knees, drops one hand to the ground for support and lowers their pelvis to the floor, folding the legs in and settling into a seated position",
10
+ term: "sits down on the floor" },
11
+ { id: "stand-up-from-chair", label: "Stand from Chair", category: "posture-shifts", description: "Rises out of a chair to standing",
12
+ promptHint: "the subject plants both feet, leans the torso forward over the knees, pushes down through the legs and rises out of the chair to full standing height, shoulders settling back",
13
+ term: "stands up from a chair" },
14
+ { id: "stand-up-from-floor", label: "Stand from Floor", category: "posture-shifts", description: "Rises from sitting on the ground to standing",
15
+ promptHint: "the subject shifts their weight onto one hand and one foot, pushes up from the floor, brings the second foot under them and straightens to standing, brushing off their hands",
16
+ term: "stands up from the floor" },
17
+ { id: "kneel-down", label: "Kneel Down", category: "posture-shifts", description: "Lowers onto both knees",
18
+ promptHint: "the subject lowers one knee to the ground and brings the second knee down beside it, settling into an upright kneeling position with hands resting on the thighs",
19
+ term: "kneels down on both knees" },
20
+ { id: "take-a-knee", label: "Take a Knee", category: "posture-shifts", description: "Drops onto one knee, other foot planted",
21
+ promptHint: "the subject steps one foot forward, lowers the back knee to the ground and rests a forearm across the raised front thigh, holding the half-kneel with the torso upright",
22
+ term: "takes a knee" },
23
+ { id: "rise-from-kneeling", label: "Rise from Kneeling", category: "posture-shifts", description: "Stands up from a kneeling position",
24
+ promptHint: "the subject brings one foot forward from a kneeling position, plants it flat, presses a hand to the raised knee and drives up through the legs to standing",
25
+ term: "rises from kneeling" },
26
+ { id: "sit-back-on-heels", label: "Sit Back on Heels", category: "posture-shifts", description: "Settles the pelvis onto the heels from kneeling",
27
+ promptHint: "the subject lowers their pelvis back from an upright kneel to rest on the heels, hands settling on the thighs and the back staying straight in a seated kneel",
28
+ term: "sits back on their heels" },
29
+ { id: "crouch-down", label: "Crouch Down", category: "posture-shifts", description: "Drops low on bent knees, balanced on the toes",
30
+ promptHint: "the subject bends deep at the knees and waist and drops into a low crouch, weight balanced on the balls of the feet, one hand touching the ground for balance",
31
+ term: "drops into a crouch" },
32
+ { id: "rise-from-crouch", label: "Rise from Crouch", category: "posture-shifts", description: "Straightens up from a low crouch",
33
+ promptHint: "the subject pushes up through the legs from a low crouch, the hand leaving the ground and the torso unfolding upward until standing at full height, shoulders settling",
34
+ term: "rises from a crouch" },
35
+ { id: "squat-to-look", label: "Squat to Look", category: "posture-shifts", description: "Squats down to inspect something low",
36
+ promptHint: "the subject bends at the knees and squats down level with something on the ground, forearms resting on the thighs and head tilting forward to inspect it closely",
37
+ term: "squats down for a closer look" },
38
+ { id: "jump-to-feet", label: "Jump to Feet", category: "posture-shifts", description: "Springs from the ground straight to standing",
39
+ promptHint: "the subject pushes off the ground with both hands and feet in one burst, springing straight up from the floor to standing and landing balanced with knees slightly bent",
40
+ term: "jumps to their feet" },
41
+ { id: "lie-down-on-back", label: "Lie on Back", category: "posture-shifts", description: "Lowers from sitting to lying face-up",
42
+ promptHint: "the subject leans back from sitting onto their elbows and lowers their back and head to the surface until lying flat face-up, legs extended and arms resting at the sides",
43
+ term: "lies down on their back" },
44
+ { id: "lie-down-on-side", label: "Lie on Side", category: "posture-shifts", description: "Lowers onto one side, knees bent",
45
+ promptHint: "the subject lowers onto one hip and rolls onto their side, tucking the lower arm beneath their head as the knees bend and draw up and the body settles into a side-lying rest",
46
+ term: "lies down on their side" },
47
+ { id: "lie-down-on-stomach", label: "Lie on Stomach", category: "posture-shifts", description: "Lowers to lying face-down on folded arms",
48
+ promptHint: "the subject walks their hands forward along the surface from kneeling and lowers their torso until lying face-down, propping the chin on folded forearms with legs stretched out behind",
49
+ term: "lies down on their stomach" },
50
+ { id: "roll-over", label: "Roll Over", category: "posture-shifts", description: "Turns from one side to the other while lying",
51
+ promptHint: "the subject rolls from lying on one side across their back to the opposite side, lifting the top knee and shoulder to lead the turn and resettling with the other arm now on top",
52
+ term: "rolls over onto the other side" },
53
+ { id: "curl-up", label: "Curl Up", category: "posture-shifts", description: "Draws the knees to the chest while lying on one side",
54
+ promptHint: "the subject draws both knees up toward the chest while lying on one side, wrapping the arms around the shins and tucking the chin down into a tight curl",
55
+ term: "curls up on their side" },
56
+ { id: "prop-up-on-elbow", label: "Prop on Elbow", category: "posture-shifts", description: "Lifts head and shoulders onto one elbow from lying",
57
+ promptHint: "the subject lifts their head and shoulders off the surface and props the upper body up on one bent elbow, the other hand resting across the waist as the gaze comes level",
58
+ term: "props up on one elbow" },
59
+ { id: "get-up-from-lying", label: "Get Up from Lying", category: "posture-shifts", description: "Rises from lying flat all the way to standing",
60
+ promptHint: "the subject rolls from lying flat onto one side, pushes up onto one hand into a seated position, brings the feet beneath them and rises to full standing height",
61
+ term: "gets up from lying down" },
62
+ { id: "sit-up-in-bed", label: "Sit Up in Bed", category: "posture-shifts", description: "Rises from lying to sitting against the pillows",
63
+ promptHint: "the subject braces both palms against the mattress from lying in bed and curls the torso upward to sitting, shifting back to rest their shoulders against the pillows and headboard",
64
+ term: "sits up in bed" },
65
+ { id: "swing-legs-out-of-bed", label: "Legs Out of Bed", category: "posture-shifts", description: "Sits up and swings the feet to the floor",
66
+ promptHint: "the subject pivots on their pelvis from sitting up in bed, swings both legs over the edge of the bed and plants their feet on the floor, settling seated on the edge with hands on the mattress",
67
+ term: "swings legs out of bed" },
68
+ { id: "wake-and-stretch", label: "Wake and Stretch", category: "posture-shifts", description: "Stretches arms overhead with a yawn on waking",
69
+ promptHint: "the subject stirs from sleep, raises both arms overhead in a full-body stretch, yawning wide, and lets the arms drop back down as the eyes open",
70
+ term: "stretches and yawns on waking" },
71
+ { id: "flop-onto-bed", label: "Flop onto Bed", category: "posture-shifts", description: "Falls backward onto a bed, arms flung out",
72
+ promptHint: "the subject stands at the edge of a bed, lets their knees go and falls backward onto the mattress, arms flung out to the sides, bouncing once and lying sprawled on their back",
73
+ term: "flops backward onto the bed" },
74
+ { id: "lean-back-in-chair", label: "Lean Back in Chair", category: "posture-shifts", description: "Eases the torso back against the chair back",
75
+ promptHint: "the subject tips the torso backward from sitting upright until the shoulders sink into the chair back, hands coming to rest on the armrests and the chin lifting in a relaxed lean",
76
+ term: "leans back in the chair" },
77
+ { id: "plant-elbows-on-knees", label: "Elbows on Knees", category: "posture-shifts", description: "Leans forward, forearms braced on the thighs",
78
+ promptHint: "the subject hinges the torso forward at the pelvis from sitting upright and plants both elbows on the knees, hands clasping loosely between the legs and the head lowering in attention",
79
+ term: "leans forward, elbows on knees" },
80
+ { id: "shift-to-edge-of-seat", label: "Edge of Seat", category: "posture-shifts", description: "Scoots forward to the front of the seat, alert",
81
+ promptHint: "the subject slides their pelvis forward to the front edge of the seat, feet drawing back beneath them and the torso tilting forward, alert and ready to stand",
82
+ term: "shifts to the edge of the seat" },
83
+ { id: "cross-legs-seated", label: "Cross Legs", category: "posture-shifts", description: "Lifts one leg over the other while seated",
84
+ promptHint: "the subject lifts one leg from sitting with both feet flat and lays it over the opposite knee, the foot hanging loose as the hands settle on the top thigh",
85
+ term: "crosses one leg over the other" },
86
+ { id: "uncross-and-stand", label: "Uncross & Stand", category: "posture-shifts", description: "Uncrosses the legs and rises to standing",
87
+ promptHint: "the subject unhooks the crossed leg and sets both feet flat, leans the weight forward over the toes and rises from the seat to standing in one continuous motion",
88
+ term: "uncrosses legs and stands up" },
89
+ { id: "put-feet-up", label: "Put Feet Up", category: "posture-shifts", description: "Swings the feet up onto a table or ottoman",
90
+ promptHint: "the subject leans back in the seat and lifts both legs, swinging the feet up onto a low table or ottoman and crossing the ankles, hands folding behind the head",
91
+ term: "puts their feet up" },
92
+ { id: "recline-back", label: "Recline", category: "posture-shifts", description: "Leans back until nearly lying, legs stretched out",
93
+ promptHint: "the subject eases the torso backward from sitting upright until reclined at a low angle, legs stretching out in front and one arm folding behind the head as a rest",
94
+ term: "reclines, legs stretched out" },
95
+ { id: "settle-into-couch", label: "Settle into Couch", category: "posture-shifts", description: "Drops onto a couch and sinks into the cushions",
96
+ promptHint: "the subject drops down onto a couch and sinks into the cushions, shifting the pelvis once to get comfortable and letting the arms spread along the back of the seat",
97
+ term: "settles into a couch" },
98
+ { id: "slump-down", label: "Slump", category: "posture-shifts", description: "Sags down, shoulders and head dropping",
99
+ promptHint: "the subject lets the shoulders roll forward and drop, the spine rounding and the head sinking as the whole body sags lower, arms going loose at the sides",
100
+ term: "slumps, shoulders dropping" },
101
+ { id: "straighten-up", label: "Straighten Up", category: "posture-shifts", description: "Pulls the spine tall, shoulders back",
102
+ promptHint: "the subject draws the spine upright from a slouch, pulling the shoulders back and down, lifting the chin and squaring the chest until sitting or standing fully tall",
103
+ term: "straightens up, shoulders back" },
104
+ { id: "perch-on-table-edge", label: "Perch on Table", category: "posture-shifts", description: "Rests the pelvis against a table edge, legs out",
105
+ promptHint: "the subject backs up to a table, rests their pelvis against its edge and leans the weight onto it, legs extended forward and crossed at the ankles, hands gripping the edge",
106
+ term: "perches on the edge of a table" },
107
+ { id: "hop-onto-counter", label: "Hop onto Counter", category: "posture-shifts", description: "Boosts up to sit on a counter, feet dangling",
108
+ promptHint: "the subject faces away from a counter, plants both palms on its surface behind them and hops up to sit on it, legs dangling and heels swinging free above the floor",
109
+ term: "hops up to sit on a counter" },
110
+ { id: "lean-against-wall", label: "Lean on Wall", category: "posture-shifts", description: "Settles one shoulder against a wall",
111
+ promptHint: "the subject steps up to a wall, turns and settles one shoulder into it, the weight sinking into the lean as the ankles cross and the arms fold across the chest",
112
+ term: "leans a shoulder against the wall" },
113
+ { id: "push-off-wall", label: "Push Off Wall", category: "posture-shifts", description: "Straightens off a wall lean to standing free",
114
+ promptHint: "the subject presses the shoulder into the wall and pushes off it, uncrossing the ankles and stepping away as the body straightens to a free-standing posture",
115
+ term: "pushes off the wall" },
116
+ { id: "slide-down-wall", label: "Slide Down Wall", category: "posture-shifts", description: "Slides down a wall to sit on the floor",
117
+ promptHint: "the subject leans their back against a wall and lets the knees bend, sliding down the surface until seated on the floor with knees drawn up and forearms resting on them",
118
+ term: "slides down the wall to the floor" },
119
+ { id: "lean-on-counter", label: "Lean on Counter", category: "posture-shifts", description: "Rests both forearms on a counter or bar",
120
+ promptHint: "the subject steps up to a counter, plants both forearms flat on it and lets the weight settle forward onto the elbows, hands clasping loosely and one foot hooking behind the other",
121
+ term: "leans onto the counter on both forearms" },
122
+ { id: "brace-hands-on-knees", label: "Hands on Knees", category: "posture-shifts", description: "Bends over and braces the hands on the knees",
123
+ promptHint: "the subject bends forward at the waist and braces both hands on the knees, the back rounding and the head hanging low as the arms take the weight of the torso",
124
+ term: "bends over, hands on knees" },
125
+ { id: "snap-to-attention", label: "Snap to Attention", category: "posture-shifts", description: "Snaps upright, heels together, arms at the sides",
126
+ promptHint: "the subject snaps upright, clicking the heels together and driving both arms straight down to the sides, chest lifting and chin level as the body locks into a rigid stance",
127
+ term: "snaps to attention, heels together" },
128
+ { id: "rise-on-tiptoes", label: "Rise on Tiptoes", category: "posture-shifts", description: "Rises on the toes to see over a crowd",
129
+ promptHint: "the subject rises onto the balls of the feet, heels lifting off the ground and the neck stretching tall to see over the heads in front, arms held close for balance",
130
+ term: "rises on tiptoes to see over a crowd" },
131
+ { id: "lean-on-railing", label: "Lean on Railing", category: "posture-shifts", description: "Rests the forearms on a railing, gazing out",
132
+ promptHint: "the subject steps up to a railing, lays both forearms along the top rail and lets the weight settle forward onto them, hands loosely clasped as the gaze goes out beyond",
133
+ term: "leans on a railing on both forearms" },
134
+ { id: "settle-into-meditation", label: "Settle into Meditation", category: "posture-shifts", description: "Sits cross-legged, spine tall, eyes closing",
135
+ promptHint: "the subject lowers to the floor and folds the legs into a cross-legged seat, straightening the spine, resting the backs of the hands on the knees and letting the eyes close",
136
+ term: "settles cross-legged into meditation" },
137
+ { id: "lace-hands-behind-head", label: "Hands Behind Head", category: "posture-shifts", description: "Leans back, fingers laced behind the head",
138
+ promptHint: "the subject leans back in the chair and laces the fingers behind the head, elbows flaring wide as the weight settles into the chair back and the chest opens",
139
+ term: "leans back, fingers laced behind head" },
140
+ { id: "drop-head-onto-desk", label: "Head onto Desk", category: "posture-shifts", description: "Folds forward and drops the head onto the desk",
141
+ promptHint: "the subject folds forward from sitting and lets the forehead drop onto the desk between the outstretched arms, going limp with shoulders sagging and the arms lying flat on the surface",
142
+ term: "drops head onto the desk" },
143
+ ]
@@ -0,0 +1,101 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** Runway & Model — 32 entries. Category id `runway`. */
4
+ export const RUNWAY_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { id: "walk-the-runway", label: "Runway Walk", category: "runway", description: "Straight-line catwalk, one foot in front of the other",
6
+ promptHint: "the subject walks a straight line toward the camera, each foot landing directly in front of the other, one hip leading each stride, shoulders back, arms swinging loosely at the sides, gaze locked ahead",
7
+ term: "walks the runway, feet landing in one line" },
8
+ { id: "walk-mark-and-turn", label: "Walk & Turn", category: "runway", description: "Reach the end mark, hold a beat, turn and walk back",
9
+ promptHint: "the subject walks to the end mark, plants both feet and holds a beat squared to the camera, pivots a half turn on the ball of the front foot and walks back the way they came",
10
+ term: "walks to the mark, turns and walks back" },
11
+ { id: "pivot-mid-stride", label: "Mid-Stride Pivot", category: "runway", description: "Unbroken half-turn on the ball of the foot, no pause",
12
+ promptHint: "the subject reverses direction mid-walk without breaking rhythm, the lead foot planting and the body pivoting a half turn on the ball of that foot as the trailing leg swings through into the next stride",
13
+ term: "pivots mid-stride and returns" },
14
+ { id: "stomp-editorial-walk", label: "Editorial Stomp", category: "runway", description: "Heavy heel-first strides, knees driving, arms rigid",
15
+ promptHint: "the subject strides forward driving each heel hard into the floor, knees lifting high and punching down, torso rigid and arms held straight and stiff at the sides, chin level and jaw set",
16
+ term: "stomps forward in an editorial walk" },
17
+ { id: "sway-hips-walk", label: "Hip-Sway Walk", category: "runway", description: "Exaggerated hip swing on every step",
18
+ promptHint: "the subject walks toward the camera with an exaggerated sway, the hips rolling side to side on every step, each foot crossing in front of the other, shoulders countering the swing and one hand trailing along the thigh",
19
+ term: "walks with an exaggerated hip sway", adultOnly: true },
20
+ { id: "stalk-high-fashion-walk", label: "High-Fashion Walk", category: "runway", description: "Rigid torso, pinned arms, long stiff strides, blank face",
21
+ promptHint: "the subject takes long stiff strides with the torso held perfectly rigid, arms pinned straight at the sides barely moving, face blank and gaze fixed past the camera, the legs doing all the work",
22
+ term: "walks rigid and stiff, arms pinned at sides" },
23
+ { id: "stop-and-pose", label: "Stop & Pose", category: "runway", description: "Plant, shift weight back, chin up, hold, walk on",
24
+ promptHint: "the subject walks forward, plants both feet and stops, shifts the weight onto the back leg with the front knee softening, squares the shoulders to the camera and lifts the chin, holds the shape, and walks on",
25
+ term: "stops and hits a pose" },
26
+ { id: "land-hand-on-hip", label: "Hand-on-Hip Stop", category: "runway", description: "Arrive, one hand rises to the hip, elbow out",
27
+ promptHint: "the subject arrives at the mark and plants the feet as one hand rises and lands on the hip with the elbow angled out, the opposite arm hanging loose, weight settling onto one leg",
28
+ term: "stops, one hand landing on the hip" },
29
+ { id: "flip-the-hair", label: "Hair Flip", category: "runway", description: "Head dips and whips over, hair arcs and settles",
30
+ promptHint: "the subject dips the head down and to one side and whips it up and over, the hair arcing through the air in a full sweep before falling and settling back across the shoulders",
31
+ term: "flips the hair over" },
32
+ { id: "sweep-hair-back", label: "Hair Sweep Back", category: "runway", description: "One hand rakes the hair off the face while walking",
33
+ promptHint: "the subject brings one hand up to the forehead while walking and rakes the fingers back through the hair, pulling it off the face and letting it fall behind the shoulder without breaking stride",
34
+ term: "sweeps the hair back with one hand" },
35
+ { id: "drop-coat-off-shoulders", label: "Coat Drop Reveal", category: "runway", description: "Shrug the coat off and let it fall to reveal the outfit",
36
+ promptHint: "the subject shrugs both shoulders back so the coat slides down the arms, catches it at the elbows for a beat and lets it drop to the floor behind, revealing the outfit underneath",
37
+ term: "drops the coat off the shoulders", adultOnly: true },
38
+ { id: "hook-jacket-over-shoulder", label: "Jacket Over Shoulder", category: "runway", description: "Shrug off the jacket and hook it over one shoulder",
39
+ promptHint: "the subject slips one arm then the other out of the jacket while walking, gathers it in one hand and hooks it over the shoulder on a finger, the free arm swinging with the stride",
40
+ term: "hooks the jacket over one shoulder" },
41
+ { id: "pause-look-over-shoulder", label: "Over-the-Shoulder Pause", category: "runway", description: "Walk away, stop, look back over the shoulder, hold",
42
+ promptHint: "the subject walks away from the camera, stops, and turns the head back over one shoulder to look at the lens, the body still facing away, holding the look before walking on",
43
+ term: "pauses and looks back over the shoulder" },
44
+ { id: "sultry-look-back", label: "Sultry Look Back", category: "runway", description: "Chin to shoulder, half-lidded gaze back at the lens",
45
+ promptHint: "the subject walks away, rolls one shoulder back and drops the chin toward it, turning a half-lidded sultry gaze back over the shoulder at the camera, lips parted, before walking on",
46
+ term: "throws a sultry look back over the shoulder", adultOnly: true },
47
+ { id: "turn-full-circle", label: "Full Turn", category: "runway", description: "Rotate a full circle in place to show every side",
48
+ promptHint: "the subject rotates a full circle in place, stepping the feet around in small pivots with arms held slightly away from the body so the outfit is seen from every side, finishing squared to the camera",
49
+ term: "turns a full circle to show the outfit" },
50
+ { id: "take-sunglasses-off", label: "Sunglasses Off", category: "runway", description: "Slide the sunglasses off and lower them, eyes to lens",
51
+ promptHint: "the subject reaches up with one hand, grips the sunglasses by one arm and slides them off the face, lowering them to chest height as the eyes lift and lock onto the camera",
52
+ term: "takes the sunglasses off" },
53
+ { id: "push-sunglasses-onto-head", label: "Sunglasses Up", category: "runway", description: "One finger lifts the sunglasses off the eyes onto the crown",
54
+ promptHint: "the subject raises one hand to the bridge of the sunglasses and pushes them up off the eyes, sliding them back to seat on the crown of the head, then drops the hand as the eyes settle on the camera",
55
+ term: "pushes the sunglasses up onto the head" },
56
+ { id: "swing-the-bag", label: "Bag Swing", category: "runway", description: "Handbag swings from one hand with the stride",
57
+ promptHint: "the subject walks with a handbag held in one hand, the arm swinging it forward and back in a wide arc with each stride while the other arm swings free in counter-rhythm",
58
+ term: "swings the bag with the stride" },
59
+ { id: "campaign-walk-to-camera", label: "Campaign Walk", category: "runway", description: "Walk straight at the lens from far to close, gaze locked",
60
+ promptHint: "the subject walks directly toward the camera from a distance, gaze locked on the lens the whole way, stride long and even, arms swinging naturally, stopping just short of the lens",
61
+ term: "walks straight at the camera, gaze locked" },
62
+ { id: "walk-away-from-camera", label: "Walk Away", category: "runway", description: "Back to camera, walk off into the distance",
63
+ promptHint: "the subject turns their back to the camera and walks away in a straight line into the distance, shoulders square, arms swinging evenly, without looking back",
64
+ term: "walks away, back to camera" },
65
+ { id: "sweep-the-gown", label: "Gown Sweep", category: "runway", description: "Long strides with the hem trailing, a turn flares the train",
66
+ promptHint: "the subject walks with long strides so the floor-length hem trails behind, gathers the skirt in one hand, turns on the spot and swings the gathered skirt around so the train sweeps across the floor",
67
+ term: "sweeps the gown train through a turn" },
68
+ { id: "bounce-streetwear-walk", label: "Streetwear Bounce", category: "runway", description: "Loose bouncy walk, shoulders rolling, hands in pockets",
69
+ promptHint: "the subject walks with a loose bounce, dipping on each step and rolling the shoulders, both hands tucked into the pockets, head nodding to an internal beat",
70
+ term: "walks with a streetwear bounce" },
71
+ { id: "stride-menswear-walk", label: "Menswear Stride", category: "runway", description: "Long even stride, shoulders square, one hand in pocket",
72
+ promptHint: "the subject takes long even strides with shoulders square and chest open, one hand resting in a trouser pocket and the other arm swinging naturally, gaze level and steady ahead",
73
+ term: "strides with one hand in the pocket" },
74
+ { id: "twirl-the-skirt", label: "Skirt Twirl", category: "runway", description: "Rise onto the toes and spin so the skirt flares out",
75
+ promptHint: "the subject rises onto the balls of the feet and spins a full turn in place, arms lifting slightly as the skirt flares outward, and settles back down onto the heels facing the camera",
76
+ term: "twirls so the skirt flares" },
77
+ { id: "adjust-the-cuff", label: "Cuff Adjust", category: "runway", description: "Tug a shirt cuff straight below the sleeve mid-stride",
78
+ promptHint: "the subject brings one hand across to the opposite wrist mid-stride, tugs the shirt cuff straight so it shows just below the jacket sleeve, and drops the arm back into its swing without breaking the stride",
79
+ term: "adjusts the cuff mid-stride" },
80
+ { id: "adjust-lapels", label: "Lapel Adjust", category: "runway", description: "Both hands grip the lapels and tug them square",
81
+ promptHint: "the subject raises both hands to the jacket lapels, grips one in each hand and tugs them down and outward so the jacket sits square on the shoulders, then rolls the shoulders once and drops the hands to the sides",
82
+ term: "tugs both lapels square" },
83
+ { id: "button-jacket", label: "Button Jacket", category: "runway", description: "Draw the jacket fronts together and fasten the button",
84
+ promptHint: "the subject stands tall and draws the two fronts of the jacket together with both hands, works the button through the buttonhole with the fingers, smooths the front flat with one palm and drops both hands to the sides",
85
+ term: "buttons the jacket closed" },
86
+ { id: "unbutton-jacket-walking", label: "Unbutton Jacket", category: "runway", description: "Pop the jacket button open mid-stride, fronts fall loose",
87
+ promptHint: "the subject reaches one hand to the jacket button while walking, pushes it back through the buttonhole with the thumb so the two fronts fall open and swing loose, and lets the hand drop back into its stride",
88
+ term: "unbuttons the jacket mid-stride" },
89
+ { id: "pop-the-collar", label: "Collar Pop", category: "runway", description: "Both hands flick the collar up to stand against the neck",
90
+ promptHint: "the subject brings both hands up to the collar, grips the points between the fingers and flicks them upward so the collar stands stiff against the neck, then drops the hands and lifts the chin",
91
+ term: "pops the collar up" },
92
+ { id: "throw-open-coat", label: "Coat Throw Open", category: "runway", description: "Grip the coat fronts and swing them wide, outfit in view",
93
+ promptHint: "the subject grips the two fronts of the coat, one in each hand, and swings them wide apart, both arms held out to the sides so the outfit underneath is in full view, holding the coat open for a beat",
94
+ term: "throws the coat open" },
95
+ { id: "cycle-through-three-poses", label: "Three-Pose Cycle", category: "runway", description: "Hit three poses in a row, shifting weight and arms each beat",
96
+ promptHint: "the subject hits three poses in succession, shifting the weight from one leg to the other on each beat and repositioning the arms and head, holding each shape for a beat before flowing into the next",
97
+ term: "cycles through three poses" },
98
+ { id: "walk-with-partner", label: "Duo Walk", category: "runway", description: "Walk side by side with a partner in matched stride",
99
+ promptHint: "the subject walks side by side with the partner in matched stride, feet landing together, both planting at the mark and pivoting outward in mirror image before walking back",
100
+ term: "walks in step with the partner", twoPerson: true },
101
+ ]