javascript.ru/String/split
"Пример: Вложенные скобки"
там каким-то чудом скобки из разделителя попадают в результат.
А по сути кода предлагаю: регулярные выражения через .replace()
function extract(s, selector, props) {
//здесь props можно split(';').map( stringtrim )
//и другой анализ и сборка объекта
}
csstext.replace( /([.#]?[\w-]+)\{([\s\S]*)\}/m, extract );
Ну и усложнить регулярку для определения селекторов через запятую, отсечь медиа-запросы.
Не советую делать .replace(/\s/g, ""), так как можно удалить нужные пробелы, например, в определении свойств border.