Это делается не тенью.
1. Внутрь дива кладется еще один див с position: absolute и прижимается к низу блока
2. Внутрь дива кладем либо картинку либо градиентную заливку от белого в прозрачный.
3. Profit!
1. Простите но тут немного BEM головного мозга. Используйте препроцессоры, и не будет никакой проблемы через запятую расставить классы и состояния, не будет проблемы пересобрать в случае изменения логики.
2. Ваш плагин слишком заточен под существующие элементы. Например вас ждет облом, если вы вставите пару кнопочек позже (например в сгенерированном попапе).
1. Кубики как раз не инлайн блоки. В этой ситуации при уничтожении одного из них, сдвинется вся конструкция. Делайте на position: absolute.
В крайнем случае просто ставьте opacity: 0 или visibility: hidden и условие для шарика что блоки с таким то классом игнорировать.
2. Position: absolute решает
3. Да, чем меньше вы вычисляете на лету, тем быстрее работает. Один раз меняем переменную при смене нажатии на кнопки вправо/влево
4. Тут на ваше усмотрение. С вектором будет проще (имхо).
https://jsfiddle.net/oysxff5g/
Вот такой код запретит прямой переход по ссылке, но при этом оставит доступным открытие в новой вкладке или новом окне по shift+click, cmd+click и т.п.
Ву Edge этого пока никак не сделать, так как он вроде не поддерживает внешние плагины.
Такую штуку можно провернуть в Chrome/FF, загуглите нужный плагин, установите и теперь вы сможете прописывать user-скрипты.