DIGNALEGI

The reading room · Digna Legi

Moving away from Tailwind, and learning to structure my CSS

A personal relevance score

80–100: high value. 70–79: worth the time. Below 70: below the usual publication threshold.

Evidence-reviewed score based on available publisher text. The article is a personal engineering practice account; evidence supports practical lessons but not broad empirical claims.

Scores reflect one reader’s profile, not an objective quality rating. Best is a separate personal selection.

How scoring works →

This brief · about 3 min with detail

Original article ↗

Why read this

Leaving Tailwind keeps its useful constraints while reclaiming semantic HTML, component-scoped CSS, and native layout features.

AI brief · Checked against source text

The main idea

The author argues that Tailwind was useful because it imposed structure when their CSS was chaotic, but that its constraints eventually became too broad and build-system-dependent for their sites. The migration keeps selected Tailwind habits, such as resets, font scales, and limited utility classes, while moving toward semantic HTML, component-scoped CSS conventions, conservative base styles, and native CSS layout features that Tailwind cannot express as directly.

Some background helpful. Basic familiarity with CSS, Tailwind, HTML classes, responsive layout, and build tools.

Go a little deeper

Reuse constraints, not the whole framework

The migration’s strongest distinction is between abandoning Tailwind and abandoning structure. The author keeps the parts that reduced chaos: a reset, a color inventory, a font scale, and small utilities. The new target is not unconstrained CSS, but a hand-picked rule set where each convention has a visible purpose and can be changed without accepting Tailwind’s whole system.

Component CSS is a convention before it is a technology

The author organizes most CSS around components with unique classes, separate files, and a rule that one component should not override another. Nothing enforces this mechanically: no web components, no scoping primitive, no programmatic guarantee. The practical gain is cognitive locality. Editing a component means reasoning about a bounded file rather than fearing invisible interactions across the site.

Base styles should earn their scope

The author treats global CSS as dangerous precisely because it reaches everywhere. Instead of establishing a large base layer up front, they start with almost nothing and move repeated patterns upward only after discovering them in components. That bottom-up approach turns global rules into extracted regularities rather than guesses about what the whole site should need.

Native CSS changes the responsive-design tradeoff

The author’s move away from Tailwind is partly about using layout mechanisms that reduce breakpoint thinking. Flexible grid patterns, auto-fit, minmax, and grid-template-areas let the browser adapt structure without many explicit media queries. This is not presented as easier; the author calls it hard. The point is that vanilla CSS exposes mechanisms Tailwind’s utility vocabulary may not comfortably cover.

A case from the article

A grid layout replaces breakpoint utilities

The author contrasts Tailwind’s responsive syntax, such as applying a larger text size at medium screens, with a CSS grid that automatically shifts between one and two columns. The example uses auto-fit and minmax to let available width determine layout. It illustrates the broader migration: less per-breakpoint instruction, more reliance on browser-native layout behavior.

How the case is made

The case is made through first-person migration notes, concrete CSS snippets, and comparisons between prior Tailwind habits and newer vanilla CSS conventions.

Where the idea has limits

The argument is explicitly personal: the author is not a full-time frontend developer and is describing small-site migration lessons, not a universal recommendation against Tailwind.

A question to take away · from Digna Legi

Which constraints in your tooling are still helping, and which are only hiding skills you now need to develop?

What the original adds

The source includes specific snippets for component nesting, shared color and font variables, section spacing, CSS grid auto-fit, imports, nesting, and esbuild bundling.

About this brief

AI-written, then separately checked for source support, useful detail and clarity. The author’s claims and our editorial question are kept separate. The original remains the author’s work. How we select and summarise →

Digna legi. Worth reading.