Skip to main content
← 🎨 CSS as a design systemΒ·Module B8 Β· Lesson 1
TaskBuild a small layered system. @layer base, components. @layer base { body { font-family: system-ui, sans-serif; padding: 24px; } }. @layer components { .card { padding: 20px; background: #eef; border-radius: 8px; } .card h2 { margin: 0; color: #3B82F6; } }. Demo: a card with an h2.

@layer: explicit cascade priority

100 XP7 min
Theory

The cascade you control instead of fight

@layer reset, base, components, utilities;

@layer reset {
  *, *::before, *::after { box-sizing: border-box; }
}

@layer base {
  body { font-family: system-ui, sans-serif; }
  a { color: #3B82F6; }
}

@layer components {
  .card { padding: 16px; border-radius: 8px; }
}

@layer utilities {
  .text-center { text-align: center; }
}

The order at the top declares priority: utilities > components > base > reset. Unlayered styles WIN over layered ones β€” like an "unlayered" implicit top.

Why this beats specificity wars

Before @layer, you needed !important to override Bootstrap from your code. Now:

@layer bootstrap { /* their styles */ }
@layer overrides { /* yours, always wins */ }

Your overrides ALWAYS beat bootstrap's, regardless of specificity inside each layer. No !important needed.

The classic "5-layer" project structure

  1. @layer reset β€” the modern reset (box-sizing, margin: 0).
  2. @layer base β€” element defaults (body, h1, a).
  3. @layer tokens β€” custom properties (:root variables).
  4. @layer components β€” .card, .button, .alert.
  5. @layer utilities β€” Tailwind-style atomic classes.

Decide the order ONCE at the top of your main stylesheet. The rest of the project is conflict-free.

Browser support

All evergreen browsers since 2022. Safe everywhere.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.