August 10, 2026

Why I use pure CSS (and not Tailwind)

The reasoning behind my stack choice for portfolio projects: pure CSS with custom properties, no utility-framework overhead.

  • css
  • next.js
  • performance
  • stack

Why I use pure CSS (and not Tailwind)

When you build portfolio websites, you eventually end up in the framework debate: Tailwind or plain CSS? I chose the second, and this is why.

The trade-off

Tailwind is a great tool. The utility-first approach makes it fast to build consistent designs without leaving your CSS files. But for a portfolio website with a fixed house style, I ask myself: do I really need that overhead?

What I use instead

For Rhine Solution I use pure CSS with custom properties. Here's why:

  1. Faster load times — No utility-class explosion in the HTML, no framework bundle. Only the CSS I actually use.
  2. Simpler debugging — A class="grid grid-2" tells me nothing. A display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) is directly readable.
  3. Design tokens in CSS custom properties--c-bg: #F8F5F0; --c-accent: #C4A882; are just as powerful as Tailwind config, but directly inspectable in the browser.

When Tailwind is the right choice

Let me be clear: this is not an anti-Tailwind manifesto. For teams of 5+ developers, for apps with lots of dynamic UI, for design systems maintained by multiple designers — there, Tailwind (or another component framework) is the better choice.

For a solo project like this portfolio, pure CSS is faster, smaller, and more readable.

Conclusion

It's not about "Tailwind is bad" or "CSS is better". It's about choosing the right tool for the job. For portfolio sites, personal projects, and small teams, pure CSS is the better choice. For large products and design systems, Tailwind (or similar) is too.

What's your preference? Let me know — or better yet, book a first call and let's talk about it.