The project lived at the seam between design and engineering, and getting that seam right was most of the job. I kept the expressive motion in Rive and left timing, layout, and navigation to native code — each animation built complete and self-contained, with a clean way for the app to trigger it and know when it finished. That boundary is what let a fairly ambitious motion system hand off smoothly and survive real devices.