Apparently the other reply got auto-flagged because it was detected as genai. Let me paraphrase that comment (easier than reading that entire MD document, which was AI-written):
The main annoyances:
- oversized buttons
- 100+ root custom properties in devtools
- fighting against too many breakpoints (unpredictable font/container sizing)
---
I also changed/added some features:
- much smaller core: only 4.1 KB Brotli
- CSS cascade layers so app CSS can override more easily
- a surface color system (a la Open Props)
- OKLCH colors with auto derived hover/focus states and light-dark() theming
- centered layout with real gutters, plus content bleed outside gutters
- .no-nimble opt-out class (instead of .pico opt-in)
- ability to configure universal control-density (buttons, inputs, selects)
- fighting against breakpoint-heavy font and container sizing
- container "padding" that could disappear at exact breakpoints
- having to fight framework styles with specificity
Nimble uses more compact controls, ~20 semantic variables, simpler grid-based centering with real gutters, and cascade layers so normal app CSS wins.
---
I also added some features/changed:
- much smaller core: Nimble is only 4.1 KB Brotli
- cascade layers, so normal app CSS can override the library without specificity fights
- a surface hierarchy for page/card/input/overlay backgrounds (a la Open Props)
- OKLCH colors with derived hover/focus states and light-dark() theming
- centered layout with real gutters, plus bleed-edge, bleed-wide, and bleed-full
- .no-nimble to opt third-party component subtrees out of Nimble styling
- shared control-density customization for buttons, inputs, selects, etc.
- .nc-join for visually joined controls without coupling that styling to ARIA role="group" (this kept confusing coding agents; technically they should not be coupled)