Skip to content
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 191 additions & 0 deletions content/blog/2026/poetic-css-intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
---
title: CSS is one big progressive enhancement

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
title: CSS is one big progressive enhancement
title: CSS Is One Big Progressive Enhancement

sub: An intro to my upcoming Poetic CSS course
author: miriam
date: 2026-02-12

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update this before publishing

summary:
I hear over and over
that CSS feels like a series of workarounds,
rather than a unified system.
And sometimes that's because
there are essential features missing from the language,
but often it's a problem
with the way CSS is taught.
---

Since coding my first website
in the early 2000's,
taking my first client in 2006,
and starting OddBird a few years later,
I've dedicated my career
to helping address this issue from all sides.
I started sharing CSS tools in Sass
then joined the Sass core team,
started teaching at conferences
and on the Mozilla developer channel,
and eventually became part of the
CSS Working Group --
designing features like cascade layers,
scope, and container queries.
All of that while working with OddBird
to build top-shelf
web sites and applications
for clients around the world.

A lot has changed over those 20 years,
with new CSS features rolling out
faster than ever.
But underneath the heap of different properties and values
that we usually learn,
there's a logic that holds it all together --
and that hasn't really changed at all.
Instead,
new CSS features like variables and cascade layers
have given us more and more _direct access_
to understand and manipulate
the internal features that make CSS
both _powerful_ and also _complicated_.

This is not some secret
that's been kept from you,
but often a fundamental confusion
about the role of design on the web,
and the problem CSS was created to address --
a problem that doesn't exist
in any other design context.

The purpose of CSS,
and the driving logic of the language
is _progressive enhancement_:
design that will work
across different browsers,
on different platforms and devices,
with different interfaces,
in different languages and writing modes,
while leaving the end user
with full control of the outcome.

A world wide web:
[on everything,
for everyone](https://w3.org/Consortium/mission.html#principles).

Many of us learned about
progressive enhancement
as one _approach_ to web development --
a way of thinking about our sites
so that they will work for more people.
That's often framed as a moral argument,
something that you _should_ consider
for the sake of inclusion.
But I want to show you
how CSS is a progressive enhancement
_from the inside out_,
and not a complication
that you can opt out of.

If you want to design websites,
CSS is the only way to do it.
And if you write CSS,
then there's no way to avoid progressive enhancement.
It's the foundation of the language,
and the driving force behind every
strength and weakness that CSS has.
If you find that impractical,
you're probably right!
Universal design certainly makes things complicated!
Comment on lines +124 to +125

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
you're probably right!
Universal design certainly makes things complicated!
you're probably right --
universal design certainly makes things complicated!

But you'll be surprised how much of the work
CSS can do for us if we let it.
And if you try to reject those principles,
you will be fighting the language at every step.

With that goal in mind,
we can revisit the various features of CSS
and see how they all fit together
from that underlying principle.
Not to gloss over the rough edges
(CSS has
[its share of mistakes](https://wiki.csswg.org/ideas/mistakes))
but to _understand where they come from_.

Once we understand CSS
as a series of progressive enhancements,
we can revisit the essential features
and put them in context,
to really understand how they work.
The result is a language
that prioritizes resilience over precision,
and _showing your work_ over _getting the right answer_.

Like poetry,
CSS works best when
we choose our words carefully
to _express our intent_
without being overly restrictive.

There are many excellent CSS courses in the world,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there's a way to move parts of this section to the very top? Some type of brief introduction to the course before you go into your background in teaching/education?

and I recommend learning from more than one source.
But this course is all about systems:

- Understanding the internal system logic of CSS itself
- And building our own systems to efficiently work with CSS

We'll talk about individual features
like flexbox and grid and container queries,
but we'll also re-visit
underlying principles like inheritance,
the cascade, and value resolution.
I want to completely change how you think about
something like 'CSS variables' --
fundamentally different
from any other variables
in any other language --
so that you have more tools to reach for
in every-day situations.
Comment thread
mirisuzanne marked this conversation as resolved.
Outdated

The goal is extremely practical and grounded:
helping you write better CSS,
more quickly and efficiently.
If you're doing it by hand,
or having an LLM to write it for you --
either way,
your job is to make it work.
But to get there you have to understand
how all the pieces fit together.

Without that understanding,
all you have is a bag of memorized tricks.

## Making progress

We've been planning this course for a while,
but fitting it in around other projects
made it slow to pick up momentum --
and we didn't want to start selling something
that only exists in our minds!

It's not done,
but we're getting to the point
where we have actual lessons
to share with early subscribers.
Maybe that's you?

The course structure is roughed in,
many of the demos have been built,
slide decks and transcripts/articles are taking shape,
I've done some camera tests
(using old lights from my Mozilla videos),
and I'm starting to film
the first set of lessons.

But there's a lot more to do
Turning a series of videos into a _course_

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there punctuation missing before "Turning"?

that you can access.
Hopefully we'll get that infrastructure in place soon --
a landing page with the course outline,
a checkout flow,
and a platform you can log into
for access.
We're working on it!

You're in the right place
to get updates along the way.