one thing i really disliked about tailwind when i tried it is the fact that it doesn't promote consistency and semantics like at all.
like yeah, you have a bunch of colors and pre-defined border radiuses, but just because there are **so many of them** i really don't see any benefit to just writing `*px` directly.
proper design systems don't have 30 gap sizes and 50 different border roundings. of course there's nothing *stopping you* from putting an arbitrary value, but the pre-defined one should really be opinionated, otherwise there's not much point in the design system.
your "expertly-crafted default color palette" is good and all, but i don't really want to remember that my "brand" color is indigo-420 (or was it 666?) and that normally my paddings are 4 but i crank them to 6 if i really want to.
and making a component for *everything* just so i can reuse stuff quickly gets too tiring, and a very delicate game of balancing the component being opinionated vs the component allowing for any kind of usage you want it to.
also a weird thing with tailwind is that half their utilities have naming like *-xs/sm/... and another half is just straight up numbers.