No meu trabalho estamos usando tailwind... sobre a quantidade de classes, estamos usando a lib tw-merge, passando um array de strings e segmentando grupos de classes em cada string +- assim:
merge([
'p-8 m-8',
'sm:p-10 sm:p-10',
'lg:etc...'
])
E você vai segmentando de acordo com sua necessidade como dark:
ou hover:
etc ...
O tw-merge é sensacional! Mas quer melhorar?
Existe a lib tailwind-variants
que transforma a forma como trabalhamos com Tailwind. E o melhor, ela usa o tw-merge por baixo dos panos. :)
É possível criar temas completos de componentes, que suporta slots (elementos), variantes, herança e por aí vai.