В первую очередь из-за таблицы.
Проблемы по уменьшению разрешения:
1. Таблица.
2. Форма ответа.
3. Рекламное видео.
4. Рекламный баннер.
5. Оглавление.
6. Лого 'Смс финанс'.
Да. Лучше, конечно, чтобы анимация происходила средствами css (из соображений производительности). Но без js здесь не обойтись — для css имеем только событие hover, если увести мышь с элемента — это отмена события hover, а не новое событие, к сожалению. Поэтому вариант такой — средствами js рассчитывать размеры и присваивать их элементу (через .css, а не .animate), а анимацией будет заниматься css за счет transition. В таком случае, во первых, есть два события, во-вторых, так как анимацию можно проводить в несколько этапов, для каждого из них можно навешивать на объект определенный класс с собственными значениями transition, управляя не только продолжительностью, но и плавностью анимации.
Делегирование событий. Обработчик вешается при первоначальной загрузке сайта, на тот момент элемент отсутствует в DOM дереве. Смысл делегирования — навесить обработчик на родительский объект, который существует при загрузке страницы (не обязательно 'document'), при вызове обработчик будет искать внутри родительского элемента соответствующий селектор согласно текущему DOM дереву.