Every rule you add on the left becomes a class and a line of CSS below.
NibCSS turns nib="p=16px; hover:bgc=#4F52D9" into a real, deterministic stylesheet — in HTML, React, Vue, Angular, Svelte and every server framework.
<button nib="p=12px 20px; bdrd=12px; bgc=#4F52D9">.nib-10zgc5x { padding: 12px 20px }
.nib-1ysywln { border-radius: 12px }
.nib-1lr8rj1 { background-color: #4F52D9 }Every rule you add on the left becomes a class and a line of CSS below.
/* add a rule → */
The same engine runs in your bundler, in a CLI and in the browser — so the output is identical everywhere.
Split the attribute on ; into rules.
p=16px · hover:bgc=#4F52D9Expand recipes, fill $tokens, map shorthands.
bgc → background-colorName every rule deterministically.
p=16px → .nib-jbmcplWrite each distinct rule exactly once.
.nib-jbmcpl { padding: 16px }At build time — or live in the browser.
class="nib-jbmcpl …"The build plugin extracts static attributes into a real .css file — or rewrites them straight into class names.
p=16px is .nib-jbmcpl in every file, build and machine. SSR hydrates cleanly and caches stay warm.
clamp(), gradients, var(), container units — if CSS accepts it, so does nib. No scale to memorise.
md:dark:hover:bgc=#111 — modifiers chain in any order and compile to real selectors and media queries.
Name colours and spacing once, compose buttons and cards from recipes, override per element.
“Unknown utility trf — did you mean tf?” with the file, the line and values that would have worked.
The same attribute works in plain HTML, React, Next.js, Vue, Nuxt, Angular, Svelte, Astro — and in Rails, Django or Laravel templates through the CLI. Learn it once, take it anywhere.
<div nib="p=16px" /><p v-nib="'mt=8px'"><b [nib]="'cl=red'"><a use:nib={'…'}>withNib(config)<script src="…@1">293 shorthands — and any real CSS property as it is.
This is the real NibCSS engine running in your browser. Break it on purpose — the diagnostics tell you exactly what went wrong.
.nib-12c2hzo { padding: 28px }
.nib-j8kuhi { border-radius: 24px }
.nib-9gc5ax { background-color: rgba(255,255,255,.08) }
.nib-15eqg9u { border: 1px solid rgba(255,255,255,.18) }
.nib-bbb42x { backdrop-filter: blur(12px) }
.nib-11tlxeg { color: #fff }
.nib-12ce1g9 { box-shadow: 0 30px 60px rgba(0,0,0,.35) }Add one script tag or one plugin, and every element in your app can be styled right where it lives.