Речь идёт о создании critical.css, который будет содержать все основные стили.
Через файловую структуру:
1. Нужно распарсить файл со стилями в "дерево" зависимых объектов (сохраняя топологию вложенности/зависимостей стилей внутри каждой из веток отдельно взятого стиля)
2. Затем выполнить объединение полученных структур ("деревьев")
3. На основе полученного "дерева" (после операции объединения) - создать новый файл.
Через рендеринг:
Кравлером в автоматическом режиме через инъекцию JS, который будет собирать стили для всех объектов DOM для каждой страницы и затем делать операцию объединения ("merge").
Возможные проблемы, которые мне видятся:
1. одинаковые идентификаторы с разными стилями для объектов, находящихся на разных страницах.
2. оптимизация стилей при создании общего стиля с учётом media-запросов и т.д.
Задачка - не простая...