Stephen Margheim
banner
fractaledmind.bsky.social
Stephen Margheim
@fractaledmind.bsky.social
Org charts, file trees, tournament brackets—all with pure CSS. No canvas. No SVG. No JS. Just flexbox and pseudo-elements.

Let's break it down, starting with the foundational left-to-right tree, where only a couple dozen lines of CSS can transform this ... into this ...

🧵
December 26, 2025 at 4:02 PM
If you're going to write semantic CSS classes in 2025, don't call them .btn or .card.

Use a ui-* prefix: ui-button, ui-input, ui-badge.

Here's why naming matters more than you think...
December 25, 2025 at 11:02 AM
Your app/design system needs a .button class before it needs a <Button/> component.

We need to be able to compose behaviors and appearance as needed. A <label> might need to look like a button, or <summary>, or <input type=radio>

Visual affordances deserve their own primitive.
December 24, 2025 at 11:04 AM
👀 Sneak peek of a 100% plain HTML and CSS component I'm building for my next project.

I'll give a full behind-the-scenes tour of the project to the first person that comments with the correct essential implementation details driving this "card tabs" component.
December 23, 2025 at 4:04 PM
Have an SVG with stylized text? Want to make the stylized text selectable?

Add a <text fill=transparent> node with the corresponding text.

We can have nice things that are usable too!
December 23, 2025 at 10:59 AM
Designer-quality dialogs with zero JavaScript 👀

Borrowed the visual design from Campsite, but built with native and pure semantic HTML and CSS. Full walkthru at: fractaledmind.com/2025/12/18/...

Check it
December 22, 2025 at 3:57 PM
The web platform has supported keyboard shortcuts for over a decade! Say hello to criminally overlooked `accesskey` attribute.

Add it to an interactive element like a button, link, or input so users can fire its default action via keyboard shortcut, no JS required!
December 22, 2025 at 10:57 AM
I spent way too long perfecting animations for my post on crafting stylish s. So, I compiled all my mistakes so you can nail it on the first try. Check it out or pass it along to your coding agent 😉

fractaledmind.com/2025/12/19/...
December 21, 2025 at 7:00 PM
`popover` & `popovertarget` give you dropdown menus w/ light-dismiss for free.





#StylishHTML
December 20, 2025 at 8:00 PM
I'm crafting a novel tool that uses keyboard usability as the ultimate test for page accessibility, while also diving deep into the a11y tree.

Excited seeing it take shape! 👀
December 19, 2025 at 4:00 PM
Breadcrumb separators belong in CSS, not HTML. Just use the `::after` pseudo-element.

nav > ol > li:not(:last-child)::after {
content: " / ";
color: lightgray;
padding: 0 0.5em;
}

The `:not(:last-child)` ensures no trailing separator after the final item.

#StylishHTML
December 19, 2025 at 11:00 AM
Today's elements are your newest secret weapon—simple and powerful. In my latest post, I'll guide you through creating sleek, thoughtful UI with this full-featured, native hero. Dive into the future of stylish experiences:

fractaledmind.com/2025/12/18/...
December 18, 2025 at 4:14 PM
I think @trycampsite had some of the most elegant UI on the web, especially for modal dialogs, but it was all React components rendering
s inside
s.

So I stole their design and rebuilt it with semantic HTML and CSS. 😅

fractaledmind.com/2025/12/18/...
December 18, 2025 at 11:00 AM
SVG icons have been "solved" myriad ways, but I find them all lacking.

Inline SVGs? Bloated DOM.
<img> tags? Can't change colors.
Icon fonts? Blurry at certain sizes, a11y issues.
CSS background-image? Still can't change colors.

But, today there's actually a perfect solution...
December 17, 2025 at 7:21 PM
The Tailwind community has become too dogmatic about utility-only.

Tailwind is utility-FIRST, not utility-ONLY. And @​utility and @​apply are criminally underused. And here is why this matters...
December 16, 2025 at 2:21 PM
🌶️ #nobuild is a solo developer philosophy masquerading as universal advice.

The append-only CSS problem that drove teams to Tailwind? Nobuild doesn't solve it. It ignores it.

Let me make the case for #lowbuild instead...
December 15, 2025 at 8:32 PM
Tab testing doesn’t find accessibility issues.
It finds usability issues that happen to block keyboard users first.

Broken focus order, invisible states, unreachable controls—these aren’t “accessibility bugs.” They’re just bugs. Keyboard users hit them before anyone else notices.
December 15, 2025 at 5:56 PM
Tab through any site for 30 seconds and you’ll know more about its real accessibility than an hour with a linter.

Focus disappears? Problem.
Can’t reach the nav? Problem.
Trapped in a modal? Problem.

It’s a stress test for your whole UI in one keystroke.
December 15, 2025 at 2:02 PM
Your accessibility audit says you’re compliant.
Your keyboard users can’t complete your signup flow.
These aren’t contradictory. We’ve just been measuring the wrong thing.
December 14, 2025 at 5:59 PM
Accessibility tools ask “does this image have alt text?” The actual question is “can someone navigate your interface?” One is compliance. The other is usability.

We’ve been testing the wrong thing.
December 14, 2025 at 3:03 PM
Try this: Tab through your homepage without touching your mouse.

Can you tell what’s focused? Can you reach the main CTA? Can you get back out of the menu?

That 30-second test tells you more than your lighthouse score ever will.
December 13, 2025 at 8:32 PM
The fastest accessibility audit: Tab through your site.

Where does focus land? Can you see it? Can you reach everything? Can you escape that modal?

Your linter can’t answer these. They’re also the only questions that matter.
December 13, 2025 at 7:34 PM
This is the page it built base on that simple prompt. Yes, I tailored it with specific inspiration and specific base HTML. But this is so much better than I ever expected. See the full page link in the quoted post.
December 13, 2025 at 7:11 PM
The prompt:
Here are three of my favorite landing pages that use the TUI aesthetic:
* openstatus
* turbopuffer
* planetscale
screenshots attached. I want you to redesign the HTML I've attached to get something that both feels unique and familiar with these.

➡️ gemini.google.com/app/f1ee065a...
December 13, 2025 at 7:10 PM