The Farvist blog
Notes on building a CSS framework for the AI era — theming, discoverability, and the engineering behind the glass.
Why @layer makes your CSS lose to Tailwind
Un-layered CSS beats any layered rule, whatever the specificity. That one line of the cascade spec is why a polite, fully-layered framework gets stripped bare on a Tailwind v3 page — and what to do about it.
August 2, 2026 · 11 min read · Read →
What actually costs bytes in a CSS framework
We set out to cut the AI components to save weight, measured every layer, and found we'd guessed wrong: the generated utilities dominate the budget and the whole component kit was noise. The numbers, and what they changed.
August 2, 2026 · 8 min read · Read →
The AI chat UI components nobody documents
Everyone styles a message bubble. Nobody writes down the rest — tool-call cards, reasoning disclosures, streaming carets, diffs and citations — or the traps in each, like rendered markdown fighting your bubble's whitespace.
August 2, 2026 · 11 min read · Read →
Glassmorphism in CSS: a practical guide
Frosted glass is four CSS properties in a trench coat. The complete recipe — backdrop-filter, fills, borders, fallbacks — plus the mistakes that make glass look cheap. All copy-paste.
July 29, 2026 · 12 min read · Read →
Glassmorphism, done accessibly
Frosted-glass UI looks stunning and fails accessibility more often than any other trend. The four places it breaks — contrast, fallbacks, focus and motion — and the concrete fix for each.
July 16, 2026 · 14 min read · Read →
The anatomy of a command palette (⌘K)
Every dev tool has a ⌘K menu now. What actually makes one good — the five parts, the keyboard model, the combobox/listbox ARIA pattern most hand-built palettes get wrong, and the centering bug we shipped a fix for in 1.7.1.
July 16, 2026 · 12 min read · Read →
Building a CSS framework for the AI era
AI assistants write UI code every day — but they hallucinate class names and can't run your build step. Three design choices that make Farvist findable, writable, and re-brandable by a model.
July 3, 2026 · 11 min read · Read →
Runtime theming with zero build step
Mirror every token to a custom property, derive every shade with color-mix(), and one variable re-brands the whole framework — gradients, glows, glass and all. No Sass rebuild.
July 3, 2026 · 7 min read · Read →