Frankenstyle is a no-build, value-driven, fully responsive, utility-first CSS framework.
Frankenstyle is a no-build, value-driven, utility-first CSS framework.
It takes inspiration from Tailwind CSS but simplifies setup by removing the need for a build pipeline. No PostCSS, no config files, no vite.config.js. Just drop in the CSS via CDN and start styling.
At its core, Frankenstyle provides:
:hover, :active, etc.)Frankenstyle is built around a few guiding principles:
Everything is pre-compiled and can be consumed via CDN. No bundler, no file watchers, no CLI, no config.
Instead of bundling hundreds of pre-defined classes (m-2, m-4, p-6), Frankenstyle uses generic utility names (m, p, bg) paired with CSS custom properties that you define.
| Usage | Purpose |
|---|---|
class="p" | Apply padding |
style="--p: 4" | Define its value |
You don’t need to memorize odd variable names. Just drop special characters from the class:
| Class Name | Variable Name |
|---|---|
sm:m | --sm-m |
dark:sm:bg:hover | --dark-sm-bg-hover |
Utility classes and their values should always go together. This prevents accidental styling and enforces intentional design.
Hover, focus, and other states aren’t shipped in a large CSS bundle. Frankenstyle generates state CSS at runtime, when and where it’s needed.
The syntax feels like Tailwind (sm:, md:, dark:), but values are fully customizable and declarative.
Frankenstyle provides the utility class, and you provide the value:
var(--spacing) to keep values consistent.:hover, :active)Frankenstyle generates states dynamically at runtime. Enable this by adding the data-fs attribute:
| Class Name | Purpose |
|---|---|
bg:hover | Hover background |
dark:bg:hover | Dark mode hover background |
Works with any color utilities (color, border, fill, etc.).
Frankenstyle follows Tailwind’s responsive prefixes:
| Prefix | Breakpoint |
|---|---|
sm: | Small |
md: | Medium |
lg: | Large |
xl: | Extra large |
2xl: | 2x Extra large |
Opacity is controlled with the /o suffix and requires two variables:
This ensures explicit opacity control and avoids inheritance issues.
Frankenstyle is intentionally simple: a single stylesheet, optional runtime script, and a straightforward utility system designed for clarity and control.