Lab 11: Theming System
Overview
Step 1: CSS Layer Architecture
/* Declare layers in correct cascade order */
@layer reset, base, tokens, components, utilities, overrides;
@layer reset {
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
img { max-width: 100%; display: block; }
}
@layer base {
:root {
font-family: var(--font-sans);
line-height: var(--line-height-base);
color: var(--color-text-primary);
background: var(--color-bg-default);
}
}
@layer tokens {
:root {
/* Light theme defaults */
--color-primary: oklch(0.55 0.20 250);
--color-bg-default: oklch(0.99 0 0);
--color-text-primary: oklch(0.15 0 0);
}
}
@layer components {
.btn { /* ... */ }
.card { /* ... */ }
}
@layer utilities {
.sr-only { /* ... */ }
.flex { display: flex; }
}
@layer overrides {
/* Third-party library overrides */
}Step 2: Multi-Brand Theming
Step 3: Dark Mode + Forced Colors + High Contrast Stack
Step 4: oklch() Color Palette Generation
Step 5: CSS @scope for Theme Isolation
@scope for Theme IsolationStep 6: Theme Token Export
Step 7: Smooth Theme Transition
Step 8: Capstone — oklch Palette Generator
Summary
Feature
CSS
Benefit
Last updated
