If you have many helper functions that called from update directly, those can live in Main. If you have many helpers that are only called from other helpers, try to find the small interface update needs, expose that, and hide the rest.
I would want to move all of the view code to a new module, exposing only the view function itself. In order to do that, you'll have to move the definition of Model and Msg to a module imported by both Main and View. You can call this module Common. I think the initial model belongs next to its definition, in Common. I wish there was a way to keep Msg near update but View needs it too.If you have many helper functions that called from update directly, those can live in Main. If you have many helpers that are only called from other helpers, try to find the small interface update needs, expose that, and hide the rest.
First, (and this is kinda unrelated to organization) but I'd recommend using elm-format and having type signatures.
Side note, you can combine all your animation subscriptions into one message.
If you extract another module, it should import Common and be imported by Main, just like View. Because of this 1-n-1 structure, I think of this as a diamond.