Style at the speed of thought.
Compose UIs with j-* utility classes. PostCSS scans your components and emits only what you use — stack breakpoints, themes, and states in a single class name.
<div className="
j-flex j-flex-col j-gap-16
j-p-28 j-rounded-2xl j-border
j-bg-gray-900
">
<div className="j-flex j-items-center j-gap-12">
<div className="j-w-44 j-h-44 j-rounded-full
j-bg-pink-500" />
<div>
<p className="j-text-white j-font-semibold">
Sarah Chen
</p>
<p className="j-text-gray-400 j-text-sm">
UI Engineer
</p>
</div>
<span className="j-ml-auto j-px-10 j-py-4
j-rounded-full j-text-xs j-font-semibold
j-bg-pink-500/20 j-text-pink-300">
Pro
</span>
</div>
<p className="j-text-gray-300 j-leading-relaxed">
JamilCSS changed how I ship UI.
</p>
<button className="j-w-full j-py-10
j-rounded-xl j-text-white j-font-semibold
hover:j-opacity-80 j-transition">
Follow
</button>
</div>Sarah Chen
UI Engineer
JamilCSS changed how I ship UI.
Why JamilCSS
Everything you need.
Nothing you don't.
Built for developers who want full control without the complexity.
PostCSS compiler
Scans your JSX/TSX and compiles only the j-* classes you actually use. Zero dead CSS, zero overhead.
Any numeric value
j-p-16, j-w-200-rem, j-text-24-pt — any number works. No config file per value. Just write it.
Stacked variants
md:dark:hover:j-bg-pink-600 — combine breakpoint, theme, and state in one class name.
22 color families
Gray to stone, shades 50–950. Tailwind-compatible palette with opacity modifier: j-bg-pink-500/50.
Dark & light themes
Prefix j-dark: or j-light: to any utility. Toggle via .dark on <html> — no JS overhead.
Zero runtime
Pure CSS output — no JS bundle, no style injection. Works with React, Vue, Svelte, Astro, and any HTML.
Interactive Demo
See it work. Click anything.
Every component styled with real JamilCSS utility classes.
KB runtime
color families
utilities
Less to write. More to show.
Same result. Drastically less code.
.card {
display: flex;
flex-direction: column;
gap: 16px;
padding: 24px;
background-color: #1e293b;
border-radius: 16px;
border: 1px solid #334155;
}
.card:hover {
border-color: #475569;
box-shadow: 0 0 32px rgba(0,0,0,0.3);
}
.card__title {
font-size: 18px;
font-weight: 600;
color: #f8fafc;
}
.card__body {
font-size: 14px;
color: #94a3b8;
line-height: 1.6;
}<div className="
j-flex j-flex-col j-gap-16
j-p-24 j-rounded-2xl j-border
j-border-gray-700
hover:j-border-gray-600
hover:j-shadow-xl
j-transition
">
<h3 className="
j-text-lg j-font-semibold
j-text-white
">
Title
</h3>
<p className="
j-text-sm j-text-gray-400
j-leading-relaxed
">
Body text here.
</p>
</div>Theming
Dark & light theming.
One prefix away.
Add .dark to <html> — no JS, no runtime cost.
Alex Kim
Developer
Utility-first CSS that just makes sense.
Alex Kim
Developer
Utility-first CSS that just makes sense.
Community
Built in the open.
Open source, open to collaboration.
“Finally a utility framework that doesn't fight me. The stacked variants are a game changer.”
@dev_marco
Frontend Engineer
“Switched from Tailwind to JamilCSS for a project. Loved that any numeric value just works — j-w-237 and it's done.”
@celine_codes
UI Developer
“The PostCSS plugin is seamless. Zero config, zero runtime, zero complaints from my team.”
@raf_builds
Tech Lead
Color System
22 color families.
Shades 50–950 via j-bg-{color}-{shade}
Animations
Built-in motion.
Fade, spin, pulse, bounce, ping — drop in animated utilities instantly. No keyframe authoring.
j-animate-fadein-500j-animate-spin-2-sj-animate-pulse-1-sj-animate-bounce-800j-animate-ping-600j-animate-fadeout-400