dsh-drawai 0.3.4 → 0.4.1

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 (538) hide show
  1. package/LICENSE +4154 -0
  2. package/README.md +49 -11
  3. package/lib/audio-media.js +150 -0
  4. package/lib/audio-service.js +66 -0
  5. package/lib/canvas-format.js +134 -0
  6. package/lib/client.js +5090 -184
  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-runner.js +6 -4
  12. package/lib/drawing-tasks.js +26 -0
  13. package/lib/ffmpeg-manager.js +1056 -0
  14. package/lib/imagegen.mjs +596 -0
  15. package/lib/index.js +1762 -129
  16. package/lib/media.js +26 -13
  17. package/lib/mgstyle-core.js +75 -0
  18. package/lib/motion/apply.js +181 -0
  19. package/lib/motion/asset-pack-lock.js +10 -0
  20. package/lib/motion/asset-pack.js +335 -0
  21. package/lib/motion/assets.js +291 -0
  22. package/lib/motion/audio.js +103 -0
  23. package/lib/motion/audiolevel.js +63 -0
  24. package/lib/motion/audiomix.js +144 -0
  25. package/lib/motion/beats.js +338 -0
  26. package/lib/motion/builtin-assets.js +62 -0
  27. package/lib/motion/canvas-spec.js +442 -0
  28. package/lib/motion/capture.js +95 -0
  29. package/lib/motion/cards.js +80 -0
  30. package/lib/motion/collect.js +449 -0
  31. package/lib/motion/delivery.js +140 -0
  32. package/lib/motion/edge-speech.py +90 -0
  33. package/lib/motion/entry.jsx +73 -0
  34. package/lib/motion/export.js +200 -0
  35. package/lib/motion/ffmpeg.js +43 -0
  36. package/lib/motion/fonts.js +71 -0
  37. package/lib/motion/jobs.js +117 -0
  38. package/lib/motion/json.js +4 -0
  39. package/lib/motion/media-catalog.js +59 -0
  40. package/lib/motion/mgstyles/BRIEF-TEMPLATE.md +63 -0
  41. package/lib/motion/mgstyles/briefs/01-flat-vector.md +104 -0
  42. package/lib/motion/mgstyles/briefs/02-line-art.md +97 -0
  43. package/lib/motion/mgstyles/briefs/03-isometric.md +108 -0
  44. package/lib/motion/mgstyles/briefs/05-cel-boil.md +145 -0
  45. package/lib/motion/mgstyles/briefs/06-collage.md +149 -0
  46. package/lib/motion/mgstyles/briefs/07-liquid.md +106 -0
  47. package/lib/motion/mgstyles/briefs/08-morph.md +111 -0
  48. package/lib/motion/mgstyles/briefs/09-bauhaus.md +150 -0
  49. package/lib/motion/mgstyles/briefs/10-synthwave.md +151 -0
  50. package/lib/motion/mgstyles/briefs/12-aurora-glass.md +147 -0
  51. package/lib/motion/mgstyles/briefs/18-hanazi.md +140 -0
  52. package/lib/motion/mgstyles/briefs/19-paperclip.md +156 -0
  53. package/lib/motion/mgstyles/briefs/20-pixel.md +118 -0
  54. package/lib/motion/mgstyles/briefs/22-hud.md +118 -0
  55. package/lib/motion/mgstyles/catalog.d/01-flat-vector.json +34 -0
  56. package/lib/motion/mgstyles/catalog.d/02-line-art.json +34 -0
  57. package/lib/motion/mgstyles/catalog.d/03-isometric.json +35 -0
  58. package/lib/motion/mgstyles/catalog.d/05-cel-boil.json +28 -0
  59. package/lib/motion/mgstyles/catalog.d/06-collage.json +28 -0
  60. package/lib/motion/mgstyles/catalog.d/07-liquid.json +28 -0
  61. package/lib/motion/mgstyles/catalog.d/08-morph.json +28 -0
  62. package/lib/motion/mgstyles/catalog.d/09-bauhaus.json +28 -0
  63. package/lib/motion/mgstyles/catalog.d/10-synthwave.json +28 -0
  64. package/lib/motion/mgstyles/catalog.d/12-aurora-glass.json +28 -0
  65. package/lib/motion/mgstyles/catalog.d/18-hanazi.json +28 -0
  66. package/lib/motion/mgstyles/catalog.d/19-paperclip.json +28 -0
  67. package/lib/motion/mgstyles/catalog.d/20-pixel.json +28 -0
  68. package/lib/motion/mgstyles/catalog.d/22-hud.json +28 -0
  69. package/lib/motion/mgstyles/catalog.json +1356 -0
  70. package/lib/motion/mgstyles/upstream/README.md +147 -0
  71. package/lib/motion/mgstyles/upstream/README.zh-CN.md +147 -0
  72. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/cues.json +1 -0
  73. package/lib/motion/mgstyles/upstream/demos/01-flat-vector/index.html +712 -0
  74. package/lib/motion/mgstyles/upstream/demos/02-line-art/cues.json +331 -0
  75. package/lib/motion/mgstyles/upstream/demos/02-line-art/film.js +676 -0
  76. package/lib/motion/mgstyles/upstream/demos/02-line-art/index.html +18 -0
  77. package/lib/motion/mgstyles/upstream/demos/02-line-art/tools/dump_timing.mjs +26 -0
  78. package/lib/motion/mgstyles/upstream/demos/03-isometric/cues.json +109 -0
  79. package/lib/motion/mgstyles/upstream/demos/03-isometric/index.html +25 -0
  80. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/anim.js +82 -0
  81. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/main.js +219 -0
  82. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/night5.js +180 -0
  83. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/render.js +202 -0
  84. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title.js +167 -0
  85. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/title5.js +294 -0
  86. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/ui.js +141 -0
  87. package/lib/motion/mgstyles/upstream/demos/03-isometric/js/world.js +1399 -0
  88. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/cues.json +157 -0
  89. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/index.html +34 -0
  90. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/engine.js +326 -0
  91. package/lib/motion/mgstyles/upstream/demos/05-cel-boil/js/scene.js +2036 -0
  92. package/lib/motion/mgstyles/upstream/demos/06-collage/assets/gen/layout.json +157 -0
  93. package/lib/motion/mgstyles/upstream/demos/06-collage/cues.json +80 -0
  94. package/lib/motion/mgstyles/upstream/demos/06-collage/index.html +889 -0
  95. package/lib/motion/mgstyles/upstream/demos/07-liquid/cues.json +100 -0
  96. package/lib/motion/mgstyles/upstream/demos/07-liquid/index.html +108 -0
  97. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/engine.js +153 -0
  98. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/links.js +64 -0
  99. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/lookdev.js +46 -0
  100. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/scene.js +963 -0
  101. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/shaders.js +647 -0
  102. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/textsdf.js +114 -0
  103. package/lib/motion/mgstyles/upstream/demos/07-liquid/js/type.js +50 -0
  104. package/lib/motion/mgstyles/upstream/demos/08-morph/cues.json +131 -0
  105. package/lib/motion/mgstyles/upstream/demos/08-morph/glyphs.json +1 -0
  106. package/lib/motion/mgstyles/upstream/demos/08-morph/index.html +901 -0
  107. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/cues.json +270 -0
  108. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/film.js +697 -0
  109. package/lib/motion/mgstyles/upstream/demos/09-bauhaus/index.html +12 -0
  110. package/lib/motion/mgstyles/upstream/demos/10-synthwave/cues.json +44 -0
  111. package/lib/motion/mgstyles/upstream/demos/10-synthwave/index.html +1028 -0
  112. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/cues.json +67 -0
  113. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/index.html +16 -0
  114. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/main.js +967 -0
  115. package/lib/motion/mgstyles/upstream/demos/12-aurora-glass/shaders.js +468 -0
  116. package/lib/motion/mgstyles/upstream/demos/18-hanazi/cues.json +117 -0
  117. package/lib/motion/mgstyles/upstream/demos/18-hanazi/index.html +541 -0
  118. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/countries-110m.json +1 -0
  119. package/lib/motion/mgstyles/upstream/demos/19-paperclip/assets/stickers/meta.json +34 -0
  120. package/lib/motion/mgstyles/upstream/demos/19-paperclip/cues.json +285 -0
  121. package/lib/motion/mgstyles/upstream/demos/19-paperclip/index.html +599 -0
  122. package/lib/motion/mgstyles/upstream/demos/20-pixel/cues.json +42 -0
  123. package/lib/motion/mgstyles/upstream/demos/20-pixel/film.js +914 -0
  124. package/lib/motion/mgstyles/upstream/demos/20-pixel/index.html +18 -0
  125. package/lib/motion/mgstyles/upstream/demos/22-hud/cues.json +108 -0
  126. package/lib/motion/mgstyles/upstream/demos/22-hud/index.html +125 -0
  127. package/lib/motion/mgstyles/upstream/demos/22-hud/js/holo.js +275 -0
  128. package/lib/motion/mgstyles/upstream/demos/22-hud/js/hud.js +855 -0
  129. package/lib/motion/mgstyles/upstream/demos/22-hud/js/post.js +150 -0
  130. package/lib/motion/mgstyles/upstream/demos/22-hud/js/util.js +65 -0
  131. package/lib/motion/mgstyles/upstream/demos/22-hud/js/v5.js +142 -0
  132. package/lib/motion/mgstyles/upstream/harness/render.mjs +319 -0
  133. package/lib/motion/mgstyles/upstream/manifest.json +269 -0
  134. package/lib/motion/mgstyles/upstream/prompts/01-flat-vector.md +98 -0
  135. package/lib/motion/mgstyles/upstream/prompts/02-line-art.md +95 -0
  136. package/lib/motion/mgstyles/upstream/prompts/03-isometric.md +97 -0
  137. package/lib/motion/mgstyles/upstream/prompts/05-cel-boil.md +95 -0
  138. package/lib/motion/mgstyles/upstream/prompts/06-collage.md +95 -0
  139. package/lib/motion/mgstyles/upstream/prompts/07-liquid.md +98 -0
  140. package/lib/motion/mgstyles/upstream/prompts/08-morph.md +95 -0
  141. package/lib/motion/mgstyles/upstream/prompts/09-bauhaus.md +96 -0
  142. package/lib/motion/mgstyles/upstream/prompts/10-synthwave.md +95 -0
  143. package/lib/motion/mgstyles/upstream/prompts/12-aurora-glass.md +96 -0
  144. package/lib/motion/mgstyles/upstream/prompts/18-hanazi.md +95 -0
  145. package/lib/motion/mgstyles/upstream/prompts/19-paperclip.md +96 -0
  146. package/lib/motion/mgstyles/upstream/prompts/20-pixel.md +96 -0
  147. package/lib/motion/mgstyles/upstream/prompts/22-hud.md +95 -0
  148. package/lib/motion/mgstyles/upstream/rubric.md +51 -0
  149. package/lib/motion/mgstyles/upstream/template.md +36 -0
  150. package/lib/motion/pixelqa.js +198 -0
  151. package/lib/motion/preview.js +97 -0
  152. package/lib/motion/project.js +395 -0
  153. package/lib/motion/qa.js +290 -0
  154. package/lib/motion/reference-media.jsx +10 -0
  155. package/lib/motion/render-settings.js +112 -0
  156. package/lib/motion/render.js +161 -0
  157. package/lib/motion/runtime/package-lock.json +3058 -0
  158. package/lib/motion/runtime/package.json +16 -0
  159. package/lib/motion/scene-kit.js +183 -0
  160. package/lib/motion/sfx.js +232 -0
  161. package/lib/motion/shotcraft/ClipCard.tsx +204 -0
  162. package/lib/motion/shotcraft/catalog.json +2461 -0
  163. package/lib/motion/shotcraft/upstream/SKILL.md +286 -0
  164. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -0
  165. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -0
  166. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -0
  167. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -0
  168. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -0
  169. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -0
  170. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -0
  171. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -0
  172. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -0
  173. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -0
  174. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -0
  175. package/lib/motion/shotcraft/upstream/assets/scripts/__pycache__/sfx-source.cpython-313.pyc +0 -0
  176. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -0
  177. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -0
  178. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -0
  179. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -0
  180. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -0
  181. package/lib/motion/shotcraft/upstream/demos/README.md +120 -0
  182. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -0
  183. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -0
  184. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -0
  185. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -0
  186. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -0
  187. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -0
  188. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +389 -0
  189. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -0
  190. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -0
  191. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -0
  192. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -0
  193. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -0
  194. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -0
  195. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -0
  196. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -0
  197. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -0
  198. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -0
  199. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -0
  200. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -0
  201. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -0
  202. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -0
  203. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -0
  204. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -0
  205. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -0
  206. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -0
  207. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -0
  208. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -0
  209. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -0
  210. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -0
  211. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -0
  212. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -0
  213. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -0
  214. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -0
  215. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -0
  216. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -0
  217. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -0
  218. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -0
  219. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -0
  220. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -0
  221. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -0
  222. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -0
  223. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -0
  224. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -0
  225. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -0
  226. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -0
  227. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -0
  228. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -0
  229. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -0
  230. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -0
  231. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -0
  232. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -0
  233. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -0
  234. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -0
  235. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -0
  236. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -0
  237. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -0
  238. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -0
  239. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -0
  240. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -0
  241. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -0
  242. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -0
  243. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -0
  244. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -0
  245. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -0
  246. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -0
  247. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -0
  248. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -0
  249. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -0
  250. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -0
  251. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -0
  252. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -0
  253. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -0
  254. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -0
  255. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -0
  256. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -0
  257. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -0
  258. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -0
  259. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -0
  260. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -0
  261. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -0
  262. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -0
  263. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -0
  264. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -0
  265. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -0
  266. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -0
  267. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -0
  268. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -0
  269. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -0
  270. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -0
  271. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -0
  272. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -0
  273. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -0
  274. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -0
  275. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -0
  276. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -0
  277. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -0
  278. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -0
  279. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -0
  280. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -0
  281. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -0
  282. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -0
  283. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -0
  284. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -0
  285. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -0
  286. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -0
  287. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -0
  288. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -0
  289. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -0
  290. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -0
  291. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -0
  292. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -0
  293. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -0
  294. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -0
  295. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -0
  296. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -0
  297. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -0
  298. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -0
  299. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -0
  300. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -0
  301. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -0
  302. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -0
  303. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -0
  304. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -0
  305. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -0
  306. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -0
  307. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -0
  308. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -0
  309. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -0
  310. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -0
  311. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -0
  312. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -0
  313. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -0
  314. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -0
  315. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -0
  316. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -0
  317. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -0
  318. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -0
  319. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -0
  320. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -0
  321. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -0
  322. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -0
  323. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -0
  324. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -0
  325. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -0
  326. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -0
  327. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -0
  328. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -0
  329. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -0
  330. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -0
  331. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -0
  332. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -0
  333. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -0
  334. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -0
  335. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -0
  336. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -0
  337. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -0
  338. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -0
  339. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -0
  340. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -0
  341. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -0
  342. package/lib/motion/shotcraft/upstream/manifest.json +2715 -0
  343. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -0
  344. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -0
  345. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -0
  346. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -0
  347. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -0
  348. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -0
  349. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -0
  350. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -0
  351. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -0
  352. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -0
  353. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -0
  354. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -0
  355. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -0
  356. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -0
  357. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -0
  358. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -0
  359. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -0
  360. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -0
  361. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -0
  362. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -0
  363. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -0
  364. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -0
  365. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -0
  366. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -0
  367. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -0
  368. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -0
  369. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -0
  370. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -0
  371. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -0
  372. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -0
  373. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -0
  374. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -0
  375. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -0
  376. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -0
  377. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -0
  378. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -0
  379. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -0
  380. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -0
  381. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -0
  382. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -0
  383. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -0
  384. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -0
  385. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -0
  386. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -0
  387. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -0
  388. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -0
  389. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -0
  390. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -0
  391. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -0
  392. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -0
  393. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -0
  394. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -0
  395. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -0
  396. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -0
  397. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -0
  398. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -0
  399. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -0
  400. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -0
  401. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -0
  402. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -0
  403. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -0
  404. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -0
  405. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -0
  406. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -0
  407. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -0
  408. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -0
  409. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -0
  410. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -0
  411. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -0
  412. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -0
  413. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -0
  414. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -0
  415. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -0
  416. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -0
  417. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -0
  418. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -0
  419. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -0
  420. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -0
  421. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -0
  422. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -0
  423. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -0
  424. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -0
  425. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -0
  426. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -0
  427. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -0
  428. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -0
  429. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -0
  430. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -0
  431. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -0
  432. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -0
  433. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -0
  434. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -0
  435. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -0
  436. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -0
  437. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -0
  438. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -0
  439. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -0
  440. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -0
  441. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -0
  442. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -0
  443. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -0
  444. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -0
  445. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -0
  446. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -0
  447. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -0
  448. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -0
  449. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -0
  450. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -0
  451. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -0
  452. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -0
  453. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -0
  454. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -0
  455. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -0
  456. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -0
  457. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -0
  458. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -0
  459. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -0
  460. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -0
  461. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -0
  462. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -0
  463. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -0
  464. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -0
  465. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -0
  466. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -0
  467. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -0
  468. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -0
  469. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -0
  470. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -0
  471. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -0
  472. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -0
  473. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -0
  474. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -0
  475. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -0
  476. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -0
  477. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -0
  478. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -0
  479. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -0
  480. package/lib/motion/shotcraft/upstream/template/package.json +20 -0
  481. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -0
  482. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -0
  483. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -0
  484. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -0
  485. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -0
  486. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -0
  487. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -0
  488. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -0
  489. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -0
  490. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -0
  491. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -0
  492. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -0
  493. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -0
  494. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -0
  495. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +389 -0
  496. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -0
  497. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -0
  498. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -0
  499. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -0
  500. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -0
  501. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -0
  502. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -0
  503. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -0
  504. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -0
  505. package/lib/motion/spec.js +113 -0
  506. package/lib/motion/style-engine.js +153 -0
  507. package/lib/motion/style-frames.js +271 -0
  508. package/lib/motion/sync.js +214 -0
  509. package/lib/motion/theme.js +121 -0
  510. package/lib/motion/video-runtime.js +192 -0
  511. package/lib/motion/voice.js +417 -0
  512. package/lib/motion-agent-files.js +82 -0
  513. package/lib/motion-agent-protocol.js +66 -0
  514. package/lib/motion-agent-tools.js +196 -0
  515. package/lib/motion-agent.js +171 -0
  516. package/lib/motion-capture.js +93 -0
  517. package/lib/motion-core.js +238 -0
  518. package/lib/motion-film-review.js +71 -0
  519. package/lib/motion-library.js +210 -0
  520. package/lib/motion-planner.js +254 -0
  521. package/lib/motion-project.js +87 -0
  522. package/lib/motion-render-worker.js +153 -0
  523. package/lib/motion-session.js +32 -0
  524. package/lib/motion-source.js +49 -0
  525. package/lib/motion-tasks.js +452 -0
  526. package/lib/motion-vision.js +44 -0
  527. package/lib/mxfile.js +27 -7
  528. package/lib/routing/node-runtime.js +14 -0
  529. package/lib/routing/router.js +211 -0
  530. package/lib/routing/vendor/README.md +96 -0
  531. package/lib/routing/vendor/libavoid-routing.js +753 -0
  532. package/lib/routing/vendor/libavoid.min.js +59 -0
  533. package/lib/shotcard-core.js +39 -0
  534. package/lib/shotcard-reference.js +56 -0
  535. package/lib/style-kernel.js +37 -3
  536. package/lib/task-patches.js +26 -2
  537. package/lib/video-export.js +49 -22
  538. package/package.json +34 -4
@@ -0,0 +1,118 @@
1
+ # 20-pixel · 像素冒险 / 8-bit
2
+
3
+ 上游:`src/motion/mgstyles/upstream/demos/20-pixel/film.js`(70 973 B / 914 行)、`cues.json`(888 B)。内部分辨率写死 `const W = 320, H = 180`,输出 1920×1080 正好 ×6;150 BPM / 30fps / 10.000s(一拍 12 帧)。`window.DEMO.motionBlur` 只 `samples:1`,味道全来自 CRT 后期。提示词原文用 `mg_style {action:"read",slug:"20-pixel"}` 取。
4
+
5
+ ## 1. 一眼认出
6
+
7
+ - **每个像素是 6×6 输出方块**:1px 描边在成片里是 6px 实心块,没有抗锯齿,没有亚像素位移。
8
+ - **同屏 ≤32 色**,全部来自 `film.js:17` 的 `HEX`(QUEST-32);渐变只有 4×4 Bayer(`BAY` / `bay(x,y)`),天空 5 级色阶。
9
+ - **动作是阶梯的**:跑步 `Math.floor(f/3)`(10fps)、星星 `Math.floor(f/4)`、金币 `Math.floor(f/2)`(15fps)。
10
+ - **横向卷轴**:`GROUND = 150`,主角屏幕 x 钉在 96(`cam(f) = hx(f) - 96`),相机停在 `CAM_END = 260`;视差 ×0.125 / ×0.3 / ×0.55 / ×1.4。
11
+ - **CRT 包住一切**:桶形 `k = 0.03`、按源像素行扫描线(6 输出 px 一条)、8 方向辉光、四角暗角。
12
+
13
+ ## 2. 色板
14
+
15
+ | 角色 | hex | 用在哪 |
16
+ | --- | --- | --- |
17
+ | 描边紫黑 | `#0d0b1a` | 精灵 1px 描边(slot 0)、夜间最暗部 |
18
+ | 夜蓝 | `#1b1a33` | 天空底、对话框最外层 |
19
+ | 天蓝 | `#5b9bea` | 正午天空、水面高光(远山 `#2a2f5a`、云 `#8cc8f5`) |
20
+ | 暖黄 | `#ffd166` | 金币、LOGO 立体面、光池 |
21
+ | 白 | `#ffffff` | 高光点、白闪、`PRESS START` |
22
+ | 品牌红 | `#d23c3c` | 主角围巾、丝带、UI 强调 |
23
+
24
+ 机制两级间接:`IB` 是 slot 索引(非 RGB),`SM` 每 slot 存 DAY/AFT/GOLD/SUNS/DUSK/NIGHT 六列索引,`makeLUT(f)` 每帧展开成 `HEX` 的最终色号;换 stage 就是换 LUT(`stageOf(f)` 选列,转场 4 帧用 `mixIdx` 两级混合)。`theme.ts` 只放 6–8 个常量,其余留 `PALETTE: string[]` 按下标取。
25
+
26
+ **禁止色**:任何不在 `HEX` 里的颜色。尤其 `#808080` 灰、`#000000`(描边是带紫的 `#0d0b1a`)、任何高饱和紫——一出现就不像 8-bit。
27
+
28
+ ## 3. 字体与字排
29
+
30
+ **当前优先使用插件内置字体:** 英文 HUD 使用 Press Start 2P,中文使用 Fusion Pixel 12;仍需在低分辨率网格上排版并用最近邻放大。
31
+
32
+ 下方保留原片排版参数及旧版系统替代方案;只有内置字体不适合或不可用时才参考旧系统栈及其损失说明。
33
+
34
+ 原片写 `'Press Start 2P'`(HUD 数字 8px)和 `'Fusion Pixel 12'`(中文 12px),但**字体不是关键**:`glyph(ch, fam, size)` 先把字画进离屏 canvas,再按 alpha 阈值二值化成 1-bit mask(`gcache` 缓存),`text()` 用 1px 偏移补描边。像素感来自字被量化到源像素栅格。
35
+
36
+ 旧版没有内置字体时使用的系统替代栈:等宽 `"Consolas","JetBrains Mono",monospace`;中文 `"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif`;粗标题 `"Arial Black","Impact",sans-serif`。
37
+
38
+ **损失**:Consolas 是矢量字,12px 中文会糊成灰块,直接 `fillText` 就破了 1-bit。必须照抄 `glyph()`:按 1× 画到 320×180 离屏 canvas,`getImageData` 后 alpha > 0.5 记 1,再 ×6 放大。字号只取 8/12/16,字距按整数源 px。
39
+
40
+ ## 4. 动效语法
41
+
42
+ - **150 BPM = 12 帧/拍**;`beat 0.4 / bar 1.6`。
43
+ - **缓动只有两种**:物理用**整数关键帧表**——落地挤压 `SQT = {0:[6,6],1:[3,3],2:[-4,-2],3:[-4,-2]}`、回弹 `BOUNCE = {0:0,1:-5,2:-2,3:0}`、震屏 `logoShake(f)` 6 帧 `[3,-3,2,-1,1,0]`;位移用抛物线 `dy = Math.round(-128*(1-(i/12)**2))`。**没有** `Easing.bezier`,也不该有。
44
+ - **禁用**:`spring()`、作用在像素坐标上的连续缓动(必出半像素)、超过 2 帧的 opacity 渐变、`<CameraMotionBlur>`。
45
+ - 签名动作:
46
+ 1. **跑跳**(`jumps 0.3 / 2.0`,落地 `lands 0.9 / 2.8`):12 帧抛物线 + 4 帧挤压,落地同帧 4 粒 `bay` 扬尘。
47
+ 2. **金币三连**(`coins 0.4/0.5/0.6`):12×12 精灵 4 帧旋转,每枚隔 3 帧,`Math.floor(f/2)`。
48
+ 3. **开箱打字**(`box_open 4.6` → `type 4.8–5.6` → `box_close 5.8`):`n = min(9, floor((f - fType)/3) + 1)`,3 帧一字,头像每 3 帧张嘴。
49
+ 4. **LOGO 砸落**(`logo 7.2`,`shine 7.6`):12 帧自由落体 + 4 帧挤压 + 2 帧白闪 `M(8)/M(15)`,扫光每帧 18px、沿 `u = i + j*0.7` 判定。
50
+ 5. **入夜**(`night 8.0`,`night_wave 8.0–8.3`):`waveR(f)` 按 `[150,110,70,36]` 四档收光池。
51
+ - **网格**:320×180 硬栅格;对话框 176×30 @ (72,99),安全边距 8px。图层自下而上:`drawSky` → 远山 ×0.125 → `MID` ×0.3 → `HILLS` ×0.55 → 地面 → 主角 → `drawFG` ×1.4 → 对话框/HUD → CRT。
52
+
53
+ ## 5. Remotion 落地配方
54
+
55
+ 必须换掉:
56
+
57
+ 1. `window.renderAt(t)` / `requestAnimationFrame` → `useCurrentFrame()`,`t = frame/30`。
58
+ 2. `Date.now()` / `performance.now()` → 不需要。`rng(seed)` 在模块级只建一次(`const R = rng(7)`)。
59
+ 3. `Math.random()` → 用 `hash(x, y)` / `rng()`(mulberry32)。别用 Remotion 的 `random()`:它按 seed 全局推进,重排会串。
60
+ 4. **Canvas 2D 逐帧**:保留,改成 `useEffect(() => paint(ctx, frame), [frame])` 同步画;canvas 固定 `width={320} height={180}`,CSS 放大 6 倍 + `imageRendering:'pixelated'`。
61
+ 5. CSS `transition` / `animation` → 全删,只留静态叠加层。
62
+ 6. 运动模糊:上游 `samples:1`,**不加**。
63
+
64
+ **CRT 近似与损失**:`film.js:760` 的 `fs` 逐像素做 `sharp()` 像素中心重采样、桶形、扫描线(`sy = fract(uc.y*uSrc.y)`,每源像素行一条)、8 方向 glow。Remotion 拆静态层:`repeating-linear-gradient` 6px 周期 `rgba(0,0,0,.30)`、canvas 副本 `filter: blur(6px)` + `mixBlendMode:'screen'` 当辉光、`radial-gradient` 暗角、两条 1px 红/青偏移层 `screen` 当色偏。**损失**:无桶形(直边不弯)、无像素中心重采样(扫描线与像素格拍频出摩尔纹)、辉光是均匀高斯而非随亮度加权的 8 tap(暗部被抬灰)。
65
+
66
+ ```tsx
67
+ import { AbsoluteFill, Easing, interpolate, useCurrentFrame } from 'remotion';
68
+ import { useEffect, useRef } from 'react';
69
+
70
+ const W = 320, H = 180, Z = 6; // 1920/320,必须整除
71
+
72
+ export const PixelScene: React.FC = () => {
73
+ const frame = useCurrentFrame();
74
+ const ref = useRef<HTMLCanvasElement>(null);
75
+ useEffect(() => {
76
+ const ctx = ref.current!.getContext('2d')!;
77
+ ctx.imageSmoothingEnabled = false;
78
+ ctx.fillStyle = '#1b1a33'; ctx.fillRect(0, 0, W, H);
79
+ // 12 帧坠落:先在源像素里取整,再画
80
+ const dy = Math.round(interpolate(frame, [216, 228], [-128, 0],
81
+ { extrapolateRight: 'clamp', easing: Easing.in(Easing.quad) }));
82
+ ctx.fillStyle = '#ffd166'; ctx.fillRect(132, 60 + dy, 56, 28);
83
+ ctx.fillStyle = '#0d0b1a'; ctx.fillRect(132, 60 + dy, 56, 2);
84
+ }, [frame]);
85
+ return (
86
+ <AbsoluteFill style={{ background: '#0d0b1a' }}>
87
+ <canvas ref={ref} width={W} height={H}
88
+ style={{ width: W * Z, height: H * Z, imageRendering: 'pixelated' }} />
89
+ <AbsoluteFill style={{ background:
90
+ 'repeating-linear-gradient(to bottom, rgba(0,0,0,.30) 0 2px, transparent 2px 6px)' }} />
91
+ </AbsoluteFill>
92
+ );
93
+ };
94
+ ```
95
+
96
+ ## 6. 镜头结构模板
97
+
98
+ | 时间 | 意图 | 画面 |
99
+ | --- | --- | --- |
100
+ | 0.0–0.9 | CRT 开机 | 点→线→张开(`PWR.on` 11 帧) |
101
+ | 0.9–3.2 | 跑跳 | 跳 0.3/2.0、落 0.9/2.8、6 金币、踩敌 2.4 |
102
+ | 3.2–4.4 | 减速 | `skid 4.0` 扬尘、`stop 4.4` 相机停,转 sunset |
103
+ | 4.6–5.8 | 开箱对话 | 箱开 4.6、打字 4.8–5.6、箱关 5.8 |
104
+ | 6.0–6.47 | 抖动→爆光 | `chest_open 6.4`、1 帧白闪、推镜 8→12 |
105
+ | 7.2–8.0 | LOGO 落地 | 12 帧坠落 + 4 帧挤压 + 扫光 7.6 + 震屏 |
106
+ | 8.0–10 | 入夜收尾 | 光池收拢、萤火虫、丝带、`PRESS START` 闪 |
107
+
108
+ ## 7. 坑
109
+
110
+ 1. 一处漏 `Math.floor` 就糊:`cam(f)`、`cx*0.125`、精灵 x/y 全要取整。
111
+ 2. canvas 的 CSS 尺寸只能是 6 的整数倍,别套带小数的 `transform: scale()`。
112
+ 3. `IB` 是 slot 索引不是 RGB,直接当颜色画会得一片噪点,必须先过 `makeLUT`。
113
+ 4. 文字别交给 `<span>`:DOM 抗锯齿毁 1-bit,必须走 canvas 二值化。
114
+ 5. 扫描线周期要整除 1080(2/3/6px),否则出摩尔纹。
115
+
116
+ ## 8. 版权与素材
117
+
118
+ 上游 mg-styles-15 为 MIT。本风格无外部图片/视频:精灵、6×7 字模 `LG`、地形、云全由代码生成。`SCORE`、`PRESS START` 类文案可替换;别用任天堂的角色名与商标。
@@ -0,0 +1,118 @@
1
+ # 22-hud · 赛博朋克 HUD / FUI
2
+
3
+ 上游:`demos/22-hud/`(`index.html` 9 805 B、`js/hud.js` 65 650 B / 855 行、`js/holo.js` 17 026 B、`js/post.js` 8 773 B、`cues.json` 1 411 B)。three.js 线框地球 → `UnrealBloomPass` → 文字层 → CRT。1920×1080 / 30fps / 10.000s;120 BPM = 15 帧/拍,LOCK 6.400s = 第 192 帧。提示词原文用 `mg_style {action:"read",slug:"22-hud"}` 取。
4
+
5
+ ## 1. 一眼认出
6
+
7
+ - **96% 是黑**:底 `#020A0D`,只剩 1–1.5px 青线、11–21px 全大写等宽字和一束辉光(`UnrealBloomPass(res, 0.75, 0.45, 0.32)`)。
8
+ - **中央 401px 扫描环**:`318 * SS`(`SS = 1.26`),`SEGS` 生成 40 段长短弧(4–34°,间隔 3–13°),四角 34px 直角框(`frameCorners`,`m = 40`)。
9
+ - **数字先乱码后定值**:`scramble` 5 帧跳 `GL` 字符、`roll` 4 帧跳数字、`flick` 4 帧 `[0.7,0.1,1.0,0.45]` 抖完才稳。
10
+ - **一切都不太干净**:3px 扫描线 ±5%、径向色差、54 条 glitch 切片、0.028 颗粒。
11
+
12
+ ## 2. 色板
13
+
14
+ | 角色 | hex | 用在哪 |
15
+ | --- | --- | --- |
16
+ | 墨底 | `#020A0D` | 全屏背景,`INK` 也是文字挖洞色 |
17
+ | 深青 | `#0E3A42` | 面板底、`DEEP` |
18
+ | 暗青 | `#0B7C8C` | 次级刻度、坐标行,`DIM` |
19
+ | 主青 | `#00E5FF` | 90% 的线、括号、状态框,`CYA` |
20
+ | 高光白青 | `#E8FEFF` | 主数字、锁定标题,`HOT` |
21
+ | 警报红 | `#FF2A1F` | REC 点、失败状态,`RED` |
22
+ | 锁定/信标 | `#FF2A8A` / `#FF5A4E` | 锁定环与四段弧 / 信号点与脉冲环 |
23
+
24
+ 色板只有这 8 个(`MKC` 是色盲替换表)。**禁止色**:纯白 `#FFFFFF`、绿色、任何暖色——唯一例外是 lock 时 `COMP_FS` 的 `reink()`,整屏压成 `vec3(1.0,0.40,0.0)` 橙调。
25
+
26
+ ## 3. 字体与字排
27
+
28
+ **当前优先使用插件内置字体:** 中文用 HarmonyOS Sans SC,拉丁标题用 Rajdhani 或 Chakra Petch,数据用 JetBrains Mono。
29
+
30
+ 下方保留原片排版参数及旧版系统替代方案;只有内置字体不适合或不可用时才参考旧系统栈及其损失说明。
31
+
32
+ 原片加载 4 族:`"JetBrains Mono"`、`Rajdhani`、`"Chakra Petch"`、`"HarmonyOS Sans SC"`,等 `fonts.ready` 后才出首帧。拉丁一律大写 + `letterSpacing 1–9`。
33
+
34
+ 旧版没有内置字体时使用的系统替代栈:等宽 `"Consolas","JetBrains Mono",monospace`;拉丁窄体 `"Bahnschrift SemiCondensed","Arial Narrow",sans-serif`;中文 `"Microsoft YaHei UI","Microsoft YaHei",sans-serif`。
35
+
36
+ **损失**:Rajdhani 窄体换 Bahnschrift 宽 8–12%,同一行 `ls:3` 会撑破 300px 栏,字距降到 1.5–2;JetBrains Mono 0.6em vs Consolas 0.55em,滚动数字左右跳,需 `tabular-nums` + 固定宽盒;HarmonyOS 900 在 Windows 无此字重(YaHei 仅 400/700),58px 标题会细一档。
37
+
38
+ ## 4. 动效语法
39
+
40
+ - **120 BPM = 15 帧/拍**。0.4 / 4.4 / 6.4 / 7.1 四个冲击帧用闭快门单独渲染(`HARD` 集合),别让运动模糊糊掉。
41
+ - 缓动全在 `util.js`:`E.outC = 1-(1-x)³`、`E.outE = 1-2^(-10x)`、`E.inOutC`、`E.inQ = x²`、`E.outQ`、`E.outBack(1.70158)`、`sstep`。所有位移 3–10 帧到位后彻底静止。
42
+ - **禁用**:`spring()`、超过 0.35s 的位移、`rotate` 动画(HUD 是平面图,转起来就假)、opacity 渐变长于 4 帧。
43
+ - 签名动作:
44
+ 1. **开机 0–1.2s**:十字准星 0.04–0.22(`outE`),4 次 ping 每帧错峰、`318*E.outC` 落环;外环 0.40–0.90 画出;六边形网格 1.2 起 1500px 波前推开(`uHex`)。
45
+ 2. **雷达 2.4s 起**:`radar_period 2.0`、`theta0 52°`,4 个 blip 按 `(brg-52)/180` 秒依次亮。
46
+ 3. **捕获 5.9–6.33**:括号 8 帧 `outCubic` 从 (872,476) 收到 (176,176),再 2 帧 `(F>>1)&1` 在 176/204 间跳,`snap 6.2333` 起 3 帧 `[1.35,1.08,0.96,1.0]` 过冲;锁环 36 段按 `E.inQ` 填满。
47
+ 4. **LOCK 6.400**:标题 1.15→1(3 帧),首帧纯 `HOT`;扫描环换 `#FF2A8A` 并 `+0.62*DIVE` 推近;侧栏 `x ±120px` 外推 + `blur(4px)`。
48
+ 5. **关机 9.767**:0.2s 内 `csy = pow(1-cz/0.6, 2.2)` 压成一条线,再横向收成点。
49
+ - **网格**:安全边距 96px,角标 40px,顶栏 y=76,分隔线 y=100.5,左栏 `CW=300`。字号 11/13/14/15/17/21/26/58/60;线宽 1/1.5/2/3/4/6。
50
+
51
+ ## 5. Remotion 落地配方
52
+
53
+ 必须换掉:
54
+
55
+ 1. `window.renderAt(t)` / `requestAnimationFrame` → `useCurrentFrame()`;`holo.update(t)` 的 `h`、`zAt(t)`、`SURGE(t)` 全改成 `frame` 纯函数。
56
+ 2. `Date.now()` / `document.fonts.ready` → 删;字体同步给。
57
+ 3. `Math.random()` → `util.js` 的 `hash(...a)` 与 `mulberry(seed)`。
58
+ 4. **Canvas 2D 逐帧**:保留,但合成两遍——几何一层、文字一层(上游 `drawHUD(t,S,'geo')` / `'txt'` 就这么分),文字层不参与 blur/bloom,否则滚动数字双曝光。
59
+ 5. CSS `transition`/`animation` → 删。`ctx.filter='blur()'` 可用,但只在整层用一次。
60
+ 6. 运动模糊:`samples:1`,**不加** `<CameraMotionBlur>`,动感靠 dive 推镜和 glitch。
61
+
62
+ **1px 刻线在 1080p**:上游按 `dpr`(通常 2)画 `W*dpr` 画布,1.25 逻辑 px 实为 2.5 device px;Remotion 输出就是 1920×1080,1 逻辑 px = 1 像素,所以坐标 `+0.5`、`lineWidth: 1.25`,否则线要么消失要么发灰。**不要**画 3840 再缩,线变 0.6px 灰线。
63
+
64
+ **后期近似**:bloom 用副本 `brightness(1.6) contrast(2.4) blur(10px)` + `screen`,靠提对比度当阈值;扫描线 3px `repeating-linear-gradient`、幅度 5%(对应 `0.90+0.10*cos`);色差用两份通道副本 `translate ±1.5px`;glitch 54 条切片按 `hash(slice,frame)` 挑 22%(≤67px);白闪只抬亮部。**损失**:单次高斯 ≠ 5 级 mip bloom,1px 线光晕半径不对;平移色差无径向权重;无 `TEXT_FS` 双环采样,暗底字偏薄。
65
+
66
+ ```tsx
67
+ import { AbsoluteFill, Easing, interpolate, useCurrentFrame } from 'remotion';
68
+ import { useEffect, useRef } from 'react';
69
+
70
+ const CX = 960, CY = 540, R = 401; // 318 * SS(1.26)
71
+
72
+ export const HudScene: React.FC = () => {
73
+ const frame = useCurrentFrame();
74
+ const ref = useRef<HTMLCanvasElement>(null);
75
+ useEffect(() => {
76
+ const ctx = ref.current!.getContext('2d')!;
77
+ // 0.40–0.90s 外环;192 帧起括号 3 帧收 130px
78
+ const d = interpolate(frame, [12, 27], [0, 1],
79
+ { extrapolateRight: 'clamp', easing: Easing.out(Easing.exp) });
80
+ const k = interpolate(frame, [192, 195], [1.4, 1],
81
+ { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });
82
+ ctx.lineWidth = 1.25; ctx.globalAlpha = 0.9; ctx.strokeStyle = '#00E5FF';
83
+ ctx.beginPath(); ctx.arc(CX + 0.5, CY + 0.5, R, -Math.PI / 2, -Math.PI / 2 + d * 6.2832);
84
+ ctx.stroke();
85
+ ctx.strokeStyle = frame >= 192 ? '#FF2A8A' : '#00E5FF';
86
+ ctx.strokeRect(CX - 130 * k, CY - 130 * k, 260 * k, 260 * k);
87
+ }, [frame]);
88
+ return (
89
+ <AbsoluteFill style={{ background: '#020A0D' }}>
90
+ <canvas ref={ref} width={1920} height={1080} />
91
+ <AbsoluteFill style={{ background:
92
+ 'repeating-linear-gradient(to bottom, rgba(0,0,0,.10) 0 2px, transparent 2px 3px)' }} />
93
+ </AbsoluteFill>
94
+ );
95
+ };
96
+ ```
97
+
98
+ ## 6. 镜头结构模板
99
+
100
+ | 时间 | 意图 | 画面 |
101
+ | --- | --- | --- |
102
+ | 0.0–1.4 | 开机自检 | 十字 → ping 落环 → 侧栏 0.9/1.15 左右开 → 六边形波前 |
103
+ | 1.4–2.4 | 地球出现 | 线框球 1.35 起长到 1,扫描面上下走,日志 4 行依次打 |
104
+ | 2.4–4.4 | 数据活起来 | 雷达扫描、6 组数字 7.5 帧一滚、sparkline 2.9 |
105
+ | 4.4–6.4 | 捕获信号 | 状态框转 `SIGNAL DETECTED` 闪烁、地球转向、候选 `NO MATCH`、括号飞入 |
106
+ | 6.4–7.1 | 锁定冲击 | 白闪、橙调 re-ink 0.45s 扫过、标题砸落、dive 推近、侧栏失焦 |
107
+ | 7.1–10 | 展开与收尾 | 暗带打开、坐标打字、`alert_pulses` 脉冲、outro 淡出、9.767 压线收点 |
108
+
109
+ ## 7. 坑
110
+
111
+ 1. 文字层必须在 bloom 之上单独合成,和几何一起过 blur 就会糊成两行字。
112
+ 2. 1px 线整数坐标会闪:`.5` 偏移 + `lineWidth ≥ 1.25`;扫描线 3px 周期要整除 1080。
113
+ 3. `knock()`(`destination-out` 挖洞)是文字可读性的关键,漏掉就有线穿字。
114
+ 4. 别把 `drawHUD` 返回的 `scopeR` 写死:dive 时它要涨 62%,锁定环靠这个才"飞过镜头"。
115
+
116
+ ## 8. 版权与素材
117
+
118
+ 上游 mg-styles-15 为 MIT。`KESTREL-9`、`隼眼-9` 与城市代号都是虚构;`land-50m.json`(Natural Earth 衍生)随仓库使用。刻线、括号、锁定环是通用 FUI 语汇,可自由重画。
@@ -0,0 +1,34 @@
1
+ {
2
+ "slug": "01-flat-vector",
3
+ "name": "扁平矢量·一点成城",
4
+ "oneLiner": "一点落地弹成太阳,长出一座城,再收进窗里变回一个点。",
5
+ "signature": [
6
+ "全片零渐变零阴影零描边,只有 #2B2BFF 底上五档纯色块",
7
+ "每次落地竖向压到 60%、横向撑到 136%,2–6 帧内回弹",
8
+ "入场一律「预备 4 帧—冲出 4 帧—回弹 8 帧」,过冲 1.56",
9
+ "9 栋楼以底边为锚错峰 3 帧升起,顶盖再延 2 帧",
10
+ "推镜 30 倍穿进 64×36 px 的窗,窗内是同一套矢量语言"
11
+ ],
12
+ "palette": {
13
+ "page": "#2B2BFF",
14
+ "surface": "#3B3BFF",
15
+ "field": "#4D4DFF",
16
+ "text": "#FFF6E9",
17
+ "muted": "#A3A3FF",
18
+ "accent": "#FF5A4E",
19
+ "border": "#1F1FCC"
20
+ },
21
+ "colors": ["#2B2BFF", "#FF5A4E", "#FFF6E9", "#FFC62B", "#151433", "#2EE6A8", "#A3A3FF"],
22
+ "fonts": {
23
+ "display": "\"Fredoka\",\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": {
28
+ "bpm": 120,
29
+ "fps": 30,
30
+ "duration": 10,
31
+ "aspect": "16:9",
32
+ "cutFrames": 15
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "slug": "02-line-art",
3
+ "name": "一笔画·金线",
4
+ "oneLiner": "一根金线从不抬笔,7.5 秒画完一座城,收成金币字标。",
5
+ "signature": [
6
+ "全片单条连续路径,23 段图形首尾相接,笔尖从不抬起",
7
+ "线宽恒为 3px(成片 4.5px),除以相机缩放保持屏幕恒定",
8
+ "新墨 #FFF6DC 发烫,旧线 1.5s 内退到 40% 并偏成 #967D50",
9
+ "三处 0.15s 停顿用重复 marker 实现,笔停但路径不断",
10
+ "7.5s 圆环从中心 swell 成金币,0.367s 由环带填满"
11
+ ],
12
+ "palette": {
13
+ "page": "#0B1320",
14
+ "surface": "#101A28",
15
+ "field": "#16233A",
16
+ "text": "#E9D7A5",
17
+ "muted": "#967D50",
18
+ "accent": "#FFF6DC",
19
+ "border": "#24344C"
20
+ },
21
+ "colors": ["#0B1320", "#E9D7A5", "#FFF6DC", "#967D50", "#F2E0AE", "#CCAB6C", "#6E5428"],
22
+ "fonts": {
23
+ "display": "\"Cormorant Garamond\",\"Noto Serif SC\",serif",
24
+ "text": "\"Noto Serif SC\",serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": {
28
+ "bpm": 72,
29
+ "fps": 30,
30
+ "duration": 10,
31
+ "aspect": "16:9",
32
+ "cutFrames": 13
33
+ }
34
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "slug": "03-isometric",
3
+ "name": "等轴 2.5D·浮岛城市",
4
+ "oneLiner": "12×12 瓦片波浪落下,长成一座浮岛城市,最后拉远露字。",
5
+ "signature": [
6
+ "正交相机沿 (1,1,1),棱线 2:1 斜率,全片零透视",
7
+ "瓦片顶面是奶白陶土 #F1EEFA,侧面才上色,空瓦片会被冲击波翻面",
8
+ "所有生长都是「底座先落—墙长—屋顶晚 0.375s」,墙有 9% 过冲",
9
+ "落下统一 0.3s 重力加速,触地 30% 压扁 + 40rad/s 抖两下",
10
+ "6.0s 冲击波以 15 单位/s 从 CORE 扩散,窗色延迟点亮",
11
+ "7.75–8.75s 拉远露出浮岛,标题平躺在等轴地面上"
12
+ ],
13
+ "palette": {
14
+ "page": "#EEEAFC",
15
+ "surface": "#F4F1FD",
16
+ "field": "#E6E1F7",
17
+ "text": "#2C2960",
18
+ "muted": "#8781D0",
19
+ "accent": "#62F0F2",
20
+ "border": "#C9BFF0"
21
+ },
22
+ "colors": ["#EEEAFC", "#F1EEFA", "#94DFBD", "#FFF0C8", "#62F0F2", "#2C2960", "#FFC4AC", "#8781D0"],
23
+ "fonts": {
24
+ "display": "\"Unbounded\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
25
+ "text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
26
+ "mono": "\"JetBrains Mono\",monospace"
27
+ },
28
+ "rhythm": {
29
+ "bpm": 120,
30
+ "fps": 30,
31
+ "duration": 10,
32
+ "aspect": "16:9",
33
+ "cutFrames": 15
34
+ }
35
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "05-cel-boil",
3
+ "name": "逐帧手绘·线条沸腾",
4
+ "oneLiner": "一拍二的纸上手绘:每换一张画墨线重抖一次,填色故意错位 5px,唯一饱和色是番茄红。",
5
+ "signature": [
6
+ "线条每换一张画就重抖一次(simplex 噪声平移中线,±2.4px)",
7
+ "一拍二:每张画停 2 帧,开场只循环 4 张",
8
+ "填色层整体偏移 (-5, +4)px,墨线压在填色上",
9
+ "可变宽墨线:撇从 1.12 倍收到 0.5 倍,钩在末端收细",
10
+ "纸是两层:放大 1.045 的纸底 + multiply 的纸齿,位置随画号换"
11
+ ],
12
+ "palette": {
13
+ "page": "#f4e9d0",
14
+ "surface": "#fff6e2",
15
+ "field": "#ffc425",
16
+ "text": "#1c1613",
17
+ "muted": "#d9573f",
18
+ "accent": "#e5402b",
19
+ "border": "#e0cba6"
20
+ },
21
+ "colors": ["#f4e9d0", "#fff6e2", "#1c1613", "#e5402b", "#ffc425", "#d9573f"],
22
+ "fonts": {
23
+ "display": "\"Caveat\",\"LXGW Marker Gothic\",\"Long Cang\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"LXGW Marker Gothic\",\"Long Cang\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 120, "fps": 24, "duration": 10, "aspect": "16:9", "cutFrames": 2 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "06-collage",
3
+ "name": "拼贴剪贴·撕纸印刷",
4
+ "oneLiner": "牛皮纸上的撕边剪贴与半调印刷,所有动作量化到 12fps,每个元素自己会抖。",
5
+ "signature": [
6
+ "运动量化到 12fps(30/12=2.5 帧一步,实际 2 帧、3 帧交替)",
7
+ "每个元素独立抖动 ±2px / ±0.4°,静止元素降到 6fps、±1.1px",
8
+ "白描边是「剪」出来的:沿半径 3.5px 的圆画 28 遍再 source-in",
9
+ "贴上去有 lift:先放大 1.38,落点过冲 0.972 再回弹 1.01",
10
+ "影子随 lift 变:blur 5→39px、offset 3→27px、alpha 0.36→0.44"
11
+ ],
12
+ "palette": {
13
+ "page": "#F2ECDF",
14
+ "surface": "#EFE8DA",
15
+ "field": "#E3CFAE",
16
+ "text": "#16130F",
17
+ "muted": "#7A5516",
18
+ "accent": "#D2261C",
19
+ "border": "#C4A077"
20
+ },
21
+ "colors": ["#F2ECDF", "#EFE8DA", "#E3CFAE", "#16130F", "#7A5516", "#D2261C", "#C4A077"],
22
+ "fonts": {
23
+ "display": "\"Anton\",\"Noto Serif SC\",sans-serif",
24
+ "text": "\"Noto Serif SC\",\"Noto Sans SC\",serif",
25
+ "mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 90, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 3 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "07-liquid",
3
+ "name": "液态流动·棚拍稠液",
4
+ "oneLiner": "暗紫棚里的稠液体:橙粉紫按厚度混色,落地压扁回弹,最后把液滴拉成字形。",
5
+ "signature": [
6
+ "只有一种材质:稠液体,球缘 1–2px 高光唇线",
7
+ "内部按厚度三段插值 #FF5C0F → #FF1A70 → #8F1FFF",
8
+ "落地先压扁再回弹(spring),接触点留 splat 与 5–7 条 tendril",
9
+ "4.0s 三层洪流面各错 2 帧压上来,4.42s 沉进液体只剩涡流与气泡",
10
+ "6.4s 液滴拉成 4 个字形,7.2s glint 扫过,8.4s 一滴落下收尾"
11
+ ],
12
+ "palette": {
13
+ "page": "#371E3E",
14
+ "surface": "#4C2955",
15
+ "field": "#7C4684",
16
+ "text": "#FFE8F0",
17
+ "muted": "#FFC8E0",
18
+ "accent": "#FF5C0F",
19
+ "border": "#8F1FFF"
20
+ },
21
+ "colors": ["#FF5C0F", "#FF1A70", "#8F1FFF", "#FFE8F0", "#FFC8E0", "#371E3E", "#7C4684"],
22
+ "fonts": {
23
+ "display": "\"Fraunces\",\"Resource Han Rounded\",\"Noto Serif SC\",serif",
24
+ "text": "\"Noto Serif SC\",\"Inter\",serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 2 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "08-morph",
3
+ "name": "一形万象·形变",
4
+ "oneLiner": "始终只有一个实心剪影:轮廓等点数重采样后逐点插值,必经圆形中介变出八个图标。",
5
+ "signature": [
6
+ "单形:永远一个实心剪影,无描边、无渐变、无阴影",
7
+ "变形靠等点数重采样(body 240 / 洞 72)+ 逐点 lerp,不是交叉淡化",
8
+ "中介形必过圆或胶囊(P.Ca/Cb)",
9
+ "每次落地压扁回弹:A·sin(2πτ/0.28)·e^(-7.5τ),从落地前 2 帧起算",
10
+ "终场落在丝网印质感:纸纹 + 每帧偏移的 512² 颗粒 + 暗角"
11
+ ],
12
+ "palette": {
13
+ "page": "#F4EEE3",
14
+ "surface": "#E7E1D7",
15
+ "field": "#DED8CF",
16
+ "text": "#16151B",
17
+ "muted": "#908C89",
18
+ "accent": "#FF4F2B",
19
+ "border": "#D0CBC3"
20
+ },
21
+ "colors": ["#F4EEE3", "#16151B", "#FFB627", "#FF4F2B", "#2438E8", "#D93A1C"],
22
+ "fonts": {
23
+ "display": "\"Outfit\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 25 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "09-bauhaus",
3
+ "name": "几何构成·包豪斯",
4
+ "oneLiner": "红黄蓝三原色 + 基础几何 + 严格 120px 网格,按拍切换的构成主义排版。",
5
+ "signature": [
6
+ "中央 8x8 网格(模数 120px)",
7
+ "只有纸/红/黄/蓝/墨五色",
8
+ "直角几何:正方形、四分之一圆、半圆、三角,无圆角矩形",
9
+ "每 15 帧一次状态切换,切换之间完全静止",
10
+ "四色套印偏移 2-4px + 纸纹"
11
+ ],
12
+ "palette": {
13
+ "page": "#F1E9DA",
14
+ "surface": "#EDE4D3",
15
+ "field": "#E8DECB",
16
+ "text": "#111111",
17
+ "muted": "#8C8172",
18
+ "accent": "#E03C31",
19
+ "border": "#D8CBB4"
20
+ },
21
+ "colors": ["#F1E9DA", "#E03C31", "#F2B705", "#1E4FA3", "#111111"],
22
+ "fonts": {
23
+ "display": "\"Anton\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"IBM Plex Mono\",\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 15 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "10-synthwave",
3
+ "name": "复古霓虹·合成器浪潮",
4
+ "oneLiner": "深紫夜空下的透视霓虹网格与分层日落,镀铬标题砸入、手写霓虹点亮、全程 VHS 做旧。",
5
+ "signature": [
6
+ "霓虹透视网格从地平线冲向镜头,靠 z 偏移取模滚动",
7
+ "日落是同一个圆切成 5–7 条横带,洋红→橙→黄,不是渐变球",
8
+ "双辉光:紧 4px 高亮 + 宽 30px 低透明",
9
+ "VHS 整链:RGB split 1–2px → 2px 扫描线 → 随机 glitch 抽帧 → 4:3 圆角遮罩 → CRT 关机",
10
+ "镀铬标题多段金属渐变 + bevel 高光 + 4 角星芒扫过"
11
+ ],
12
+ "palette": {
13
+ "page": "#120A2A",
14
+ "surface": "#2A1055",
15
+ "field": "#3A1A4E",
16
+ "text": "#F4F4FF",
17
+ "muted": "#8FF9FF",
18
+ "accent": "#FF2FB8",
19
+ "border": "#E6C465"
20
+ },
21
+ "colors": ["#120A2A", "#2A1055", "#FF2FB8", "#8FF9FF", "#EF933D", "#E6C465", "#F4F4FF"],
22
+ "fonts": {
23
+ "display": "\"Michroma\",\"Douyin Sans\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"Douyin Sans\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 100, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 18 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "12-aurora-glass",
3
+ "name": "弥散渐变·玻璃拟态",
4
+ "oneLiner": "近黑底上 7 块色斑缓慢漂移,玻璃卡带 1px 内描边与近边折射,一切都慢。",
5
+ "signature": [
6
+ "底色 #040312,亮部全靠加色色斑,没有提亮的灰",
7
+ "7 块无边色斑,24–40s 闭环漂移,强度 0.32–1.15",
8
+ "玻璃 = 30px backdrop 模糊 + 7% 白 + 1px 白内描边 + 13px 近边折射",
9
+ "80BPM,最短动作 0.75s,没有 120ms 以下的跳变",
10
+ "文字只做 opacity + 8px 上浮,从不缩放旋转"
11
+ ],
12
+ "palette": {
13
+ "page": "#040312",
14
+ "surface": "#171043",
15
+ "field": "#0B0726",
16
+ "text": "#FFFFFF",
17
+ "muted": "#8C8CFF",
18
+ "accent": "#7050FF",
19
+ "border": "#FFFFFF"
20
+ },
21
+ "colors": ["#040312", "#7050FF", "#2F46F2", "#34CFF0", "#B653F0", "#8C8CFF", "#3320A8"],
22
+ "fonts": {
23
+ "display": "\"Sora\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"Inter\",\"HarmonyOS Sans SC\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 80, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 22 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "18-hanazi",
3
+ "name": "综艺花字",
4
+ "oneLiner": "竖屏三层描边花字:白边 + 彩边 + 硬挤出,弹簧入场,字字都歪。",
5
+ "signature": [
6
+ "每字三层描边:白 7.6% / 彩 7.0% / 挤出 9.3%(相对 172px 字高)",
7
+ "逐字弹簧入场,第 5 帧峰值 1.15,8 帧到位,错峰 2 帧",
8
+ "所有花字带 -7°~+6° 歪斜与 ±16px 基线抖动",
9
+ "1080×1920 一行 5 字,字距 = 字高,不用 letter-spacing",
10
+ "装饰只有手绘几何:四角星/爆炸框/放射线/汗滴,无 emoji"
11
+ ],
12
+ "palette": {
13
+ "page": "#1B1B22",
14
+ "surface": "#1E2A78",
15
+ "field": "#0E1440",
16
+ "text": "#FFFFFF",
17
+ "muted": "#A9C4E0",
18
+ "accent": "#FFE14D",
19
+ "border": "#FFFFFF"
20
+ },
21
+ "colors": ["#1E2A78", "#FFE14D", "#FF3D7F", "#1A1030", "#2CCBF2", "#FFFFFF", "#FF9A1F"],
22
+ "fonts": {
23
+ "display": "\"Luckiest Guy\",\"Resource Han Rounded\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"Douyin Sans\",\"LXGW Marker Gothic\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "9:16", "cutFrames": 15 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "19-paperclip",
3
+ "name": "粗描边贴纸科普",
4
+ "oneLiner": "一块 2400×5900 的手机屏世界,镜头一路下飞,白描边贴纸配精确图表。",
5
+ "signature": [
6
+ "世界是一块 2400×5900 的手机屏,#E9EEF2 底 + 48px 网点",
7
+ "没有切镜:16 个相机关键帧,z 从 1.06 压到 0.2",
8
+ "所有素材白描边 10px(长边的 2.3%),paint-order: stroke",
9
+ "章节头 = 20×20 橙方块 + 中文 30px + Inter 大写 .18em",
10
+ "只有 #25313D 墨 + #FF5A36 一个强调色,没有渐变填充"
11
+ ],
12
+ "palette": {
13
+ "page": "#1D2731",
14
+ "surface": "#E9EEF2",
15
+ "field": "#F7F9FB",
16
+ "text": "#25313D",
17
+ "muted": "#8C9AA8",
18
+ "accent": "#FF5A36",
19
+ "border": "#CDD6DE"
20
+ },
21
+ "colors": ["#25313D", "#FF5A36", "#E9EEF2", "#F7F9FB", "#8C9AA8", "#C5CFD8", "#1D2731"],
22
+ "fonts": {
23
+ "display": "\"Inter\",\"Noto Sans SC\",sans-serif",
24
+ "text": "\"Inter\",\"Noto Sans SC\",sans-serif",
25
+ "mono": "\"JetBrains Mono\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 120, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 15 }
28
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "slug": "20-pixel",
3
+ "name": "像素 8-bit·横版卷轴",
4
+ "oneLiner": "每个像素是 6×6 输出方块,QUEST-32 色板配 4×4 Bayer 抖动的横版卷轴,外面套一层 CRT。",
5
+ "signature": [
6
+ "1 源像素 = 6×6 输出方块,全程无抗锯齿、无亚像素位移",
7
+ "同屏 ≤32 色,渐变只走 4×4 Bayer 抖动(天空 5 级色阶)",
8
+ "动作阶梯化:跑步 10fps、金币 15fps、星星 7.5fps",
9
+ "横向卷轴:主角钉在屏幕 x=96,四层视差 0.125/0.3/0.55/1.4",
10
+ "CRT 包住一切:桶形 k=0.03 + 按源像素行扫描线 + 8 向辉光 + 四角暗角"
11
+ ],
12
+ "palette": {
13
+ "page": "#1b1a33",
14
+ "surface": "#0d0b1a",
15
+ "field": "#2a2f5a",
16
+ "text": "#ffffff",
17
+ "muted": "#8cc8f5",
18
+ "accent": "#ffd166",
19
+ "border": "#5b9bea"
20
+ },
21
+ "colors": ["#0d0b1a", "#1b1a33", "#2a2f5a", "#5b9bea", "#ffd166", "#ffffff", "#d23c3c"],
22
+ "fonts": {
23
+ "display": "\"Press Start 2P\",\"Fusion Pixel 12\",monospace",
24
+ "text": "\"Fusion Pixel 12\",monospace",
25
+ "mono": "\"Press Start 2P\",\"Fusion Pixel 12\",monospace"
26
+ },
27
+ "rhythm": { "bpm": 150, "fps": 30, "duration": 10, "aspect": "16:9", "cutFrames": 3 }
28
+ }