dsh-drawai 0.3.3 → 0.4.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 (533) hide show
  1. package/LICENSE +4142 -0
  2. package/README.md +43 -10
  3. package/lib/audio-media.js +147 -0
  4. package/lib/audio-service.js +66 -0
  5. package/lib/canvas-format.js +134 -0
  6. package/lib/client.js +5283 -223
  7. package/lib/comfyui-default-workflow.mjs +1825 -0
  8. package/lib/comfyui-workflow.mjs +426 -0
  9. package/lib/document-commands.js +12 -0
  10. package/lib/document-core.js +29 -0
  11. package/lib/drawing-tasks.js +26 -0
  12. package/lib/imagegen.mjs +596 -0
  13. package/lib/index.js +1758 -129
  14. package/lib/media.js +26 -13
  15. package/lib/mgstyle-core.js +75 -0
  16. package/lib/motion/apply.js +180 -0
  17. package/lib/motion/asset-pack-lock.js +10 -0
  18. package/lib/motion/asset-pack.js +335 -0
  19. package/lib/motion/assets.js +290 -0
  20. package/lib/motion/audio.js +103 -0
  21. package/lib/motion/audiolevel.js +63 -0
  22. package/lib/motion/audiomix.js +144 -0
  23. package/lib/motion/beats.js +337 -0
  24. package/lib/motion/builtin-assets.js +62 -0
  25. package/lib/motion/canvas-spec.js +442 -0
  26. package/lib/motion/capture.js +95 -0
  27. package/lib/motion/cards.js +80 -0
  28. package/lib/motion/collect.js +447 -0
  29. package/lib/motion/delivery.js +112 -0
  30. package/lib/motion/edge-speech.py +90 -0
  31. package/lib/motion/entry.jsx +73 -0
  32. package/lib/motion/export.js +200 -0
  33. package/lib/motion/ffmpeg.js +42 -0
  34. package/lib/motion/fonts.js +71 -0
  35. package/lib/motion/jobs.js +113 -0
  36. package/lib/motion/json.js +4 -0
  37. package/lib/motion/media-catalog.js +59 -0
  38. package/lib/motion/mgstyles/BRIEF-TEMPLATE.md +63 -0
  39. package/lib/motion/mgstyles/briefs/01-flat-vector.md +104 -0
  40. package/lib/motion/mgstyles/briefs/02-line-art.md +97 -0
  41. package/lib/motion/mgstyles/briefs/03-isometric.md +108 -0
  42. package/lib/motion/mgstyles/briefs/05-cel-boil.md +145 -0
  43. package/lib/motion/mgstyles/briefs/06-collage.md +149 -0
  44. package/lib/motion/mgstyles/briefs/07-liquid.md +106 -0
  45. package/lib/motion/mgstyles/briefs/08-morph.md +111 -0
  46. package/lib/motion/mgstyles/briefs/09-bauhaus.md +150 -0
  47. package/lib/motion/mgstyles/briefs/10-synthwave.md +151 -0
  48. package/lib/motion/mgstyles/briefs/12-aurora-glass.md +147 -0
  49. package/lib/motion/mgstyles/briefs/18-hanazi.md +140 -0
  50. package/lib/motion/mgstyles/briefs/19-paperclip.md +156 -0
  51. package/lib/motion/mgstyles/briefs/20-pixel.md +118 -0
  52. package/lib/motion/mgstyles/briefs/22-hud.md +118 -0
  53. package/lib/motion/mgstyles/catalog.d/01-flat-vector.json +34 -0
  54. package/lib/motion/mgstyles/catalog.d/02-line-art.json +34 -0
  55. package/lib/motion/mgstyles/catalog.d/03-isometric.json +35 -0
  56. package/lib/motion/mgstyles/catalog.d/05-cel-boil.json +28 -0
  57. package/lib/motion/mgstyles/catalog.d/06-collage.json +28 -0
  58. package/lib/motion/mgstyles/catalog.d/07-liquid.json +28 -0
  59. package/lib/motion/mgstyles/catalog.d/08-morph.json +28 -0
  60. package/lib/motion/mgstyles/catalog.d/09-bauhaus.json +28 -0
  61. package/lib/motion/mgstyles/catalog.d/10-synthwave.json +28 -0
  62. package/lib/motion/mgstyles/catalog.d/12-aurora-glass.json +28 -0
  63. package/lib/motion/mgstyles/catalog.d/18-hanazi.json +28 -0
  64. package/lib/motion/mgstyles/catalog.d/19-paperclip.json +28 -0
  65. package/lib/motion/mgstyles/catalog.d/20-pixel.json +28 -0
  66. package/lib/motion/mgstyles/catalog.d/22-hud.json +28 -0
  67. package/lib/motion/mgstyles/catalog.json +1356 -0
  68. package/lib/motion/mgstyles/upstream/README.md +147 -0
  69. package/lib/motion/mgstyles/upstream/README.zh-CN.md +147 -0
  70. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/cues.json +1 -0
  71. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/index.html +712 -0
  72. package/lib/motion/mgstyles/upstream/demos/02-line-art/cues.json +331 -0
  73. package/lib/motion/mgstyles/upstream/demos/02-line-art/film.js +676 -0
  74. package/lib/motion/mgstyles/upstream/demos/02-line-art/index.html +18 -0
  75. package/lib/motion/mgstyles/upstream/demos/02-line-art/tools/dump_timing.mjs +26 -0
  76. package/lib/motion/mgstyles/upstream/demos/03-isometric/cues.json +109 -0
  77. package/lib/motion/mgstyles/upstream/demos/03-isometric/index.html +25 -0
  78. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/anim.js +82 -0
  79. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/main.js +219 -0
  80. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/night5.js +180 -0
  81. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/render.js +202 -0
  82. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title.js +167 -0
  83. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title5.js +294 -0
  84. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/ui.js +141 -0
  85. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/world.js +1399 -0
  86. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/cues.json +157 -0
  87. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/index.html +34 -0
  88. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/engine.js +326 -0
  89. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/scene.js +2036 -0
  90. package/lib/motion/mgstyles/upstream/demos/06-collage/assets/gen/layout.json +157 -0
  91. package/lib/motion/mgstyles/upstream/demos/06-collage/cues.json +80 -0
  92. package/lib/motion/mgstyles/upstream/demos/06-collage/index.html +889 -0
  93. package/lib/motion/mgstyles/upstream/demos/07-liquid/cues.json +100 -0
  94. package/lib/motion/mgstyles/upstream/demos/07-liquid/index.html +108 -0
  95. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/engine.js +153 -0
  96. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/links.js +64 -0
  97. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/lookdev.js +46 -0
  98. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/scene.js +963 -0
  99. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/shaders.js +647 -0
  100. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/textsdf.js +114 -0
  101. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/type.js +50 -0
  102. package/lib/motion/mgstyles/upstream/demos/08-morph/cues.json +131 -0
  103. package/lib/motion/mgstyles/upstream/demos/08-morph/glyphs.json +1 -0
  104. package/lib/motion/mgstyles/upstream/demos/08-morph/index.html +901 -0
  105. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/cues.json +270 -0
  106. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/film.js +697 -0
  107. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/index.html +12 -0
  108. package/lib/motion/mgstyles/upstream/demos/10-synthwave/cues.json +44 -0
  109. package/lib/motion/mgstyles/upstream/demos/10-synthwave/index.html +1028 -0
  110. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/cues.json +67 -0
  111. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/index.html +16 -0
  112. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/main.js +967 -0
  113. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/shaders.js +468 -0
  114. package/lib/motion/mgstyles/upstream/demos/18-hanazi/cues.json +117 -0
  115. package/lib/motion/mgstyles/upstream/demos/18-hanazi/index.html +541 -0
  116. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/countries-110m.json +1 -0
  117. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/stickers/meta.json +34 -0
  118. package/lib/motion/mgstyles/upstream/demos/19-paperclip/cues.json +285 -0
  119. package/lib/motion/mgstyles/upstream/demos/19-paperclip/index.html +599 -0
  120. package/lib/motion/mgstyles/upstream/demos/20-pixel/cues.json +42 -0
  121. package/lib/motion/mgstyles/upstream/demos/20-pixel/film.js +914 -0
  122. package/lib/motion/mgstyles/upstream/demos/20-pixel/index.html +18 -0
  123. package/lib/motion/mgstyles/upstream/demos/22-hud/cues.json +108 -0
  124. package/lib/motion/mgstyles/upstream/demos/22-hud/index.html +125 -0
  125. package/lib/motion/mgstyles/upstream/demos/22-hud/js/holo.js +275 -0
  126. package/lib/motion/mgstyles/upstream/demos/22-hud/js/hud.js +855 -0
  127. package/lib/motion/mgstyles/upstream/demos/22-hud/js/post.js +150 -0
  128. package/lib/motion/mgstyles/upstream/demos/22-hud/js/util.js +65 -0
  129. package/lib/motion/mgstyles/upstream/demos/22-hud/js/v5.js +142 -0
  130. package/lib/motion/mgstyles/upstream/harness/render.mjs +319 -0
  131. package/lib/motion/mgstyles/upstream/manifest.json +269 -0
  132. package/lib/motion/mgstyles/upstream/prompts/01-flat-vector.md +98 -0
  133. package/lib/motion/mgstyles/upstream/prompts/02-line-art.md +95 -0
  134. package/lib/motion/mgstyles/upstream/prompts/03-isometric.md +97 -0
  135. package/lib/motion/mgstyles/upstream/prompts/05-cel-boil.md +95 -0
  136. package/lib/motion/mgstyles/upstream/prompts/06-collage.md +95 -0
  137. package/lib/motion/mgstyles/upstream/prompts/07-liquid.md +98 -0
  138. package/lib/motion/mgstyles/upstream/prompts/08-morph.md +95 -0
  139. package/lib/motion/mgstyles/upstream/prompts/09-bauhaus.md +96 -0
  140. package/lib/motion/mgstyles/upstream/prompts/10-synthwave.md +95 -0
  141. package/lib/motion/mgstyles/upstream/prompts/12-aurora-glass.md +96 -0
  142. package/lib/motion/mgstyles/upstream/prompts/18-hanazi.md +95 -0
  143. package/lib/motion/mgstyles/upstream/prompts/19-paperclip.md +96 -0
  144. package/lib/motion/mgstyles/upstream/prompts/20-pixel.md +96 -0
  145. package/lib/motion/mgstyles/upstream/prompts/22-hud.md +95 -0
  146. package/lib/motion/mgstyles/upstream/rubric.md +51 -0
  147. package/lib/motion/mgstyles/upstream/template.md +36 -0
  148. package/lib/motion/pixelqa.js +198 -0
  149. package/lib/motion/preview.js +95 -0
  150. package/lib/motion/project.js +395 -0
  151. package/lib/motion/qa.js +290 -0
  152. package/lib/motion/reference-media.jsx +10 -0
  153. package/lib/motion/render-settings.js +112 -0
  154. package/lib/motion/render.js +159 -0
  155. package/lib/motion/scene-kit.js +183 -0
  156. package/lib/motion/sfx.js +232 -0
  157. package/lib/motion/shotcraft/ClipCard.tsx +204 -0
  158. package/lib/motion/shotcraft/catalog.json +2461 -0
  159. package/lib/motion/shotcraft/upstream/SKILL.md +286 -0
  160. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -0
  161. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -0
  162. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -0
  163. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -0
  164. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -0
  165. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -0
  166. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -0
  167. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -0
  168. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -0
  169. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -0
  170. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -0
  171. package/lib/motion/shotcraft/upstream/assets/scripts/__pycache__/sfx-source.cpython-313.pyc +0 -0
  172. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -0
  173. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -0
  174. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -0
  175. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -0
  176. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -0
  177. package/lib/motion/shotcraft/upstream/demos/README.md +120 -0
  178. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -0
  179. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -0
  180. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -0
  181. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -0
  182. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -0
  183. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -0
  184. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +389 -0
  185. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -0
  186. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -0
  187. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -0
  188. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -0
  189. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -0
  190. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -0
  191. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -0
  192. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -0
  193. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -0
  194. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -0
  195. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -0
  196. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -0
  197. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -0
  198. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -0
  199. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -0
  200. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -0
  201. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -0
  202. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -0
  203. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -0
  204. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -0
  205. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -0
  206. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -0
  207. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -0
  208. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -0
  209. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -0
  210. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -0
  211. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -0
  212. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -0
  213. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -0
  214. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -0
  215. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -0
  216. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -0
  217. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -0
  218. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -0
  219. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -0
  220. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -0
  221. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -0
  222. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -0
  223. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -0
  224. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -0
  225. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -0
  226. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -0
  227. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -0
  228. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -0
  229. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -0
  230. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -0
  231. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -0
  232. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -0
  233. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -0
  234. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -0
  235. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -0
  236. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -0
  237. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -0
  238. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -0
  239. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -0
  240. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -0
  241. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -0
  242. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -0
  243. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -0
  244. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -0
  245. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -0
  246. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -0
  247. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -0
  248. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -0
  249. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -0
  250. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -0
  251. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -0
  252. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -0
  253. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -0
  254. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -0
  255. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -0
  256. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -0
  257. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -0
  258. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -0
  259. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -0
  260. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -0
  261. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -0
  262. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -0
  263. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -0
  264. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -0
  265. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -0
  266. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -0
  267. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -0
  268. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -0
  269. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -0
  270. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -0
  271. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -0
  272. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -0
  273. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -0
  274. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -0
  275. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -0
  276. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -0
  277. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -0
  278. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -0
  279. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -0
  280. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -0
  281. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -0
  282. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -0
  283. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -0
  284. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -0
  285. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -0
  286. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -0
  287. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -0
  288. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -0
  289. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -0
  290. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -0
  291. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -0
  292. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -0
  293. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -0
  294. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -0
  295. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -0
  296. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -0
  297. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -0
  298. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -0
  299. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -0
  300. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -0
  301. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -0
  302. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -0
  303. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -0
  304. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -0
  305. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -0
  306. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -0
  307. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -0
  308. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -0
  309. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -0
  310. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -0
  311. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -0
  312. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -0
  313. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -0
  314. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -0
  315. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -0
  316. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -0
  317. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -0
  318. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -0
  319. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -0
  320. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -0
  321. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -0
  322. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -0
  323. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -0
  324. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -0
  325. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -0
  326. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -0
  327. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -0
  328. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -0
  329. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -0
  330. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -0
  331. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -0
  332. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -0
  333. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -0
  334. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -0
  335. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -0
  336. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -0
  337. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -0
  338. package/lib/motion/shotcraft/upstream/manifest.json +2715 -0
  339. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -0
  340. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -0
  341. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -0
  342. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -0
  343. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -0
  344. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -0
  345. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -0
  346. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -0
  347. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -0
  348. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -0
  349. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -0
  350. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -0
  351. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -0
  352. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -0
  353. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -0
  354. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -0
  355. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -0
  356. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -0
  357. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -0
  358. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -0
  359. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -0
  360. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -0
  361. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -0
  362. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -0
  363. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -0
  364. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -0
  365. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -0
  366. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -0
  367. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -0
  368. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -0
  369. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -0
  370. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -0
  371. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -0
  372. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -0
  373. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -0
  374. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -0
  375. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -0
  376. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -0
  377. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -0
  378. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -0
  379. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -0
  380. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -0
  381. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -0
  382. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -0
  383. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -0
  384. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -0
  385. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -0
  386. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -0
  387. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -0
  388. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -0
  389. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -0
  390. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -0
  391. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -0
  392. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -0
  393. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -0
  394. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -0
  395. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -0
  396. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -0
  397. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -0
  398. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -0
  399. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -0
  400. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -0
  401. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -0
  402. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -0
  403. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -0
  404. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -0
  405. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -0
  406. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -0
  407. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -0
  408. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -0
  409. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -0
  410. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -0
  411. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -0
  412. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -0
  413. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -0
  414. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -0
  415. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -0
  416. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -0
  417. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -0
  418. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -0
  419. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -0
  420. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -0
  421. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -0
  422. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -0
  423. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -0
  424. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -0
  425. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -0
  426. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -0
  427. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -0
  428. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -0
  429. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -0
  430. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -0
  431. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -0
  432. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -0
  433. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -0
  434. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -0
  435. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -0
  436. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -0
  437. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -0
  438. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -0
  439. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -0
  440. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -0
  441. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -0
  442. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -0
  443. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -0
  444. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -0
  445. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -0
  446. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -0
  447. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -0
  448. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -0
  449. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -0
  450. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -0
  451. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -0
  452. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -0
  453. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -0
  454. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -0
  455. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -0
  456. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -0
  457. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -0
  458. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -0
  459. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -0
  460. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -0
  461. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -0
  462. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -0
  463. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -0
  464. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -0
  465. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -0
  466. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -0
  467. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -0
  468. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -0
  469. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -0
  470. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -0
  471. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -0
  472. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -0
  473. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -0
  474. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -0
  475. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -0
  476. package/lib/motion/shotcraft/upstream/template/package.json +20 -0
  477. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -0
  478. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -0
  479. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -0
  480. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -0
  481. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -0
  482. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -0
  483. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -0
  484. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -0
  485. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -0
  486. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -0
  487. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -0
  488. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -0
  489. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -0
  490. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -0
  491. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +389 -0
  492. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -0
  493. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -0
  494. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -0
  495. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -0
  496. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -0
  497. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -0
  498. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -0
  499. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -0
  500. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -0
  501. package/lib/motion/spec.js +113 -0
  502. package/lib/motion/style-engine.js +153 -0
  503. package/lib/motion/style-frames.js +268 -0
  504. package/lib/motion/sync.js +214 -0
  505. package/lib/motion/theme.js +121 -0
  506. package/lib/motion/voice.js +417 -0
  507. package/lib/motion-agent-files.js +82 -0
  508. package/lib/motion-agent-protocol.js +66 -0
  509. package/lib/motion-agent-tools.js +196 -0
  510. package/lib/motion-agent.js +171 -0
  511. package/lib/motion-capture.js +92 -0
  512. package/lib/motion-core.js +238 -0
  513. package/lib/motion-film-review.js +71 -0
  514. package/lib/motion-library.js +210 -0
  515. package/lib/motion-planner.js +254 -0
  516. package/lib/motion-project.js +80 -0
  517. package/lib/motion-render-worker.js +145 -0
  518. package/lib/motion-session.js +32 -0
  519. package/lib/motion-source.js +49 -0
  520. package/lib/motion-tasks.js +452 -0
  521. package/lib/motion-vision.js +43 -0
  522. package/lib/mxfile.js +27 -7
  523. package/lib/routing/node-runtime.js +14 -0
  524. package/lib/routing/router.js +211 -0
  525. package/lib/routing/vendor/README.md +96 -0
  526. package/lib/routing/vendor/libavoid-routing.js +753 -0
  527. package/lib/routing/vendor/libavoid.min.js +59 -0
  528. package/lib/shotcard-core.js +39 -0
  529. package/lib/shotcard-reference.js +56 -0
  530. package/lib/style-kernel.js +37 -3
  531. package/lib/task-patches.js +26 -2
  532. package/lib/video-export.js +17 -2
  533. package/package.json +29 -4
@@ -0,0 +1,468 @@
1
+ // GLSL for "Aurora — think in light". All passes are full-screen triangles; design space is 1920x1080, y down.
2
+
3
+ export const VS = `#version 300 es
4
+ void main(){ vec2 p = vec2(float((gl_VertexID<<1)&2), float(gl_VertexID&2)); gl_Position = vec4(p*2.-1., 0., 1.); }`;
5
+
6
+ const HEAD = `#version 300 es
7
+ precision highp float;
8
+ uniform vec2 uRes; // current render-target size (device px)
9
+ uniform float uDPR; // device px per design px
10
+ out vec4 o;
11
+ vec2 designP(){ return vec2(gl_FragCoord.x, uRes.y - gl_FragCoord.y) / uDPR; }
12
+ vec2 toUV(vec2 p){ return vec2(p.x / 1920., 1. - p.y / 1080.); }
13
+ float sdRoundBox(vec2 p, vec2 b, float r){ r = min(r, min(b.x, b.y)); vec2 q = abs(p) - b + r; return length(max(q, 0.)) + min(max(q.x, q.y), 0.) - r; }
14
+ float hash12(vec2 p){ vec3 p3 = fract(vec3(p.xyx) * .1031); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.x + p3.y) * p3.z); }
15
+ vec2 hash22(vec2 p){ vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973)); p3 += dot(p3, p3.yzx + 33.33); return fract((p3.xx + p3.yz) * p3.zy); }
16
+ float luma(vec3 c){ return dot(c, vec3(0.2126, 0.7152, 0.0722)); }
17
+ `;
18
+
19
+ const SNOISE = `
20
+ vec3 mod289(vec3 x){ return x - floor(x * (1.0 / 289.0)) * 289.0; }
21
+ vec4 mod289(vec4 x){ return x - floor(x * (1.0 / 289.0)) * 289.0; }
22
+ vec4 permute(vec4 x){ return mod289(((x*34.0)+10.0)*x); }
23
+ vec4 taylorInvSqrt(vec4 r){ return 1.79284291400159 - 0.85373472095314 * r; }
24
+ float snoise(vec3 v){
25
+ const vec2 C = vec2(1.0/6.0, 1.0/3.0); const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
26
+ vec3 i = floor(v + dot(v, C.yyy)); vec3 x0 = v - i + dot(i, C.xxx);
27
+ vec3 g = step(x0.yzx, x0.xyz); vec3 l = 1.0 - g; vec3 i1 = min(g.xyz, l.zxy); vec3 i2 = max(g.xyz, l.zxy);
28
+ vec3 x1 = x0 - i1 + C.xxx; vec3 x2 = x0 - i2 + C.yyy; vec3 x3 = x0 - D.yyy;
29
+ i = mod289(i);
30
+ vec4 p = permute(permute(permute(i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + i.x + vec4(0.0, i1.x, i2.x, 1.0));
31
+ float n_ = 0.142857142857; vec3 ns = n_ * D.wyz - D.xzx;
32
+ vec4 j = p - 49.0 * floor(p * ns.z * ns.z); vec4 x_ = floor(j * ns.z); vec4 y_ = floor(j - 7.0 * x_);
33
+ vec4 x = x_ * ns.x + ns.yyyy; vec4 y = y_ * ns.x + ns.yyyy; vec4 h = 1.0 - abs(x) - abs(y);
34
+ vec4 b0 = vec4(x.xy, y.xy); vec4 b1 = vec4(x.zw, y.zw);
35
+ vec4 s0 = floor(b0)*2.0 + 1.0; vec4 s1 = floor(b1)*2.0 + 1.0; vec4 sh = -step(h, vec4(0.0));
36
+ vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy; vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww;
37
+ vec3 p0 = vec3(a0.xy, h.x); vec3 p1 = vec3(a0.zw, h.y); vec3 p2 = vec3(a1.xy, h.z); vec3 p3 = vec3(a1.zw, h.w);
38
+ vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2,p2), dot(p3,p3)));
39
+ p0 *= norm.x; p1 *= norm.y; p2 *= norm.z; p3 *= norm.w;
40
+ vec4 m = max(0.5 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); m = m * m;
41
+ return 105.0 * dot(m*m, vec4(dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3)));
42
+ }`;
43
+
44
+ // camera ray / plane intersection shared by the aurora (shadows) and card passes
45
+ const CAM = `
46
+ uniform vec3 uCamO; uniform float uF;
47
+ vec3 rayDir(vec2 p){ return normalize(vec3(p.x - 960., p.y - 540., uF)); }
48
+ vec2 planeLocal(vec2 p, vec3 C, vec3 U, vec3 V, vec3 N){
49
+ vec3 d = rayDir(p); float tt = dot(C - uCamO, N) / dot(d, N); vec3 P = uCamO + d * tt; vec3 r = P - C;
50
+ return vec2(dot(r, U), dot(r, V));
51
+ }`;
52
+
53
+ // ---------------------------------------------------------------- aurora + card shadows + light motes
54
+ export const FS_AURORA = HEAD + SNOISE + CAM + `
55
+ uniform float uT;
56
+ uniform vec4 uBlob[7]; // xy centre (design px), z radius x, w intensity
57
+ uniform vec2 uBlobE[7]; // radius y, angle
58
+ uniform vec3 uBlobC[7];
59
+ uniform vec3 uBase;
60
+ uniform float uGain; // global light level (bloom at the drop)
61
+ uniform float uWarp;
62
+ uniform vec4 uRipple; // xy centre, radius, amplitude
63
+ uniform vec3 uSC[3]; uniform vec3 uSU[3]; uniform vec3 uSV[3]; uniform vec3 uSN[3]; uniform vec4 uSH[3]; // shadows: half.xy, radius, opacity
64
+ uniform float uMotes;
65
+ void main(){
66
+ vec2 p = designP();
67
+ vec2 q = p / 1080.;
68
+ float t = uT;
69
+ vec2 w = vec2(snoise(vec3(q * 0.9, t * 0.035)), snoise(vec3(q * 0.9 + vec2(5.2, 1.3), t * 0.035 + 11.)));
70
+ vec2 w2 = vec2(snoise(vec3(q * 2.1 + 3.1, t * 0.06)), snoise(vec3(q * 2.1 + 8.4, t * 0.06 + 4.)));
71
+ vec2 pw = p + w * uWarp + w2 * uWarp * 0.3;
72
+ // slow light ripple (the drop)
73
+ vec2 rd = p - uRipple.xy; float rl = length(rd);
74
+ float ring = exp(-pow((rl - uRipple.z) / 170., 2.)) * uRipple.w;
75
+ pw += rd / max(rl, 1.) * ring * 46.;
76
+ vec3 acc = vec3(0.); float ws = 0.;
77
+ for (int i = 0; i < 7; i++){
78
+ vec2 d = pw - uBlob[i].xy;
79
+ float ca = cos(uBlobE[i].y), sa = sin(uBlobE[i].y);
80
+ d = vec2(ca * d.x + sa * d.y, -sa * d.x + ca * d.y) / vec2(uBlob[i].z, uBlobE[i].x);
81
+ float g = exp(-dot(d, d)) * uBlob[i].w;
82
+ acc += uBlobC[i] * g; ws += g;
83
+ }
84
+ vec3 mixc = acc / max(ws, 1e-4);
85
+ float cov = pow(1. - exp(-ws * 1.5), 1.3); // deeper indigo valleys between the pools of light
86
+ vec3 col = mix(uBase, mixc, cov) + acc * 0.07;
87
+ float core = smoothstep(0.75, 2.1, ws); // where pools overlap the light gets hot, not muddy
88
+ col = mix(col, col * 1.22 + vec3(0.035, 0.03, 0.07), core * 0.55);
89
+ col *= uGain * (1. + ring * 0.2);
90
+ col += vec3(0.50, 0.36, 1.0) * ring * 0.045 * cov; // the drop: a slow violet wave of light
91
+ // faint vertical silk in the light (aurora curtains), very low contrast
92
+ float silk = snoise(vec3(p.x / 260. + w.x * 0.8, p.y / 1400., t * 0.05));
93
+ col *= 1. + silk * 0.05 * cov;
94
+
95
+ // light motes / bokeh (sharp enough that the frosted glass visibly blurs them)
96
+ if (uMotes > 0.){
97
+ vec3 m = vec3(0.);
98
+ float lockK = smoothstep(7.0, 7.6, t);
99
+ for (int i = 0; i < 10; i++){
100
+ float fi = float(i);
101
+ vec2 h = hash22(vec2(fi * 1.37 + 0.2, fi * 7.11 + 0.7));
102
+ vec2 vel = (hash22(vec2(fi, 3.1)) - .5) * vec2(10., 6.) + vec2(2., -3.); // <= 0.3 px / frame
103
+ vec2 pos = h * vec2(1880., 1040.) + vec2(20.) + vel * t;
104
+ float sig = mix(3., 5., hash12(vec2(fi, 4.4)));
105
+ float amp = mix(0.12, 0.25, hash12(vec2(fi, 5.5)));
106
+ float tw = 0.8 + 0.2 * sin(t * (0.5 + hash12(vec2(fi, 2.2))) + fi * 2.1);
107
+ vec2 bd = abs(pos - vec2(960., 600.)) - vec2(380., 150.);
108
+ float keep = mix(1., smoothstep(0., 70., max(bd.x, bd.y)), lockK);
109
+ float d = length(p - pos);
110
+ m += vec3(0.86, 0.9, 1.) * exp(-d * d / (2. * sig * sig)) * amp * tw * keep;
111
+ }
112
+ col += m * uMotes * (0.55 + 0.45 * cov);
113
+ }
114
+
115
+ // soft drop shadows of the glass cards onto the light field
116
+ for (int k = 0; k < 3; k++){
117
+ if (uSH[k].w <= 0.) continue;
118
+ vec2 L = planeLocal(p - vec2(0., 34.), uSC[k], uSU[k], uSV[k], uSN[k]);
119
+ float sd = sdRoundBox(L, uSH[k].xy, uSH[k].z);
120
+ float sh = 1. - smoothstep(-46., 84., sd);
121
+ col *= 1. - sh * 0.34 * uSH[k].w;
122
+ }
123
+ o = vec4(max(col, 0.), 1.);
124
+ }`;
125
+
126
+ // ---------------------------------------------------------------- 4x downsample (16-tap box via 4 bilinear taps)
127
+ export const FS_DOWN = HEAD + `
128
+ uniform sampler2D uSrc; uniform vec2 uSrcTexel; uniform float uThresh;
129
+ void main(){
130
+ vec2 uv = gl_FragCoord.xy / uRes;
131
+ vec3 c = texture(uSrc, uv + uSrcTexel * vec2(-1., -1.)).rgb + texture(uSrc, uv + uSrcTexel * vec2(1., -1.)).rgb
132
+ + texture(uSrc, uv + uSrcTexel * vec2(-1., 1.)).rgb + texture(uSrc, uv + uSrcTexel * vec2(1., 1.)).rgb;
133
+ c *= 0.25;
134
+ if (uThresh > 0.) { float l = luma(c); c *= smoothstep(uThresh, uThresh + 0.35, l); }
135
+ o = vec4(c, 1.);
136
+ }`;
137
+
138
+ // ---------------------------------------------------------------- separable gaussian (linear-sampled taps)
139
+ export const FS_BLUR = HEAD + `
140
+ uniform sampler2D uSrc; uniform vec2 uDir; uniform float uOff[16]; uniform float uW[16]; uniform int uN;
141
+ void main(){
142
+ vec2 uv = gl_FragCoord.xy / uRes; vec2 tx = uDir / uRes;
143
+ vec3 c = texture(uSrc, uv).rgb * uW[0];
144
+ for (int i = 1; i < 16; i++){ if (i >= uN) break; c += (texture(uSrc, uv + tx * uOff[i]).rgb + texture(uSrc, uv - tx * uOff[i]).rgb) * uW[i]; }
145
+ o = vec4(c, 1.);
146
+ }`;
147
+
148
+ // ---------------------------------------------------------------- frosted glass card (perspective, analytic SDF)
149
+ export const FS_CARD = HEAD + CAM + `
150
+ uniform vec3 uC, uU, uV, uN; uniform vec2 uHalf; uniform float uRad;
151
+ uniform float uOpacity, uContentA, uLod, uFrost, uDefocus;
152
+ uniform sampler2D uBlurTex; uniform sampler2D uContent;
153
+ uniform vec2 uLight; // 2D light direction (points toward the light), design space
154
+ uniform float uSheen; // sheen band position (-1..1)
155
+ uniform vec2 uGlint; // travelling catch-light: position, amplitude
156
+ uniform float uEdge; // lit-bevel boost (hook)
157
+ uniform vec2 uCatch; // r2 hook: catch-light position along the top-right bevel (local px), amplitude
158
+ void main(){
159
+ vec2 p = designP();
160
+ vec2 L = planeLocal(p, uC, uU, uV, uN);
161
+ float sd = sdRoundBox(L, uHalf, uRad);
162
+ float pxw = max(fwidth(sd), 1e-4); // local units per screen px
163
+ float sdS = sd / pxw; // signed distance in screen px
164
+ float dw = max(uDefocus, 0.5); // defocus: soft edge when the pane passes the focal plane
165
+ float cov = clamp(0.5 - sdS / (2. * dw), 0., 1.);
166
+ if (cov <= 0.) discard;
167
+ // analytic outward normal of the rounded box in local space
168
+ float r = min(uRad, min(uHalf.x, uHalf.y));
169
+ vec2 qq = abs(L) - uHalf + r;
170
+ vec2 g = qq.x > 0. && qq.y > 0. ? normalize(qq) : (qq.x > qq.y ? vec2(1., 0.) : vec2(0., 1.));
171
+ g *= sign(L + 1e-6);
172
+ float inside = -sdS; // px from edge
173
+ // thickness: backdrop pulled inward near the rim (glass edge refraction)
174
+ float rim = 1. - smoothstep(0., 13., inside);
175
+ vec2 offs = -g * pow(rim, 1.3) * 24.;
176
+ vec3 bb = texture(uBlurTex, toUV(p + offs)).rgb;
177
+ // classic recipe: blur + saturate(170%) + 7% white fill
178
+ float l = luma(bb);
179
+ bb = max(mix(vec3(l), bb, 1.0 + 0.38 * uFrost), 0.);
180
+ vec3 col = bb * 1.02 + vec3(0.085) * uFrost + vec3(0.012, 0.012, 0.03);
181
+ // inner glow along the rim (thickness catching light)
182
+ float facing = clamp(dot(g, uLight) * 0.5 + 0.5, 0., 1.);
183
+ col += vec3(1.) * (1. - smoothstep(0., 26., inside)) * (0.018 + 0.05 * pow(facing, 2.));
184
+ // broad diagonal sheen (reflection of a soft box), moves with tilt
185
+ vec2 uvn = L / uHalf;
186
+ float band = dot(uvn, normalize(vec2(0.8, 0.6)));
187
+ col += vec3(1.) * 0.045 * exp(-pow((band - uSheen) / 0.45, 2.));
188
+ col += vec3(0.93, 0.95, 1.) * uGlint.y * exp(-pow((band - uGlint.x) / 0.16, 2.)) * (0.6 + 0.4 * smoothstep(0., 30., inside));
189
+ col += vec3(1.) * 0.035 * (1. - clamp((uvn.y + uvn.x * 0.4 + 1.) * 0.5, 0., 1.)); // top-left a touch brighter
190
+ // UI content (premultiplied)
191
+ vec2 cuv = (L + uHalf) / (2. * uHalf);
192
+ vec4 c = texture(uContent, cuv, uLod) * uContentA;
193
+ col = col * (1. - c.a) + c.rgb;
194
+ // 1px inner highlight stroke, ~30% white, brighter on the lit edge
195
+ float sw = 0.9 + (dw - 0.5) * 1.5;
196
+ float stroke = clamp(1. - abs(inside - sw) / sw, 0., 1.) * (0.9 / sw);
197
+ float sa = min(mix(0.14, 0.7, pow(facing, 1.6)) * uEdge, 0.95);
198
+ col = mix(col, vec3(1.), stroke * sa);
199
+ if (uCatch.y > 0.) { // a 1 px catch-light runs round the top-right corner radius, with a short comet tail
200
+ vec2 cc = vec2(uHalf.x - r, -uHalf.y + r);
201
+ float sP = L.x < cc.x ? L.x - cc.x : (L.y > cc.y ? r * 1.5708 + (L.y - cc.y) : r * (atan(L.y - cc.y, L.x - cc.x) + 1.5708));
202
+ float dd = sP - uCatch.x;
203
+ float along = exp(-dd * dd / 180.) + 0.4 * exp(dd / 55.) * step(dd, 0.);
204
+ float bandC = clamp(1. - abs(inside - sw) / (sw + 0.35), 0., 1.);
205
+ col += vec3(1., 0.97, 0.93) * along * uCatch.y * (bandC * 1.2 + 0.22 * exp(-inside / 6.));
206
+ }
207
+ o = vec4(col, 1.) * cov * uOpacity;
208
+ }`;
209
+
210
+ // ---------------------------------------------------------------- premultiplied texture overlay (wordmark)
211
+ export const FS_OVER = HEAD + `
212
+ uniform sampler2D uTex; uniform float uA;
213
+ void main(){ vec2 p = designP(); vec4 c = texture(uTex, vec2(p.x / 1920., p.y / 1080.)); o = c * uA; }`;
214
+
215
+ // ---------------------------------------------------------------- Liquid Glass lens: SDF slab, squircle bezel, spectral refraction
216
+ export const FS_LENS = HEAD + `
217
+ uniform sampler2D uScene; uniform sampler2D uBlur;
218
+ uniform vec2 uLC; uniform vec2 uLH; uniform float uLR; uniform mat2 uLM; // centre, half size, radius, inverse stretch
219
+ uniform vec3 uBead; uniform float uBeadK; uniform float uBeadA; // metaball bead (xy, r), blend radius, bead opacity
220
+ uniform float uOn; // lens presence 0..1
221
+ uniform float uBezel, uDepth, uIor, uDisp, uMag, uRefrSign, uMaxDisp;
222
+ uniform float uLift; // height above the cards (shadow)
223
+ uniform float uGlint; // travelling glint phase
224
+ uniform vec3 uLight3;
225
+ uniform float uFrostRim, uRimGlow, uRing, uCaustic, uFres, uBzExp;
226
+ uniform float uRingW, uWarm, uCW; uniform vec2 uRGl; uniform vec3 uWave; // ring "o", gold light, counter warmth, ring glint, caustic wave
227
+ uniform float uHide; // reel v5 ?nolink=dot: the glass body, its shadow and its bend are skipped; the 9.0 wave stays (0 = pre-v5 path)
228
+ float smin(float a, float b, float k){ float h = max(k - abs(a - b), 0.) / k; return min(a, b) - h * h * k * 0.25; }
229
+ float outerSDF(vec2 p){
230
+ vec2 q = uLM * (p - uLC);
231
+ float d = sdRoundBox(q, uLH, uLR);
232
+ if (uBead.z > 0.) { float d2 = length(p - uBead.xy) - uBead.z; d = uBeadK > 0.5 ? smin(d, d2, uBeadK) : min(d, d2); }
233
+ return d;
234
+ }
235
+ float lensSDF(vec2 p){ float d = outerSDF(p); return uRingW > 0. ? max(d, -d - uRingW) : d; }
236
+ vec3 warmRamp(float h){ // rim magenta -> rose -> peach on the plateau
237
+ vec3 a = vec3(0.878, 0.482, 0.847), b = vec3(1., 0.702, 0.780), c = vec3(1., 0.851, 0.659);
238
+ return h < 0.5 ? mix(a, b, h * 2.) : mix(b, c, h * 2. - 1.);
239
+ }
240
+ float heightAt(vec2 p){
241
+ float d = -lensSDF(p);
242
+ float x = clamp(d / uBezel, 0., 1.);
243
+ return pow(1. - pow(1. - x, uBzExp), 1. / uBzExp); // convex squircle bezel, flat plateau
244
+ }
245
+ vec3 sceneAt(vec2 p){
246
+ vec3 c = texture(uScene, toUV(p)).rgb;
247
+ float s = lensSDF(p - vec2(0., 8. + 22. * uLift));
248
+ float soft = 8. + 30. * uLift;
249
+ float sh = (1. - smoothstep(-soft, soft * 1.8, s)) * (0.16 + 0.16 * uLift) * uOn * (1. - uHide);
250
+ float rr = min(uLH.x, uLH.y);
251
+ float ca = smoothstep(-0.25 * rr, -0.85 * rr, s) * uCaustic * uOn * (1. - uHide); // light gathered by the glass
252
+ return c * (1. - sh) + c * ca * mix(vec3(1.), vec3(1.3, 0.95, 0.68), uWarm);
253
+ }
254
+ void main(){
255
+ vec2 p = designP();
256
+ if (uOn <= 0.) { o = vec4(texture(uScene, toUV(p)).rgb, 1.); return; }
257
+ float sd = lensSDF(p);
258
+ // r2: the 9.0 wave is a REFRACTION ring (bends what it crosses ~2.5 px) with light on its crest
259
+ vec2 wr = p - uLC; float wl = length(wr); float wx = (wl - uWave.x) / 9.;
260
+ float wv = uWave.y * exp(-pow((wl - uWave.x) / 15., 2.));
261
+ vec2 pw = uWave.z > 0. && wl > 1. ? p - wr / wl * uWave.z * wx * exp(-wx * wx) * (1. - 0.7 * smoothstep(628., 662., p.y)) : p; // the thin tagline bends less
262
+ vec3 base;
263
+ if (uRingW > 0. && sd > 0. && sd < 16. && uHide < 0.5) { // the ring bends its neighbours (the "r" stems) a touch
264
+ vec2 gg = vec2(lensSDF(p + vec2(1., 0.)) - lensSDF(p - vec2(1., 0.)), lensSDF(p + vec2(0., 1.)) - lensSDF(p - vec2(0., 1.)));
265
+ float nr = 1. - sd / 16.;
266
+ base = sceneAt(pw + normalize(gg + 1e-5) * 2.4 * nr * nr);
267
+ } else base = sceneAt(pw);
268
+ if (uRingW > 0. && outerSDF(p) < 0. && uHide < 0.5) base = mix(base, warmRamp(0.75) * (luma(base) * 1.3 + 0.04), uCW); // gold kept in the counter
269
+ base += vec3(1., 0.96, 0.93) * wv;
270
+ if (sd > 2. || uHide > 0.5) { o = vec4(base, 1.); return; }
271
+ float e = 0.75;
272
+ float hx = heightAt(p + vec2(e, 0.)) - heightAt(p - vec2(e, 0.));
273
+ float hy = heightAt(p + vec2(0., e)) - heightAt(p - vec2(0., e));
274
+ float hC = heightAt(p);
275
+ vec3 N = normalize(vec3(-hx / (2. * e) * uDepth, -hy / (2. * e) * uDepth, 1.));
276
+ vec2 gN = length(N.xy) > 1e-4 ? normalize(N.xy) : vec2(0.); // outward in the bezel
277
+ float edgeX = clamp(-sd / uBezel, 0., 1.); // 0 at rim .. 1 on the plateau
278
+ vec2 C = uLC;
279
+ vec3 I = vec3(0., 0., -1.);
280
+ vec3 acc = vec3(0.);
281
+ const vec3 SW[7] = vec3[7](vec3(0.00, 0.00, 0.30), vec3(0.00, 0.10, 0.40), vec3(0.00, 0.25, 0.25), vec3(0.05, 0.35, 0.05),
282
+ vec3(0.25, 0.25, 0.00), vec3(0.40, 0.05, 0.00), vec3(0.30, 0.00, 0.00));
283
+ for (int i = 0; i < 7; i++){
284
+ float k = (3. - float(i)) / 3.; // +1 violet .. -1 red
285
+ float ior = uIor + uDisp * k;
286
+ vec3 R = refract(I, N, 1. / ior);
287
+ vec2 disp = R.xy / max(-R.z, 0.25) * uDepth;
288
+ float dl = length(disp);
289
+ disp *= min(1., uMaxDisp * (1. + 0.25 * uDisp * k * 10.) / max(dl, 1e-3)) * uRefrSign;
290
+ float mag = uMag * (1. + uDisp * 0.04 * k);
291
+ vec2 s = C + (p - C) / mag + disp;
292
+ acc += sceneAt(s) * SW[i];
293
+ }
294
+ vec3 col = acc;
295
+ // r2: the light turns gold as LIGHT ADDED over clear glass (no mixing warm into the blue field -> no grey)
296
+ float luPre = luma(col), glyph = 0.;
297
+ if (uWarm > 0.) {
298
+ glyph = smoothstep(0.72, 0.9, luPre) * uWarm;
299
+ vec2 sc = C + (p - C) / uMag; // a soft #FFC98A glow around the lit glyphs (dilated glyph mask)
300
+ float dil = 0.;
301
+ for (int j = 0; j < 8; j++) { vec2 dv = vec2(cos(float(j) * 0.785), sin(float(j) * 0.785));
302
+ dil += smoothstep(0.72, 0.9, luma(texture(uScene, toUV(sc + dv * 3.5)).rgb)) + smoothstep(0.72, 0.9, luma(texture(uScene, toUV(sc + dv * 7.)).rgb)); }
303
+ float halo = clamp(dil / 16. * 1.6 - glyph, 0., 1.) * uWarm;
304
+ vec2 lr = (p - C) / max(uLH, vec2(1.));
305
+ float rad = clamp(length(lr), 0., 1.);
306
+ vec3 wc = mix(vec3(1., 0.851, 0.659), vec3(1., 0.702, 0.780), smoothstep(0.25, 0.8, rad)); // #FFD9A8 core -> #FFB3C7
307
+ float wa = 0.17 * uWarm * pow(hC, 1.2) * (1. - smoothstep(0.3, 0.95, rad)); // a warm core, the glass stays clear
308
+ col = 1. - (1. - col) * (1. - wc * wa); // screen
309
+ col += wc * 0.03 * uWarm * pow(hC, 2.) * (1. - rad); // + luminance at the core
310
+ float bz = exp(-pow((-sd - 5.) / 3.2, 2.)); // rose #E07BD8 only in the 8-10 px bezel band
311
+ col = 1. - (1. - col) * (1. - vec3(0.878, 0.482, 0.847) * 0.34 * uWarm * bz);
312
+ col = mix(col, vec3(1., 0.788, 0.541), halo * 0.3);
313
+ }
314
+ // clear, bright body; a whisper of frost only at the very rim
315
+ vec3 bl = texture(uBlur, toUV(p - gN * 24.)).rgb;
316
+ col = mix(col, bl * 1.1 + 0.03, uFrostRim * pow(1. - edgeX, 3.));
317
+ col = mix(vec3(luma(col)), col, 1.08) * 1.035 + 0.01;
318
+ col = mix(col, vec3(1., 0.902, 0.761), glyph * 0.95); // 'gold.' lit #FFE6C2 at 95 %
319
+ // fresnel: the bezel reflects the surrounding light
320
+ float F = pow(1. - N.z, 1.6);
321
+ vec3 refl = texture(uBlur, toUV(p + gN * 120.)).rgb * 1.35 + 0.1;
322
+ col = mix(col, refl, clamp(F * uFres, 0., 0.5));
323
+ // specular: key light (top-left) + softer bounce (bottom-right)
324
+ vec3 V = vec3(0., 0., 1.);
325
+ vec3 Lk = normalize(uLight3);
326
+ vec3 Lb = normalize(vec3(-uLight3.x, -uLight3.y, uLight3.z));
327
+ float sk = pow(max(dot(reflect(-Lk, N), V), 0.), 18.);
328
+ float sb = pow(max(dot(reflect(-Lb, N), V), 0.), 26.);
329
+ col += vec3(1.) * sk * 0.75 + vec3(0.85, 0.92, 1.) * sb * 0.28;
330
+ if (uRGl.y > 0.) { // one specular glint runs round the ring (final celesta note)
331
+ float an = atan(p.y - C.y, p.x - C.x);
332
+ float da = mod(an - uRGl.x + 3.14159, 6.28318) - 3.14159;
333
+ float wg = uRingW > 0. ? 0.35 + 0.65 * hC : 0.1 + 0.9 * pow(1. - edgeX, 2.); // r2s3: on the full lens (drop) the whip rides the bezel
334
+ col += vec3(1.) * exp(-da * da / 0.09) * uRGl.y * wg;
335
+ }
336
+ col += vec3(1., 0.96, 0.93) * wv;
337
+ // rim: thin bright edge + soft inner glow, brightest on the lit / bounce sides
338
+ float facing = dot(gN, normalize(uLight3.xy)); // +1 toward the light
339
+ float lit = pow(max(facing, 0.), 2.) + 0.55 * pow(max(-facing, 0.), 2.);
340
+ float line = clamp(1. - abs(-sd - 0.8) / 1.0, 0., 1.);
341
+ col = mix(col, vec3(1.), line * (0.28 + 0.62 * lit));
342
+ col += vec3(1.) * exp(-(-sd) / 5.) * (0.05 + 0.14 * lit) * uRimGlow;
343
+ col = mix(col, vec3(1.), uRing * smoothstep(6.5, 3.0, -sd) * (0.55 + 0.45 * lit));
344
+ // inner shade on the far side gives the slab volume
345
+ col *= 1. - 0.08 * (1. - edgeX) * max(-facing, 0.) * (1. - lit);
346
+ // travelling glint across the plateau
347
+ vec2 lp = (p - C) / max(uLH, vec2(1.));
348
+ col += exp(-pow((dot(lp, normalize(vec2(1., -0.4))) - uGlint) / 0.1, 2.)) * edgeX * 0.05;
349
+ float cov = clamp(0.5 - sd, 0., 1.) * uOn;
350
+ if (uBead.z > 0.) { // let the bead (the part left in the toggle) fade back to the white knob on its own
351
+ float dMain = sdRoundBox(uLM * (p - uLC), uLH, uLR), dB = length(p - uBead.xy) - uBead.z;
352
+ cov *= mix(1., uBeadA, smoothstep(-3., 3., dMain - dB));
353
+ }
354
+ o = vec4(mix(base, col, cov), 1.);
355
+ }`;
356
+
357
+ // ---------------------------------------------------------------- final: bloom, grain, vignette, dither
358
+ export const FS_FINAL = HEAD + `
359
+ uniform sampler2D uSrc; uniform sampler2D uBloom; uniform sampler2D uGrain;
360
+ uniform float uBloomAmt, uGrainAmt, uFrame, uVig, uFade;
361
+ void main(){
362
+ vec2 p = designP();
363
+ vec2 uv = toUV(p);
364
+ vec3 c = texture(uSrc, uv).rgb;
365
+ c += texture(uBloom, uv).rgb * uBloomAmt;
366
+ // gentle highlight shoulder
367
+ vec3 hi = max(c - 0.82, 0.);
368
+ c = c - hi + hi / (1. + hi * 2.2);
369
+ // vignette
370
+ vec2 v = (p - vec2(960., 560.)) / vec2(1250., 900.);
371
+ c *= 1. - uVig * pow(clamp(dot(v, v), 0., 1.6), 1.25);
372
+ // film grain (seeded per frame), stronger in the mids
373
+ vec2 go = hash22(vec2(uFrame * 0.618, uFrame * 1.303)) * 2048.;
374
+ float g = texture(uGrain, (gl_FragCoord.xy + go) / 2048.).r - 0.5;
375
+ float l = luma(c);
376
+ c += g * uGrainAmt * (0.55 + 0.9 * l * (1.4 - l));
377
+ // triangular dither against banding
378
+ float d = hash12(gl_FragCoord.xy + uFrame * 17.31) + hash12(gl_FragCoord.xy * 1.37 + uFrame * 3.1) - 1.;
379
+ c += d / 255.;
380
+ c *= uFade;
381
+ o = vec4(clamp(c, 0., 1.), 1.);
382
+ }`;
383
+
384
+ // ---------------------------------------------------------------- reel v5.1: frosted-glass letterforms (「玻璃拟态」)
385
+ // The glyph mask (canvas, premultiplied white; g = wave-catch) is the footprint. A narrow full-res blur of it is the bevel
386
+ // height, a wide quarter-res blur is the dome and the drop shadow. The body is the frosted aurora refracted through that
387
+ // surface; a lit rim, a specular edge line, a caustic on the far edge and an inner shade make it a solid glass object.
388
+ export const FS_GLYPH = HEAD + `
389
+ uniform sampler2D uScene; // what lies behind the letters (crisp, render-target orientation)
390
+ uniform sampler2D uFrost; // same, frosted (quarter res)
391
+ uniform sampler2D uMask; // crisp glyph mask (canvas orientation)
392
+ uniform sampler2D uMN; // narrow blur of the mask (full res, canvas orientation)
393
+ uniform sampler2D uMW; // wide blur of the mask (quarter res, canvas orientation)
394
+ uniform vec2 uLight; // toward the key light (design space, y down)
395
+ uniform float uRefr; // refraction offset (px) at full slope
396
+ uniform vec3 uShadow; // drop shadow offset xy (px), strength
397
+ uniform vec3 uSweep; // specular sweep: position (px along the diagonal), width (px), amplitude
398
+ uniform float uLift; // overall frost/white lift of the body
399
+ uniform vec4 uPool; // v5.2: deep-indigo pool in the aurora behind the lockup: centre xy, half size xy (design px)
400
+ uniform vec3 uPoolK; // v5.2: pool amount (0..1), corner radius, falloff (px)
401
+ uniform vec3 uHalo; // v5.2: dark separation halo hugging the glyphs (strength), body gain, rim gain
402
+ uniform float uSat; // saturation of the refracted aurora in the body (v5.1: 1.3)
403
+ vec2 cUV(vec2 p){ return vec2(p.x / 1920., p.y / 1080.); }
404
+ void main(){
405
+ vec2 p = designP();
406
+ vec3 bg = texture(uScene, toUV(p)).rgb;
407
+ vec4 mk = texture(uMask, cUV(p));
408
+ float m = clamp(mk.r, 0., 1.);
409
+ // v5.2: the aurora deepens behind the lockup (a soft indigo pool, hue kept, a touch more saturated) and a soft dark halo
410
+ // hugs each glyph, so the lit glass reads at feed size. The glass body below still refracts the UNdeepened aurora.
411
+ if (uPoolK.x > 0.) {
412
+ float sdp = sdRoundBox(p - uPool.xy, uPool.zw, uPoolK.y);
413
+ float pool = uPoolK.x * (1. - smoothstep(-0.3 * uPoolK.z, uPoolK.z, sdp));
414
+ bg = mix(bg, bg * vec3(0.50, 0.47, 0.72) + vec3(0.004, 0.003, 0.018), pool);
415
+ float hw = texture(uMW, cUV(p)).r;
416
+ bg *= 1. - uHalo.x * uPoolK.x * clamp(hw * 2.2, 0., 1.) * (1. - m);
417
+ }
418
+ // drop shadow (light from the top left -> falls down-right), soft and wide, only outside the glass
419
+ float sh = texture(uMW, cUV(p - uShadow.xy)).r;
420
+ float shN = texture(uMN, cUV(p - uShadow.xy * 0.45)).r;
421
+ bg *= 1. - uShadow.z * clamp(sh * 0.75 + shN * 0.45, 0., 1.) * (1. - m);
422
+ if (m <= 0.002) { o = vec4(bg, 1.); return; }
423
+ float ck = mk.g / max(mk.r, 1e-3); // 0..1 wave catch
424
+ // height field and slopes (design px)
425
+ float e = 1.25, ew = 4.;
426
+ float hN = texture(uMN, cUV(p)).r;
427
+ vec2 gN = vec2(texture(uMN, cUV(p + vec2(e, 0.))).r - texture(uMN, cUV(p - vec2(e, 0.))).r,
428
+ texture(uMN, cUV(p + vec2(0., e))).r - texture(uMN, cUV(p - vec2(0., e))).r) / (2. * e);
429
+ vec2 gW = vec2(texture(uMW, cUV(p + vec2(ew, 0.))).r - texture(uMW, cUV(p - vec2(ew, 0.))).r,
430
+ texture(uMW, cUV(p + vec2(0., ew))).r - texture(uMW, cUV(p - vec2(0., ew))).r) / (2. * ew);
431
+ vec2 slope = -(gN * 7.5 + gW * 5.); // outward-pointing surface slope
432
+ vec3 N = normalize(vec3(slope, 1.));
433
+ float gl = length(gN);
434
+ vec2 nd = gl > 1e-4 ? -gN / gl : vec2(0.); // outward direction of the nearest edge
435
+ float bev = 1. - smoothstep(0.42, 0.97, hN); // 1 at the edge .. 0 on the flat top
436
+ float facing = dot(nd, normalize(uLight)); // +1 edge faces the light
437
+ // body: the frosted aurora bent through the glass (+ slight dispersion toward the rim)
438
+ vec2 off = -N.xy * uRefr;
439
+ vec3 fr;
440
+ fr.r = texture(uFrost, toUV(p + off * 1.08)).r;
441
+ fr.g = texture(uFrost, toUV(p + off)).g;
442
+ fr.b = texture(uFrost, toUV(p + off * 0.92)).b;
443
+ float l = luma(fr);
444
+ fr = max(mix(vec3(l), fr, uSat), 0.);
445
+ vec3 col = fr * uHalo.y + vec3(uLift) + vec3(0.01, 0.012, 0.035);
446
+ // vertical light falloff inside the body: top of each stroke catches the sky, bottom sits in shade
447
+ col += vec3(1.) * 0.07 * clamp(-N.y * 3., -1., 1.);
448
+ // inner shade: the far bevel refracts the dark underside
449
+ col *= 1. - 0.42 * pow(bev, 0.8) * pow(max(-facing, 0.), 1.1);
450
+ // lit rim: the bevel toward the key light reflects it
451
+ col += vec3(1.) * bev * (0.07 + 0.55 * uHalo.z * pow(max(facing, 0.), 1.7));
452
+ // caustic: light through the body focuses on the inner far edge (a thin warm line just inside it)
453
+ float edgeBand = smoothstep(0.34, 0.5, hN) * (1. - smoothstep(0.5, 0.72, hN));
454
+ col += vec3(1., 0.93, 0.86) * edgeBand * pow(max(-facing, 0.), 2.) * 0.42;
455
+ // specular edge: a bright 1-2 px line along the lit outline, fainter all round (the glass edge)
456
+ col = mix(col, vec3(1.), edgeBand * (0.22 + 0.7 * pow(max(facing, 0.), 1.4)));
457
+ // key-light specular on the dome
458
+ vec3 Lk = normalize(vec3(uLight, 0.9));
459
+ float sp = pow(max(dot(reflect(-Lk, N), vec3(0., 0., 1.)), 0.), 24.);
460
+ col += vec3(1.) * sp * 0.55;
461
+ // travelling specular sweep (the glass catches the light) and the 9.0 wave catch
462
+ if (uSweep.z > 0.) {
463
+ float d = dot(p - vec2(960., 540.), normalize(vec2(0.86, 0.5))) - uSweep.x;
464
+ col += vec3(1., 0.98, 0.95) * uSweep.z * exp(-d * d / (uSweep.y * uSweep.y)) * (0.35 + 0.65 * bev);
465
+ }
466
+ col += vec3(1., 0.965, 0.925) * ck * (0.16 + 0.4 * bev);
467
+ o = vec4(mix(bg, col, m), 1.);
468
+ }`;
@@ -0,0 +1,117 @@
1
+ {
2
+ "fps": 30,
3
+ "duration": 10.0,
4
+ "bpm": 120,
5
+ "shots": {
6
+ "sun": [
7
+ 0.0,
8
+ 2.5
9
+ ],
10
+ "stare": [
11
+ 2.5,
12
+ 4.0
13
+ ],
14
+ "fluff": [
15
+ 4.0,
16
+ 7.5
17
+ ],
18
+ "card": [
19
+ 7.5,
20
+ 10.0
21
+ ]
22
+ },
23
+ "badge": 0.0,
24
+ "title": [
25
+ 0.2,
26
+ 0.267,
27
+ 0.333,
28
+ 0.4,
29
+ 0.467
30
+ ],
31
+ "sparkle1": 0.8,
32
+ "aside": 1.317,
33
+ "scratch": 2.5,
34
+ "qmarks": [
35
+ 2.567,
36
+ 2.633,
37
+ 2.7
38
+ ],
39
+ "punch2": 3.0,
40
+ "quiet": [
41
+ 3.067,
42
+ 3.133,
43
+ 3.2,
44
+ 3.267,
45
+ 3.333,
46
+ 3.4
47
+ ],
48
+ "sweat": [
49
+ 3.3,
50
+ 3.5
51
+ ],
52
+ "wipe": 4.0,
53
+ "warn": 4.9,
54
+ "warn_beeps": [
55
+ 4.9,
56
+ 5.1
57
+ ],
58
+ "slide": [
59
+ 5.5,
60
+ 6.0
61
+ ],
62
+ "drop": 6.0,
63
+ "shock": [
64
+ 5.933,
65
+ 6.0,
66
+ 6.067
67
+ ],
68
+ "subline": 6.6,
69
+ "freeze": 7.5,
70
+ "jue": [
71
+ 8.1,
72
+ 8.167,
73
+ 8.233
74
+ ],
75
+ "stamp": 8.5,
76
+ "bye": 8.9,
77
+ "outro": 8.5,
78
+ "title_beats": [
79
+ 1.0,
80
+ 1.5,
81
+ 2.0
82
+ ],
83
+ "battery": 1.567,
84
+ "charge": [
85
+ 1.75,
86
+ 2.0,
87
+ 2.25
88
+ ],
89
+ "tag": [
90
+ 4.2,
91
+ 4.267,
92
+ 4.333,
93
+ 4.45
94
+ ],
95
+ "push": [
96
+ 5.25,
97
+ 5.5,
98
+ 5.75
99
+ ],
100
+ "pushZ": [
101
+ 1.4,
102
+ 2.0,
103
+ 2.9
104
+ ],
105
+ "tagOut": 5.05,
106
+ "freeze_hold": 0.267,
107
+ "sting": 3.86,
108
+ "wipe_whoosh": 3.933,
109
+ "badge_fly": 0.1,
110
+ "meter": 7.0,
111
+ "needle": [
112
+ 7.0,
113
+ 7.133
114
+ ],
115
+ "bao": 7.133,
116
+ "ear": 1.5
117
+ }