{"version":"1.0","type":"rich","provider_name":"Acast","provider_url":"https://acast.com","height":250,"width":700,"html":"<iframe src=\"https://embed.acast.com/$/65de32896569fa0017d17653/6974a1c9283ec80e15309d44?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"Zero Specificity (with Stephen Margheim)","description":"<p>Jared talks with Stephen Margheim about a “missing” middle layer in modern design systems: reusable CSS affordances that sit between Tailwind utilities and full components. Stephen shares how building a no-JavaScript half-star rating input (radio buttons + labels + SVG + careful hover/layout CSS) reinforced his bias toward solving problems with the smallest toolset to avoid incidental complexity and to make solutions portable across frameworks. That philosophy leads to his critique that components are a poor vehicle for purely visual styles because they bundle structure, behavior, and aesthetics in ways that are hard to reuse—so instead, teams should name and standardize visual signals like “button” as composable classes that can apply to many semantic HTML elements. He explains how Tailwind can support this via custom utilities (@utility), tree-shaking, autocomplete, variants, and low-specificity defaults using :where(), and argues a four-layer approach—tokens → utilities → affordances → components—helps teams maintain design systems and progressively drop JavaScript as the web platform adds more native UI primitives (dialog, popover, details/name, etc.).</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://fractaledmind.com/\" rel=\"noopener noreferrer\" target=\"_blank\">fractaledmind.com</a></p><p><a href=\"https://webawesome.com/\" rel=\"noopener noreferrer\" target=\"_blank\">Web Awesome</a></p><p><a href=\"https://fontawesome.com/\" rel=\"noopener noreferrer\" target=\"_blank\">Font Awesome</a></p><p><a href=\"https://tailwindcss.com/blog/introducing-catalyst\" rel=\"noopener noreferrer\" target=\"_blank\">Tailwind: Introducing Catalyst</a></p><p><a href=\"https://catalyst.tailwindui.com/docs\" rel=\"noopener noreferrer\" target=\"_blank\">Catalyst docs</a></p><p><a href=\"https://ui.shadcn.com/\" rel=\"noopener noreferrer\" target=\"_blank\">shadcn/ui</a></p><p><a href=\"https://daisyui.com/\" rel=\"noopener noreferrer\" target=\"_blank\">daisyUI</a></p><p><a href=\"https://tailwindcss.com/docs/functions-and-directives\" rel=\"noopener noreferrer\" target=\"_blank\">Tailwind docs: Functions &amp; directives</a></p><p><a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:where\" rel=\"noopener noreferrer\" target=\"_blank\">MDN: :where() selector</a></p><p><a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Popover_API\" rel=\"noopener noreferrer\" target=\"_blank\">MDN: Popover API</a></p><p><a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Anchor_positioning\" rel=\"noopener noreferrer\" target=\"_blank\">MDN: CSS anchor positioning</a></p><p><a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog\" rel=\"noopener noreferrer\" target=\"_blank\">MDN: &lt;dialog&gt; element</a></p><p><a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API\" rel=\"noopener noreferrer\" target=\"_blank\">MDN: Invoker Commands API</a></p><p><a href=\"https://developer.mozilla.org/en-US/blog/html-details-exclusive-accordions/\" rel=\"noopener noreferrer\" target=\"_blank\">MDN blog: Exclusive accordions with &lt;details name&gt;</a></p><p><a href=\"https://web.dev/blog/interop-2026-proposals\" rel=\"noopener noreferrer\" target=\"_blank\">web.dev: Interop 2026 proposals</a></p><p><a href=\"https://rubyonrails.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Ruby on Rails</a></p><p><a href=\"https://sqlite.org/\" rel=\"noopener noreferrer\" target=\"_blank\">SQLite</a></p><p><br></p><p><strong>Dead Code Podcast Links:</strong></p><p><br></p><p><a href=\"https://hachyderm.io/@deadcode\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/DeadCodePod\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><br></p><p><strong>Jared’s Links:</strong></p><p><br></p><p><a href=\"https://supergood.social/@jared\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><a href=\"https://www.twitch.tv/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">twitch.tv/jardonamron</a></p><p><a href=\"https://jardo.dev\" rel=\"noopener noreferrer\" target=\"_blank\">Jared’s Newsletter &amp; Website</a></p><p><br></p><p><a href=\"https://docs.google.com/document/d/1_HsAsYA-plbgDW8hhp8MRzu-2TTi9Y-wK7SZ_w0ydgM/edit?tab=t.0\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p>","author_name":"Jared Norman"}