я делал на js
для страницы использовал "прелоадер"
body {opacity 0;}
при window.onload показывал боди
У меня не было шрифтов в em. Я перебирал все элементы, брал текущий шрифт и прибавлял значение из переменной. При изменении шрифта пользователем эта переменная увеличивается или уменьшается. Для хранения использовал Local Storage.
Цветовая схема менялась через классы.
finevision.ru
получилась копия этого плагина