You did a fantastic job of mixing here, aside from a number of minor details that some career audio engineers wouldn't have even made. May I suggest though, your mix has a set of errors that commonly comes from mixing in only one or two sessions without "fatigue recovery time." It's important to sleep on a mix a few times(that is to say, leave it for a day or so and come back) as it will help give you a fresh mindset, the brain automatically makes tweaks in how it receives sound and does so very quickly, in the effort of "normalizing" input, this will automatically make errors less obvious and can be detrimental to the final product of a track if you don't manage how much time you spend mixing in a single run. I've noticed you mentioned "listening to the same song all day," try taking a break from the track after you do your premix and such, and come back with a mind of strictly delivering your composition in its best possible form. Well done, keep it up!