<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Tailwind CSS Blog</title><link>https://tailwindcss.com/blog</link><atom:link href="http://rss.144-124-237-35.sslip.io/tailwindcss/blog" rel="self" type="application/rss+xml"></atom:link><description>All the latest Tailwind CSS news, straight from the team. - Powered by AtomRSS</description><generator>AtomRSS</generator><webMaster>contact@atomgroup.dev (AtomRSS)</webMaster><language>en</language><lastBuildDate>Sat, 08 Aug 2026 14:44:44 GMT</lastBuildDate><ttl>5</ttl><item><title>Tailwind CSS v4.3: Scrollbars, new colors, and more</title><description>&lt;p&gt;Tailwind CSS v4.3 is here, and because apparently shipping v4.2 was easier than remembering to blog about it, this post is secretly about two releases worth of new stuff.&lt;/p&gt;
&lt;p&gt;Here&#39;s what landed in v4.2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-mauve-olive-mist-and-taupe-palettes&quot;&gt;New &lt;code&gt;mauve&lt;/code&gt;, &lt;code&gt;olive&lt;/code&gt;, &lt;code&gt;mist&lt;/code&gt;, and &lt;code&gt;taupe&lt;/code&gt; palettes&lt;/a&gt; — four more neutral-ish palettes for when gray, zinc, neutral, stone, and slate have somehow failed you.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#first-class-webpack-plugin&quot;&gt;First-class webpack plugin&lt;/a&gt; — for a huge performance boost in frameworks like Next.js.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#more-logical-property-utilities&quot;&gt;More logical property utilities&lt;/a&gt; — including &lt;code&gt;pbs-*&lt;/code&gt;, &lt;code&gt;mbs-*&lt;/code&gt;, &lt;code&gt;inline-*&lt;/code&gt;, &lt;code&gt;block-*&lt;/code&gt;, and new logical inset utilities.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-font-features-utility&quot;&gt;New &lt;code&gt;font-features-*&lt;/code&gt; utility&lt;/a&gt; — control low-level OpenType features without writing custom CSS every time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…and here&#39;s what&#39;s new in v4.3:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-scrollbar-utilities&quot;&gt;New scrollbar utilities&lt;/a&gt; — style scrollbars without wondering which half-supported browser API you&#39;re supposed to use this week.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-container-size-utility&quot;&gt;New &lt;code&gt;@container-size&lt;/code&gt; utility&lt;/a&gt; — create size containers for when your container queries need to care about height too.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-zoom-utilities&quot;&gt;New &lt;code&gt;zoom-*&lt;/code&gt; utilities&lt;/a&gt; — use the CSS &lt;code&gt;zoom&lt;/code&gt; property directly in your markup, now that every browser has finally agreed it exists.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-tab-utilities&quot;&gt;New &lt;code&gt;tab-*&lt;/code&gt; utilities&lt;/a&gt; — control the rendered width of tab characters, just please don&#39;t make it eight like GitHub used to.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#stacked-compound-variant-support&quot;&gt;Stacked + compound &lt;code&gt;@variant&lt;/code&gt; support&lt;/a&gt; — use stacked and compound variants directly in CSS.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#default-values-for-functional-utilities&quot;&gt;Default values for functional utilities&lt;/a&gt; — define utilities that work with or without a value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A lot of the v4.2 improvements, including the new logical property utilities and &lt;code&gt;font-features-*&lt;/code&gt; support, came out of collaborations with teams at Netflix and Vercel through our &lt;a href=&quot;https://tailwindcss.com/sponsor#partners&quot;&gt;Partners Program&lt;/a&gt;. If there are framework improvements like this that would make Tailwind CSS work better for your team, we&#39;d love to help.&lt;/p&gt;
&lt;p&gt;Upgrade your projects by installing the latest version of &lt;code&gt;tailwindcss&lt;/code&gt; from npm:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using the Tailwind CLI&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/cli@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using Vite&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/vite@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using PostCSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/postcss@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using webpack&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/webpack@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-mauve-olive-mist-and-taupe-palettes&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-mauve-olive-mist-and-taupe-palettes&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;mauve&lt;/code&gt;, &lt;code&gt;olive&lt;/code&gt;, &lt;code&gt;mist&lt;/code&gt;, and &lt;code&gt;taupe&lt;/code&gt; palettes&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In v4.2 we added four new color palettes to the default theme: &lt;code&gt;mauve&lt;/code&gt;, &lt;code&gt;olive&lt;/code&gt;, &lt;code&gt;mist&lt;/code&gt;, and &lt;code&gt;taupe&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;These originally came out of &lt;a href=&quot;https://tailwindcss.com/plus/changelog#2025-12-18&quot;&gt;Oatmeal&lt;/a&gt;, the multi-theme marketing site kit we released for Tailwind Plus back in December, where we needed a few more neutral-ish palettes that still felt distinct from the grays we already ship.&lt;/p&gt;
&lt;p&gt;They&#39;re all in that useful neutral-adjacent category where you want something that still behaves like gray, but has a little more personality:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;grid gap-5 p-6 sm:p-8&quot;&gt;&lt;div class=&quot;grid grid-cols-[auto_1fr] items-center gap-x-5 gap-y-3 text-sm/6 sm:gap-x-6&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-11 justify-items-center gap-1.5 font-mono text-xs text-gray-500 dark:text-gray-400&quot;&gt;&lt;div&gt;50&lt;/div&gt;&lt;div&gt;100&lt;/div&gt;&lt;div&gt;200&lt;/div&gt;&lt;div&gt;300&lt;/div&gt;&lt;div&gt;400&lt;/div&gt;&lt;div&gt;500&lt;/div&gt;&lt;div&gt;600&lt;/div&gt;&lt;div&gt;700&lt;/div&gt;&lt;div&gt;800&lt;/div&gt;&lt;div&gt;900&lt;/div&gt;&lt;div&gt;950&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;font-mono font-medium text-gray-950 dark:text-white&quot;&gt;mauve&lt;/div&gt;&lt;div class=&quot;grid grid-cols-11 gap-1.5&quot;&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-50 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-100 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-200 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-300 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-400 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-500 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-600 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-700 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-800 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-900 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mauve-950 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;font-mono font-medium text-gray-950 dark:text-white&quot;&gt;olive&lt;/div&gt;&lt;div class=&quot;grid grid-cols-11 gap-1.5&quot;&gt;&lt;div class=&quot;aspect-square rounded bg-olive-50 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-100 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-200 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-300 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-400 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-500 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-600 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-700 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-800 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-900 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-olive-950 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;font-mono font-medium text-gray-950 dark:text-white&quot;&gt;mist&lt;/div&gt;&lt;div class=&quot;grid grid-cols-11 gap-1.5&quot;&gt;&lt;div class=&quot;aspect-square rounded bg-mist-50 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-100 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-200 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-300 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-400 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-500 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-600 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-700 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-800 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-900 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-mist-950 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;font-mono font-medium text-gray-950 dark:text-white&quot;&gt;taupe&lt;/div&gt;&lt;div class=&quot;grid grid-cols-11 gap-1.5&quot;&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-50 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-100 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-200 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-300 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-400 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-500 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-600 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-700 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-800 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-900 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded bg-taupe-950 inset-ring inset-ring-gray-950/5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;They&#39;re a nice substitute for the existing gray palettes when you want the whole design to lean a little warmer, cooler, greener, or… mauver?&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-mauve-950&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-mauve-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Mauve&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-olive-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-olive-950&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Olive&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;border &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;border-mist-200&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;shadow-taupe-950/10&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Mist and taupe&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/colors&quot;&gt;colors documentation&lt;/a&gt; for a pretty grid of all the available colors.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;first-class-webpack-plugin&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#first-class-webpack-plugin&quot; class=&quot;anchor&quot;&gt;First-class webpack plugin&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.2 added a dedicated &lt;code&gt;@tailwindcss/webpack&lt;/code&gt; loader for integrating Tailwind CSS in webpack projects.&lt;/p&gt;
&lt;p&gt;Before this, webpack projects usually ran Tailwind through &lt;code&gt;postcss-loader&lt;/code&gt; and &lt;code&gt;@tailwindcss/postcss&lt;/code&gt;, which works, but means CSS has to take a little detour through PostCSS just so Tailwind can get its hands on a string it already knows how to compile.&lt;/p&gt;
&lt;p&gt;The dedicated loader skips that extra work, and we&#39;ve seen it make Tailwind over 2x faster in large, complicated webpack projects. For example, here&#39;s what we saw testing against the tailwindcss.com docs with Next.js and Turbopack:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Package&lt;/th&gt;&lt;th class=&quot;text-right&quot;&gt;Build time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;@tailwindcss/postcss&lt;/td&gt;&lt;td class=&quot;text-right&quot;&gt;932ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;@tailwindcss/webpack&lt;/td&gt;&lt;td class=&quot;text-right&quot;&gt;429ms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td class=&quot;text-right font-medium text-gray-950 dark:text-white&quot;&gt;2.17x faster&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Using it is the same sort of setup you&#39;re used to from other webpack loaders:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;webpack.config.js&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; MiniCssExtractPlugin&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; require&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mini-css-extract-plugin&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;module&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;exports&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  plugins&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; MiniCssExtractPlugin&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;()]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  module&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    rules&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        test&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\.&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;css&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        use&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;MiniCssExtractPlugin&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;loader&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;css-loader&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@tailwindcss/webpack&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    ]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Because Turbopack supports webpack loaders through its compatibility layer, these improvements carry over there too, which is a big deal for frameworks like Next.js where Turbopack is becoming the default.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss/tree/main/packages/%40tailwindcss-webpack&quot;&gt;&lt;code&gt;@tailwindcss/webpack&lt;/code&gt; README&lt;/a&gt; for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;more-logical-property-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#more-logical-property-utilities&quot; class=&quot;anchor&quot;&gt;More logical property utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.2 added a whole bunch of new logical property utilities, making it easier to build layouts that adapt correctly across different writing modes and directions.&lt;/p&gt;
&lt;p&gt;For spacing, there are new block-start and block-end utilities for padding, margin, scroll padding, scroll margin, and borders:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mbs-6&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mbe-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pbs-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pbe-8&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scroll-mbs-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scroll-mbe-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scroll-pbs-12&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scroll-pbe-12&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;border-bs&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;border-be-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;ve also added logical sizing utilities for &lt;code&gt;inline-size&lt;/code&gt; and &lt;code&gt;block-size&lt;/code&gt;, along with min and max variants:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;block-64&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inline-full&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;max-block-screen&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;max-inline-lg&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;min-block-24&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;min-inline-0&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And we&#39;ve added logical inset utilities for positioning elements:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;absolute &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inset-s-0&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inset-e-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inset-bs-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inset-be-8&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The existing &lt;code&gt;start-*&lt;/code&gt; and &lt;code&gt;end-*&lt;/code&gt; utilities are still available, but they&#39;re now deprecated in favor of &lt;code&gt;inset-s-*&lt;/code&gt; and &lt;code&gt;inset-e-*&lt;/code&gt; so the whole API lines up with &lt;code&gt;inset-bs-*&lt;/code&gt; and &lt;code&gt;inset-be-*&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/padding#using-logical-properties&quot;&gt;&lt;code&gt;padding&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/margin#using-logical-properties&quot;&gt;&lt;code&gt;margin&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/scroll-padding#using-logical-properties&quot;&gt;&lt;code&gt;scroll-padding&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/scroll-margin#using-logical-properties&quot;&gt;&lt;code&gt;scroll-margin&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/border-width#using-logical-properties&quot;&gt;&lt;code&gt;border-width&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/inline-size&quot;&gt;&lt;code&gt;inline-size&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/block-size&quot;&gt;&lt;code&gt;block-size&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://tailwindcss.com/docs/top-right-bottom-left#using-logical-properties&quot;&gt;&lt;code&gt;top / right / bottom / left&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-font-features-utility&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-font-features-utility&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;font-features-*&lt;/code&gt; utility&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve also added &lt;code&gt;font-features-*&lt;/code&gt; utilities for controlling &lt;code&gt;font-feature-settings&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;mx-auto grid max-w-xl grid-cols-1 gap-4 font-medium text-gray-700 sm:grid-cols-2 dark:text-gray-300&quot;&gt;&lt;div class=&quot;rounded-xl bg-gray-50 p-5 ring-1 ring-gray-950/5 dark:bg-white/5 dark:ring-white/10&quot;&gt;&lt;p class=&quot;font-mono text-xs text-gray-500 dark:text-gray-400&quot;&gt;normal&lt;/p&gt;&lt;div class=&quot;mt-3 grid gap-1 text-3xl tracking-tight&quot;&gt;&lt;p&gt;100.00&lt;/p&gt;&lt;p&gt;218.40&lt;/p&gt;&lt;p&gt;864.12&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;rounded-xl bg-gray-50 p-5 font-features-[&amp;quot;tnum&amp;quot;] ring-1 ring-gray-950/5 dark:bg-white/5 dark:ring-white/10&quot;&gt;&lt;p class=&quot;font-mono text-xs text-gray-500 dark:text-gray-400&quot;&gt;font-features-[&quot;tnum&quot;]&lt;/p&gt;&lt;div class=&quot;mt-3 grid gap-1 text-3xl tracking-tight&quot;&gt;&lt;p&gt;100.00&lt;/p&gt;&lt;p&gt;218.40&lt;/p&gt;&lt;p&gt;864.12&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;font-features-[&quot;tnum&quot;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For common cases like tabular numbers, you should still reach for higher-level utilities like &lt;code&gt;tabular-nums&lt;/code&gt; first, because nobody should have to remember that &lt;code&gt;&quot;tnum&quot;&lt;/code&gt; is a thing.&lt;/p&gt;
&lt;p&gt;But when you need to enable a font-specific stylistic set or some other OpenType feature we don&#39;t have a dedicated utility for, &lt;code&gt;font-features-*&lt;/code&gt; gives you a clean escape hatch.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/font-feature-settings&quot;&gt;&lt;code&gt;font-feature-settings&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-scrollbar-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-scrollbar-utilities&quot; class=&quot;anchor&quot;&gt;New scrollbar utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.3 adds first-party utilities for the CSS scrollbar APIs, so you can finally do the boring-but-useful scrollbar stuff without opening a second tab and remembering which browser supports what.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;scrollbar-auto&lt;/code&gt;, &lt;code&gt;scrollbar-thin&lt;/code&gt;, and &lt;code&gt;scrollbar-none&lt;/code&gt; to control &lt;code&gt;scrollbar-width&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;div class=&quot;mb-4&quot;&gt;&lt;div class=&quot;flex space-x-2&quot;&gt;&lt;svg width=&quot;22&quot; height=&quot;22&quot; fill=&quot;none&quot; viewBox=&quot;0 0 22 22&quot; class=&quot;size-5 flex-none&quot;&gt;&lt;path fill=&quot;currentColor&quot; class=&quot;dark:[fill-opacity:0.1]&quot; fill-opacity=&quot;0.05&quot; fill-rule=&quot;evenodd&quot; d=&quot;M10.5 8.77V2a1.5 1.5 0 1 0-3 0v10.929a3.5 3.5 0 0 1-1.025 2.474l-.008.009a6.5 6.5 0 0 0-1.87-3.937l-.536-.536a1.5 1.5 0 1 0-2.122 2.121l.536.536A3.5 3.5 0 0 1 3.5 16.07v.1a3.5 3.5 0 0 0 1.025 2.475l1.829 1.828A3.5 3.5 0 0 0 8.828 21.5h7.758a2.5 2.5 0 0 0 1.768-.733l.242-.242a6.5 6.5 0 0 0 1.904-4.596v-2.29a3.5 3.5 0 0 0-2.814-3.432z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M10.5 8.77H10v.41l.402.08zm-4.025 6.633-.354-.353zm-.008.009-.498.05.107 1.048.744-.745zm-1.87-3.937-.354.353zm-.536-.536-.354.354zm-2.122 0 .354.354zm0 2.121.354-.353zm.536.536-.354.353zm2.05 5.05L4.172 19zm1.829 1.828L6 20.829zm12 .293.353.354zm.242-.242-.353-.354zm-.91-10.318.099-.49zM10 2v6.77h1V2zM9 1a1 1 0 0 1 1 1h1a2 2 0 0 0-2-2zM8 2a1 1 0 0 1 1-1V0a2 2 0 0 0-2 2zm0 6.17V2H7v6.17zM8 9.5V8.17H7V9.5zm0 3.429V9.5H7v3.429zm-1.172 2.828A4 4 0 0 0 8 12.929H7a3 3 0 0 1-.879 2.12zm-.008.008.008-.008-.707-.707-.008.008zm-2.577-3.937a6 6 0 0 1 1.726 3.634l.995-.1A7 7 0 0 0 4.95 11.12zm-.536-.535.536.535.707-.707-.536-.536zm-1.414 0a1 1 0 0 1 1.414 0l.707-.708a2 2 0 0 0-2.828 0zm0 1.414a1 1 0 0 1 0-1.415l-.707-.707a2 2 0 0 0 0 2.829zm.535.535-.535-.535-.707.707.535.535zM4 16.071a4 4 0 0 0-1.172-2.829l-.707.707A3 3 0 0 1 3 16.071zm0 .1v-.1H3v.1zm.879 2.122A3 3 0 0 1 4 16.17H3A4 4 0 0 0 4.172 19zm1.828 1.828L4.88 18.293 4.172 19 6 20.828zM8.828 21a3 3 0 0 1-2.12-.88L6 20.829A4 4 0 0 0 8.828 22zm7.758 0H8.828v1h7.758zM18 20.414a2 2 0 0 1-1.414.586v1a3 3 0 0 0 2.121-.88zm.243-.243-.243.243.707.707.243-.243zM20 15.93a6 6 0 0 1-1.757 4.242l.707.707a7 7 0 0 0 2.05-4.95zm0-2.29v2.29h1v-2.29zm-2.412-2.941A3 3 0 0 1 20 13.639h1a4 4 0 0 0-3.215-3.922zM10.402 9.26l7.186 1.438.197-.981-7.187-1.437z&quot;&gt;&lt;/path&gt;&lt;path stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; d=&quot;M1.5 4.677a14 14 0 0 1 4-1.736m11 1.736a14 14 0 0 0-4-1.736&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;p class=&quot;text-sm font-medium text-slate-700 dark:text-slate-200&quot;&gt;Scroll vertically&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;mx-auto h-72 max-w-sm scrollbar-thin scrollbar-thumb-sky-700 scrollbar-track-sky-100 overflow-auto rounded-xl bg-white p-6 text-sm/6 text-gray-600 shadow-lg ring-1 ring-black/5 dark:scrollbar-thumb-sky-400 dark:scrollbar-track-gray-700 dark:bg-gray-800 dark:text-gray-300&quot;&gt;&lt;div class=&quot;space-y-4&quot;&gt;&lt;p&gt;The Cerulean Archives occupy three narrow floors above the old observatory, each lined with drawers of star maps, expedition notes, and brass instruments cataloged by hand.&lt;/p&gt;&lt;p&gt;On winter mornings, the staff rolls ladders between the shelves while pale light cuts through the roof windows and settles on the reading tables.&lt;/p&gt;&lt;p&gt;Visitors can request anything from the collection, but most come for the atlases that chart coastlines no longer found on modern maps.&lt;/p&gt;&lt;p&gt;Every returned volume is inspected, dusted, and wrapped before being carried back into the stacks for the next researcher.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-thin&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-thumb-sky-700&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-track-sky-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; overflow-auto ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can also control scrollbar colors using &lt;code&gt;scrollbar-thumb-*&lt;/code&gt; and &lt;code&gt;scrollbar-track-*&lt;/code&gt; utilities:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-thumb-sky-700&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-track-sky-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; overflow-auto ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;They work with the usual color opacity modifiers too:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-thumb-slate-900/60&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-track-slate-900/10&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And for preventing layout shift when scrollbars appear, we&#39;ve added &lt;code&gt;scrollbar-gutter-auto&lt;/code&gt;, &lt;code&gt;scrollbar-gutter-stable&lt;/code&gt;, and &lt;code&gt;scrollbar-gutter-both&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;mx-auto grid max-w-xl grid-cols-1 gap-6 text-sm/6 text-gray-600 sm:grid-cols-2 dark:text-gray-300&quot;&gt;&lt;div&gt;&lt;p class=&quot;mb-3 font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;scrollbar-gutter-auto&lt;/p&gt;&lt;div class=&quot;h-40 scrollbar-gutter-auto overflow-auto rounded-lg bg-gray-50 py-4 dark:bg-white/5&quot;&gt;&lt;p class=&quot;text-justify&quot;&gt;Hey everyone! It&#39;s almost 2027 and we still don&#39;t know if there are aliens living among us, or do we? Maybe the person writing this is an alien. You will never know.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;mb-3 font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;scrollbar-gutter-stable&lt;/p&gt;&lt;div class=&quot;relative h-40 scrollbar-gutter-stable overflow-auto rounded-lg bg-gray-50 py-4 pr-4 dark:bg-white/5&quot;&gt;&lt;p class=&quot;text-justify&quot;&gt;Hey everyone! It&#39;s almost 2027 and we still don&#39;t know if there are aliens living among us, or do we? Maybe the person writing this is an alien. You will never know.&lt;/p&gt;&lt;div class=&quot;absolute top-0 right-0 bottom-0 w-4 rounded-r-lg border bg-[image:repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)] bg-[size:8px_8px] bg-top-left text-black/10 dark:text-white/12.5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;scrollbar-gutter-stable&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; overflow-auto ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/scrollbar-width&quot;&gt;&lt;code&gt;scrollbar-width&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/scrollbar-color&quot;&gt;&lt;code&gt;scrollbar-color&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://tailwindcss.com/docs/scrollbar-gutter&quot;&gt;&lt;code&gt;scrollbar-gutter&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-container-size-utility&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-container-size-utility&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;@container-size&lt;/code&gt; utility&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In Tailwind CSS v4.0 we added first-party container query support with the &lt;code&gt;@container&lt;/code&gt; utility, which creates an inline-size container.&lt;/p&gt;
&lt;p&gt;That&#39;s what you want most of the time, but container query length units like &lt;code&gt;cqb&lt;/code&gt; and &lt;code&gt;cqh&lt;/code&gt; depend on the block size of the container, and inline-size containers don&#39;t expose that information.&lt;/p&gt;
&lt;p&gt;So in v4.3 we&#39;ve added &lt;code&gt;@container-size&lt;/code&gt;, which creates a size container instead:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@container-size&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;h-[50cqb]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can name size containers too using &lt;code&gt;@container-size/{name}&lt;/code&gt;, just like &lt;code&gt;@container/{name}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/responsive-design#using-size-containers&quot;&gt;responsive design docs&lt;/a&gt; for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-zoom-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-zoom-utilities&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;zoom-*&lt;/code&gt; utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.3 adds &lt;code&gt;zoom-*&lt;/code&gt; utilities for the CSS &lt;code&gt;zoom&lt;/code&gt; property, one of those ancient browser features that was supported in Chrome 1 back in 2008, but only became fully supported across all major browsers in 2024 after taking the scenic route through a few long-standing SVG bugs:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;zoom-75&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Zoomed out&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;zoom-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Normal&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;zoom-125&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Zoomed in&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can also use arbitrary values and CSS variables:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;zoom-[1.1]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Zoomed in a little&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;zoom-(--preview-zoom)&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Zoomed using a variable&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/zoom&quot;&gt;&lt;code&gt;zoom&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-tab-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#new-tab-utilities&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;tab-*&lt;/code&gt; utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve also added &lt;code&gt;tab-*&lt;/code&gt; utilities for controlling the rendered width of tab characters using &lt;code&gt;tab-size&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is mostly useful for code examples, editors, and any other UI where you&#39;re rendering preformatted text that might contain real tab characters:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid gap-6 sm:grid-cols-2&quot;&gt;&lt;div class=&quot;tab-2&quot;&gt;&lt;span class=&quot;mb-3 block font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;tab-2&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; indent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &#39;tabbed&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;tab-8&quot;&gt;&lt;span class=&quot;mb-3 block font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;tab-8&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; indent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &#39;tabbed&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;function indent() {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#10;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#9;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;return &#39;tabbed&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#10;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab-8&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;function indent() {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#10;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#9;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;return &#39;tabbed&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;#10;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Arbitrary values and CSS variables work here too:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab-[12px]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab-(--tab-size)&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/tab-size&quot;&gt;&lt;code&gt;tab-size&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;stacked-compound-variant-support&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#stacked-compound-variant-support&quot; class=&quot;anchor&quot;&gt;Stacked + compound &lt;code&gt;@variant&lt;/code&gt; support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.3 makes &lt;code&gt;@variant&lt;/code&gt; more flexible when you&#39;re using variants in CSS instead of directly in your markup.&lt;/p&gt;
&lt;p&gt;You can now use stacked variants:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  @variant &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;hover:focus&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    background: var(--color-sky-600);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Compiled CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  &amp;amp;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;hover {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    @media (hover: hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      &amp;amp;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;focus {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        background: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-600&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And you can use compound variants to share the same block of CSS across multiple variants:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  @variant &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;focus&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    background: var(--color-sky-600);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Compiled CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  &amp;amp;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;hover {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    @media (hover: hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;      background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-600&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  &amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;:focus&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    background&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-sky-600&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You&#39;re usually better off creating a real component and styling it with Tailwind CSS classes directly, but when CSS is the right tool, this makes &lt;code&gt;@variant&lt;/code&gt; a lot nicer to work with.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/adding-custom-styles#adding-custom-variants&quot;&gt;&lt;code&gt;@variant&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;default-values-for-functional-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-3#default-values-for-functional-utilities&quot; class=&quot;anchor&quot;&gt;Default values for functional utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.0 introduced functional &lt;code&gt;@utility&lt;/code&gt; definitions, where you can use &lt;code&gt;--value(…)&lt;/code&gt; and &lt;code&gt;--modifier(…)&lt;/code&gt; to define utilities that accept theme values, bare values, arbitrary values, and modifiers.&lt;/p&gt;
&lt;p&gt;In v4.3, you can now pass &lt;code&gt;--default(…)&lt;/code&gt; to &lt;code&gt;--value(…)&lt;/code&gt; and &lt;code&gt;--modifier(…)&lt;/code&gt; when a utility should work with or without a value:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@utility&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; tab-* &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  tab-size: --value(integer, &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;--default(4)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now the bare &lt;code&gt;tab&lt;/code&gt; utility can fall back to &lt;code&gt;4&lt;/code&gt;, while &lt;code&gt;tab-2&lt;/code&gt; still resolves to &lt;code&gt;2&lt;/code&gt;:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;tab-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;pre&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Generated CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.tab&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  tab-size&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.tab-2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  tab-size&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;That makes it easier to define APIs where the bare utility does the obvious thing, while still supporting explicit values for the same utility family.&lt;/p&gt;
&lt;p&gt;It&#39;s a small thing, but it lets plugin authors and anyone writing custom utilities create APIs that feel a lot more like the ones we ship in the framework itself.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So that&#39;s Tailwind CSS v4.2 and v4.3!&lt;/p&gt;
&lt;p&gt;Update to the latest version using npm and start playing with it today:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using the Tailwind CLI&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/cli@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using Vite&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/vite@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using PostCSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/postcss@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using webpack&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/webpack@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Try the new stuff and let us know what you run into. Just remember a tab size over 4 is a crime and may result in the suspension of your software engineering license.&lt;/p&gt;</description><link>https://tailwindcss.com/blog/tailwindcss-v4-3</link><guid isPermaLink="false">Tailwind CSS v4.3: Scrollbars, new colors, and more</guid><pubDate>Fri, 08 May 2026 20:00:00 GMT</pubDate><author>Adam Wathan, Robin Malfait</author><enclosure url="https://tailwindcss.com/api/og?path=/blog/tailwindcss-v4-3" type="image/jpeg"></enclosure></item><item><title>Vanilla JavaScript support for Tailwind Plus</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Tailwind Plus Elements&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;806&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero.0l6obuwm0seky.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero.0l6obuwm0seky.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero.0l6obuwm0seky.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There are a lot of UI blocks in Tailwind Plus that need JavaScript to really be useful, like dialogs, dropdowns, command palettes, and more. And unless you&#39;re a React or Vue user, using those UI blocks has always meant writing all of that tricky JavaScript yourself.&lt;/p&gt;
&lt;p&gt;Well today that finally changes — &lt;strong&gt;every UI block in Tailwind Plus is now fully functional, accessible, and interactive&lt;/strong&gt;, including the plain HTML examples.&lt;/p&gt;
&lt;p&gt;Now you can use any &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/elements/dropdowns&quot;&gt;dropdown&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/navigation/command-palettes&quot;&gt;command palette&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/modal-dialogs&quot;&gt;dialog&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/drawers&quot;&gt;drawer&lt;/a&gt;, and more in any project you&#39;re working on — no JavaScript framework required.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;no-framework-required&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus#no-framework-required&quot; class=&quot;anchor&quot;&gt;No framework required&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To pull this off, we built &lt;code&gt;@tailwindplus/elements&lt;/code&gt; — a library we&#39;re releasing exclusively for &lt;a href=&quot;https://tailwindcss.com/plus&quot;&gt;Tailwind Plus&lt;/a&gt; customers.&lt;/p&gt;
&lt;p&gt;Elements is a collection of headless &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements&quot;&gt;custom elements&lt;/a&gt; that wrap up all of the complex behavior needed to build custom interactive UIs using just HTML, and can be styled any way you like using utility classes or custom CSS.&lt;/p&gt;
&lt;p&gt;Instead of being coupled to a specific JavaScript framework, these custom elements work anywhere you can use a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;index.html&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;https://cdn.jsdelivr.net/npm/@tailwindplus/elements@1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here&#39;s what it look like to build a &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/elements/dropdowns#component-f8a14da22f26a67757b19f2fe3ca00ed&quot;&gt;custom dropdown&lt;/a&gt; menu with Elements:&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; class=&quot;aspect-[1536/804] object-cover&quot; src=&quot;https://assets.tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus/intro-video.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dropdown&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;relative inline-block text-left&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;inline-flex w-full justify-center gap-x-1.5 rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 shadow-xs ring-1 ring-gray-300 ring-inset hover:bg-gray-50&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    Options&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;-mr-1 size-5 text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; anchor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;bottom end&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;w-56 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black/5 transition transition-discrete [--anchor-gap:--spacing(2)] focus:outline-hidden data-closed:scale-95 data-closed:transform data-closed:opacity-0 data-enter:duration-100 data-enter:ease-out data-leave:duration-75 data-leave:ease-in&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;py-1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 text-sm text-gray-700 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Account settings&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 text-sm text-gray-700 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Support&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 text-sm text-gray-700 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;License&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; action&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; method&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block w-full px-4 py-2 text-left text-sm text-gray-700 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Sign out&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dropdown&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And here&#39;s what it looks like to build a &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/forms/select-menus#component-e0f6280e5501d69e188768909fda485e&quot;&gt;custom select&lt;/a&gt;:&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus/select.mp4&quot; alt=&quot;Select&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;select&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block text-sm/6 font-medium text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Assigned to&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-select&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;select&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;selected&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;4&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-2 block&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid w-full cursor-default grid-cols-1 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-selectedcontent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-selectedcontent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 16 16&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-start-1 row-start-1 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;      &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; anchor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;bottom start&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;max-h-60 w-(--button-width) [--anchor-gap:--spacing(1)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;group/option relative block focus:bg-indigo-600 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex items-center&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;inline-block size-2 shrink-0 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;ml-3 block group-aria-selected/option:font-semibold ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;          Wade Cooper&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;sr-only&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; is online&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;group-not-aria-selected/option:hidden group-focus/option:text-white in-[el-selectedcontent]:hidden ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-5&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;            &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-select&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;See those custom HTML elements like &lt;code&gt;&amp;lt;el-select&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;el-options&amp;gt;&lt;/code&gt;? Those are the secret sauce that make everything work, including automatic ARIA attribute management, focus handling, keyboard support, and more.&lt;/p&gt;
&lt;p&gt;You can even build something as sophisticated as a custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/navigation/command-palettes#component-5e859372042e1b3b308dc51f3ac8bad6&quot;&gt;command palette&lt;/a&gt; with Elements, without having to write any of your own JavaScript:&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; class=&quot;aspect-[1536/912] object-cover&quot; src=&quot;https://assets.tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus/command-palette-demo.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; command&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;show-modal&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; commandfor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;dialog&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;rounded-md bg-white/80 px-2.5 py-1.5 text-sm font-semibold text-gray-900 hover:bg-white/90&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  Open command palette&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;dialog&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;backdrop:bg-transparent&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dialog-backdrop&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;fixed inset-0 bg-gray-500/25 transition-opacity data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; tabindex&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;fixed inset-0 w-screen overflow-y-auto p-4 focus:outline-none sm:p-6 md:p-20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dialog-panel&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mx-auto block max-w-3xl transform overflow-hidden rounded-xl bg-white shadow-2xl ring-1 ring-black/5 transition-all data-closed:scale-95 data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-palette&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;divide-y divide-gray-100&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid grid-cols-1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; autofocus&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; placeholder&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Search...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-start-1 row-start-1 h-12 w-full pr-4 pl-11 text-base text-gray-900 outline-hidden placeholder:text-gray-400 sm:text-sm&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;pointer-events-none col-start-1 row-start-1 ml-4 size-5 self-center text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.452 4.391l3.328 3.329a.75.75 0 1 1-1.06 1.06l-3.329-3.328A7 7 0 0 1 2 9Z&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex transform-gpu divide-x divide-gray-100&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;max-h-96 min-w-0 flex-auto scroll-py-4 overflow-y-auto px-6 py-4&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-list&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;-mx-2 block text-sm text-gray-700&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-defaults&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mx-2 mt-2 mb-4 text-xs font-semibold text-gray-500&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Recent searches&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm text-gray-700&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;person-suggestion-6&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;group flex cursor-default items-center rounded-md p-2 select-none focus:outline-hidden aria-selected:bg-gray-100 aria-selected:text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-6 flex-none rounded-full&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;ml-3 flex-auto truncate&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Tom Cook&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;ml-3 hidden size-5 flex-none text-gray-400 group-aria-selected:block&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;                   &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-defaults&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-group&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;sm:h-96&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;person-1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;group flex cursor-default items-center rounded-md p-2 select-none focus:outline-hidden aria-selected:bg-gray-100 aria-selected:text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-6 flex-none rounded-full&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;ml-3 flex-auto truncate&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Leslie Alexander&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;ml-3 hidden size-5 flex-none text-gray-400 group-aria-selected:block&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;                  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-group&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-list&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-no-results&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-6 py-14 text-center text-sm sm:px-14&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 24 24&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; stroke&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; stroke-width&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;1.5&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mx-auto size-6 text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; stroke-linecap&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;round&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; stroke-linejoin&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;round&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-4 font-semibold text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;No people found&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-2 text-gray-500&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;We couldn&#39;t find anything with that term. Please try again.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-no-results&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-preview&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;person-1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;h-96 w-1/2 flex-none flex-col divide-y divide-gray-100 overflow-y-auto sm:flex&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex-none p-6 text-center&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mx-auto size-16 rounded-full&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-3 font-semibold text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Leslie Alexander&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm/6 text-gray-500&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Co-Founder / CEO&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex flex-auto flex-col justify-between p-6&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dl&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid grid-cols-1 gap-x-6 gap-y-3 text-sm text-gray-700&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-end-1 font-semibold text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Phone&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;1-493-747-9031&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-end-1 font-semibold text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;truncate&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-indigo-600 underline&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;https://example.com&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-end-1 font-semibold text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Email&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;truncate&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mailto:lesliealexander@example.com&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-indigo-600 underline&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;lesliealexander@example.com&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dd&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dl&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;                &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-6 w-full rounded-md bg-indigo-600 px-3 py-2 text-sm font-semibold text-white shadow-xs hover:bg-indigo-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Send message&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-preview&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;            &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-command-palette&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dialog-panel&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;To support all of the UI blocks in Tailwind Plus, we&#39;re shipping the following primitives in this first release of Elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/autocomplete&quot;&gt;Autocomplete&lt;/a&gt; — for building things like custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/forms/comboboxes&quot;&gt;Comboboxes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/command-palette&quot;&gt;Command palette&lt;/a&gt; — for building custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/navigation/command-palettes&quot;&gt;Command Palettes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/dialog&quot;&gt;Dialog&lt;/a&gt; — for building custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/modal-dialogs&quot;&gt;Modal Dialogs&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/overlays/drawers&quot;&gt;Drawers&lt;/a&gt;, and more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/disclosure&quot;&gt;Disclosure&lt;/a&gt; — for building collapsible &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/marketing/sections/faq-sections#component-8699d80b13ef524eb573e54b4d4b89d1&quot;&gt;FAQs&lt;/a&gt;, mobile menus in &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/navigation/navbars&quot;&gt;Navbars&lt;/a&gt;, and more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/dropdown-menu&quot;&gt;Dropdown menu&lt;/a&gt; — for building custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/elements/dropdowns&quot;&gt;Dropdowns&lt;/a&gt;, of course.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/popover&quot;&gt;Popover&lt;/a&gt; — for building custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/marketing/elements/flyout-menus&quot;&gt;Flyout Menus&lt;/a&gt; and more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/select&quot;&gt;Select&lt;/a&gt; — for building custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/forms/select-menus#component-8298198b136afab3bb19391ae716077f&quot;&gt;Select Menus&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/tabs&quot;&gt;Tabs&lt;/a&gt; — for building custom tabs, like we use in custom &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/forms/textareas#component-532d35bcb49664c16a4f877d71658b12&quot;&gt;Textareas&lt;/a&gt; and &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/ecommerce/components/product-overviews#component-13a89c2dc50a31afd66541dc28fa3c13&quot;&gt;Product Overviews&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&#39;re a Tailwind Plus customer, head over to the brand new &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/elements&quot;&gt;Elements documentation&lt;/a&gt; to learn more about how everything works and check out some examples.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;leveraging-the-modern-web&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus#leveraging-the-modern-web&quot; class=&quot;anchor&quot;&gt;Leveraging the modern web&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We leaned on a lot of modern platform features to keep Elements as light and native as a possible.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements&quot;&gt;Custom elements&lt;/a&gt; as a cross-platform component abstraction.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/popover&quot;&gt;The &lt;code&gt;popover&lt;/code&gt; attribute&lt;/a&gt; to manage overlays and popovers with automatic top-layer rendering together with &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforetoggle_event&quot;&gt;&lt;code&gt;beforetoggle&lt;/code&gt;&lt;/a&gt; to control transitions.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement&quot;&gt;Native &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; elements&lt;/a&gt; for focus trapping and top-layer rendering.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API&quot;&gt;Invoker commands&lt;/a&gt; to declaratively manage interactive elements, like toggling a custom disclosure.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals&quot;&gt;&lt;code&gt;ElementInternals&lt;/code&gt;&lt;/a&gt; to make our custom form controls work like native form controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We also bundle any necessary polyfills for these features to make sure that Elements works in all of the same &lt;a href=&quot;https://tailwindcss.com/docs/compatibility#browser-support&quot;&gt;browsers supported by Tailwind CSS v4.0&lt;/a&gt;. This means Elements will only get smaller as these modern platform features become more widely available.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;components-that-work-everywhere&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus#components-that-work-everywhere&quot; class=&quot;anchor&quot;&gt;Components that work everywhere&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Since HTML is the lowest common denominator between all web frameworks, Elements makes it possible for all of HTML-only UI blocks in Tailwind Plus to work literally anywhere.&lt;/p&gt;
&lt;p&gt;Here&#39;s one of our &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/forms/comboboxes&quot;&gt;Combobox&lt;/a&gt; examples wired up with two-way binding in &lt;a href=&quot;https://svelte.dev/&quot;&gt;Svelte&lt;/a&gt;:&lt;/p&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Combobox.svelte&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  let&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; $state&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; handleSubmit&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;    alert&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;`Selected: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; onsubmit&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;handleSubmit&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;autocomplete&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block text-sm/6 font-medium text-gray-900&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Assigned to&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-autocomplete&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;relative mt-2 block&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; bind:value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;{input}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;autocomplete&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block w-full rounded-md ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;absolute inset-y-0 right-0 flex ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-5 text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M5.22 8.22a.75.75 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; anchor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;bottom end&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;max-h-60 w-(--input-width) [--anchor-gap:--spacing(1)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Leslie Alexander&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block truncate aria-selected:bg-indigo-600 aria-selected:text-white ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Leslie Alexander&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-autocomplete&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Submit&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Or here&#39;s a custom select in &lt;a href=&quot;https://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt; that&#39;s included in form submissions, just like a native form control:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;app/controllers/orders_controller.rb&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; OrdersController&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; ApplicationController&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  def&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; new&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;cars&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; Car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;all&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;selected_car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;cars&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;first&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  end&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  def&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; create&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;    car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;find&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;params&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;[:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;car_id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;])&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    flash&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;[:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;notice&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;Selected car: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;#{&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    redirect_to root_path&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  end&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;end&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;app/views/orders/new.html.erb&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; form_with &lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;do&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;car_id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;Select model:&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-select&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;car_id&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;car_id&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;selected_car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid w-full cursor-default grid-cols-1 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-selectedcontent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-start-1 row-start-1 truncate pr-6&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;selected_car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-selectedcontent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 16 16&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-start-1 row-start-1 size-5 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M5.22 10.22a.75.75 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; anchor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;bottom end&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;cars&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; do&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block truncate font-normal group-aria-selected/option:font-semibold&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; car&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex group-not-aria-selected/option:hidden group-focus/option:text-white in-[el-selectedcontent]:hidden ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-5&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;              &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M16.704 4.153a.75.75 0 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-option&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; end&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-options&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;el-select&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;%=&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; form&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;submit&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;Place order&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; end&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; %&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can even use Elements in &lt;a href=&quot;https://react.dev/&quot;&gt;React&lt;/a&gt; instead of using a React-only library like Headless UI or React Aria if you want:&lt;/p&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;next/link&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;el-dropdown&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;relative inline-block text-left&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;inline-flex w-full justify-center ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        Menu&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; viewBox&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;0 0 20 20&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;currentColor&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;-mr-1 size-5 text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; d&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;M5.22 8.22a.75.75 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; clip-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; fill-rule&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;evenodd&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;el-menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; anchor&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;bottom end&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;transition transition-discrete [--anchor-gap:--spacing(2)] focus:outline-hidden data-closed:scale-95 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;py-1&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Home&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/about&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;About&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/faq&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;block px-4 py-2 focus:bg-gray-100 focus:text-gray-900 focus:outline-hidden ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;FAQ&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Link&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;el-menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;el-dropdown&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;try-it-out-today&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus#try-it-out-today&quot; class=&quot;anchor&quot;&gt;Try it out today&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;All of the updated UI blocks and the new Elements library are available now to all &lt;a href=&quot;https://tailwindcss.com/plus&quot;&gt;Tailwind Plus&lt;/a&gt; customers.&lt;/p&gt;
&lt;p&gt;Check out UI block categories like &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/elements/dropdowns&quot;&gt;Dropdowns&lt;/a&gt; and &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/application-ui/navigation/command-palettes&quot;&gt;Command Palettes&lt;/a&gt; to play with these updated interactive examples yourself, and explore the new &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks/documentation/elements&quot;&gt;Elements documentation&lt;/a&gt; to learn how it all works and how to customize things for your projects.&lt;/p&gt;
&lt;p&gt;We can&#39;t wait to see what you&#39;ll build with this stuff!&lt;/p&gt;</description><link>https://tailwindcss.com/blog/vanilla-js-support-for-tailwind-plus</link><guid isPermaLink="false">Vanilla JavaScript support for Tailwind Plus</guid><pubDate>Fri, 25 Jul 2025 14:30:00 GMT</pubDate><author>Philipp Spiess, Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.15sf387_eb1me.jpg" type="image/jpeg"></enclosure></item><item><title>Compass: A starter kit for online courses</title><description>&lt;p&gt;I&#39;ve been itching to get back into screencasting and teaching lately, so a couple of months ago I put together this free &lt;a href=&quot;https://tailwindcss.com/build-uis-that-dont-suck&quot;&gt;Build UIs that don&#39;t suck&lt;/a&gt; mini-course. People seemed to like it and now I want to do some bigger video projects, but there was a problem.&lt;/p&gt;
&lt;p&gt;I am a software developer.&lt;/p&gt;
&lt;p&gt;And as a software developer, much like I need to write my own static site generator before I can build my own personal website, I needed to build my own course platform before I could even think about putting together a video course.&lt;/p&gt;
&lt;p&gt;Well fast-forward six weeks later and we just released &lt;a href=&quot;https://tailwindcss.com/plus/templates/compass&quot;&gt;Compass&lt;/a&gt;, a starter kit we designed with Tailwind CSS and Next.js for publishing your own online course.&lt;/p&gt;
&lt;a href=&quot;https://tailwindcss.com/plus/templates/compass&quot;&gt;&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Compass&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1042&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpreview-01.0d2ssoqiidkeq.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpreview-01.0d2ssoqiidkeq.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fpreview-01.0d2ssoqiidkeq.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/plus/templates/compass/preview&quot;&gt;live preview&lt;/a&gt; as always for the full experience.&lt;/p&gt;
&lt;p&gt;We had a lot of fun working on this one, and got to play with a bunch of new tools and technologies and solve some interesting problems.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;picture-in-picture-video&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2025-05-14-compass-course-starter-kit#picture-in-picture-video&quot; class=&quot;anchor&quot;&gt;Picture-in-picture video&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You might not have seen it before but most modern browsers have &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Picture-in-Picture_API&quot;&gt;native Picture-in-Picture support&lt;/a&gt;. These APIs let you take a video and pop it out into a separate window that the user can move around and resize while still browsing the site.&lt;/p&gt;
&lt;p&gt;We had this idea for Compass where if you started to play a course video and scrolled down the page, the video would move to the bottom right of the screen so you could still watch it while reading the page content.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2025-05-14-compass-course-starter-kit/compass-pip-demo.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We were hoping to use the Picture-in-Picture APIs for this, but it turns out you can&#39;t passively trigger them on scroll &lt;em&gt;(for privacy/security reasons I guess?)&lt;/em&gt; — the user has to actually click something, similar to the clipboard APIs.&lt;/p&gt;
&lt;p&gt;We ended up rolling our own simple thing instead, using &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API&quot;&gt;IntersectionObserver&lt;/a&gt;, video events, and a bit of state to detect when the video was playing and offscreen, and added data attributes to the &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; element to so we could target them with utility classes:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;video-player.tsx&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;video&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  data-offscreen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isOffscreen&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; undefined&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  data-playing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isPlaying&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; undefined&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;data-offscreen:data-playing:fixed&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;data-offscreen:data-playing:right-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;data-offscreen:data-playing:bottom-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I love using data attributes for this sort of thing, find the code reads a lot more like standard Tailwind stuff compared to a bunch of ternaries and conditional logic in JavaScript.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;parsing-vtt-files-into-transcripts&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2025-05-14-compass-course-starter-kit#parsing-vtt-files-into-transcripts&quot; class=&quot;anchor&quot;&gt;Parsing VTT files into transcripts&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There&#39;s a section in Compass for interviews, which each include a video at the top of the page but also a pretty custom transcript UI below:&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Stylized transcript of an interview between Tom Harris and Annie King&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1176&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftranscript.03zhu23nt8595.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftranscript.03zhu23nt8595.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftranscript.03zhu23nt8595.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;At first we weren&#39;t totally sure how we should approach this. Our first idea was to just write some React components for these pieces and throw the content directly into an MDX file, but it felt sort of unrealistic to expect anyone to ever author their transcripts in this totally custom format.&lt;/p&gt;
&lt;p&gt;Then I had the idea to use a standard caption file format, like &lt;a href=&quot;https://en.wikipedia.org/wiki/SubRip&quot;&gt;SRT&lt;/a&gt;. The problem was that for our needs, we needed to encode the current speaker (Tom or Annie in the screenshot above), and SRT has no standardized way of encoding that information in the file.&lt;/p&gt;
&lt;p&gt;I did some more research and eventually landed on &lt;a href=&quot;https://en.wikipedia.org/wiki/WebVTT&quot;&gt;WebVTT&lt;/a&gt;, which is similar to SRT but does support speaker information, and is conveniently designed for the web.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;annie-king.vtt&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-full *:*:whitespace-normal&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;WEBVTT&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;00:00.000 --&amp;gt; 00:20.000&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;lt;v Tom Harris&amp;gt;Hello fellow passengers, welcome to the Compass podcast. Today, we have a special guest, Annie King. She&#39;s the author of The Inevitable You: How to Embrace Your Path and Succeed with Relentless Precision. Annie, welcome to the show.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;00:20.000 --&amp;gt; 00:35.000&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;lt;v Annie King&amp;gt;Thank you! I&#39;m so happy to be here. And thanks for sending me the questions in advance — I&#39;m really excited to share some of the ideas from the book with your viewers. I think we&#39;re going to have a lot of fun unpacking what it means to truly embrace your path.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;00:35.000 --&amp;gt; 00:45.000&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;lt;v Tom Harris&amp;gt;Absolutely! I want to get into your book, but first I have to ask — what was it like growing up in a household that treated organization almost like...a sport?&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So we wired things up to parse the transcript data from a &lt;code&gt;.vtt&lt;/code&gt; file, and then map over that data to render it as a custom UI with React:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;src/interview/[slug]/page.tsx&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;transcript&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; speaker&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; text&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;col-span-2 grid grid-cols-subgrid items-baseline&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;TimestampButton&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; videoId&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;video&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;justify-self-end&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm/7 font-semibold text-gray-950 dark:text-white&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;speaker&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; index&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-2 text-sm/7 whitespace-pre-wrap text-gray-700 dark:text-gray-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;            {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        ))&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  ))&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Turned out pretty cool — I can imagine someone just generating a transcript in VTT format using AI, throwing it into the project and it&#39;ll automatically be rendered in a nice custom UI.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;extending-markdown-images-for-dark-mode-and-layout-shift&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2025-05-14-compass-course-starter-kit#extending-markdown-images-for-dark-mode-and-layout-shift&quot; class=&quot;anchor&quot;&gt;Extending Markdown images for dark mode and layout shift&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The example content we came up with for Compass includes a lot of diagrams that we wanted to adapt between light and dark mode.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Example of a diagram that uses different colors for light and dark mode&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;760&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flight-dark-diagram.0.g-v.gc9xyed.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flight-dark-diagram.0.g-v.gc9xyed.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flight-dark-diagram.0.g-v.gc9xyed.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can do this sort of thing a ton of different ways (the &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; tag supports it natively for example), but we really wanted to keep the content files feeling as much like vanilla Markdown as possible.&lt;/p&gt;
&lt;p&gt;So we came up with this idea of a &lt;code&gt;{scheme}&lt;/code&gt; placeholder in the image URL that we replace with &lt;code&gt;light&lt;/code&gt; or &lt;code&gt;dark&lt;/code&gt; dynamically, loading the correct image based on the user&#39;s color scheme:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;##&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt; The Myth of Free Will&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;Neurological Proof&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;/img/neuro-proof.{scheme}.png&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Your brain makes decisions before you are even aware of them.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now the underlying image component will automatically render &lt;code&gt;neuro-proof.light.png&lt;/code&gt; or &lt;code&gt;neuro-proof.dark.png&lt;/code&gt; depending on the current color scheme. And if you just want to use the same image in both, just don&#39;t include &lt;code&gt;{scheme}&lt;/code&gt; in the URL at all.&lt;/p&gt;
&lt;p&gt;We also wanted to avoid layout shift in the content, which you can do pretty easily these days by ensuring you give your images &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt; attributes so the browser can compute the aspect ratio and reserve space for the image when it loads.&lt;/p&gt;
&lt;p&gt;There&#39;s no standard way to express this in Markdown&#39;s image syntax, but after a bit of research we discovered some precedent in &lt;a href=&quot;https://help.obsidian.md/syntax#External+images&quot;&gt;Obsidian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Obsidian tacks the image dimensions on to the alt text, like this:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;##&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt; The Myth of Free Will&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;![&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;Neurological Proof|2000x990&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;](&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;/img/neuro-proof.{scheme}.png&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Your brain makes decisions before you are even aware of them.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So we used a custom MDX component to pull out the dimensions using the same format, and add those to the image to make sure there&#39;s no layout shift as the content loads.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;So there you go — that&#39;s Compass! As always it&#39;s a free update for anyone with a &lt;a href=&quot;https://tailwindcss.com/plus&quot;&gt;Tailwind Plus&lt;/a&gt; license, so go and &lt;a href=&quot;https://tailwindcss.com/plus/templates/compass&quot;&gt;download the codebase&lt;/a&gt;, poke around, and have fun with it.&lt;/p&gt;
&lt;p&gt;If you don&#39;t already have a Tailwind Plus license, think about getting one! Picking one up is the best way to support our work on Tailwind CSS and there&#39;s a ton of useful stuff in there.&lt;/p&gt;
&lt;p&gt;Looking forward to using this template for some upcoming projects myself in the next couple of months!&lt;/p&gt;</description><link>https://tailwindcss.com/blog/2025-05-14-compass-course-starter-kit</link><guid isPermaLink="false">Compass: A starter kit for online courses</guid><pubDate>Wed, 14 May 2025 19:00:00 GMT</pubDate><author>Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.001_0~kji6t6o.jpg" type="image/jpeg"></enclosure></item><item><title>Tailwind CSS v4.1: Text shadows, masks, and tons more</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/HTFHoA12MJk&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; class=&quot;aspect-video w-full border-0&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I wasn&#39;t sure it would ever happen but we did it — we released a version of Tailwind CSS that includes &lt;code&gt;text-shadow&lt;/code&gt; utilities.&lt;/p&gt;
&lt;p&gt;Tailwind CSS v4.1 is here and it&#39;s packed with new utilities, variants, and developer experience improvements that will help you &lt;em&gt;(or your LLM, you coward)&lt;/em&gt; build even better interactive experiences.&lt;/p&gt;
&lt;p&gt;Here&#39;s all the best stuff we got into this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#new-text-shadow-utilities&quot;&gt;New &lt;code&gt;text-shadow-*&lt;/code&gt; utilities&lt;/a&gt; — only about twenty years after they were first supported by a browser.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#mask-elements-with-the-mask-utilities&quot;&gt;Mask elements with the &lt;code&gt;mask-*&lt;/code&gt; utilities&lt;/a&gt; — use images and gradients to mask elements with new ergonomic APIs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#improved-compatibility-with-older-browsers&quot;&gt;Improved compatibility with older browsers&lt;/a&gt; — we&#39;ve made things degrade way more gracefully for older browsers, while still taking advantage of modern features in browsers that support them.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#fine-grained-text-wrapping-with-overflow-wrap&quot;&gt;Fine-grained text wrapping with &lt;code&gt;overflow-wrap&lt;/code&gt;&lt;/a&gt; — defend the integrity of your layouts from even the longest German words your users will throw at you.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#colored-drop-shadow-support&quot;&gt;Colored &lt;code&gt;drop-shadow&lt;/code&gt; support&lt;/a&gt; — can&#39;t really remember why we didn&#39;t have these before but we do now.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#target-input-devices-with-pointer-and-any-pointer-&quot;&gt;Target input devices with &lt;code&gt;pointer-*&lt;/code&gt; and &lt;code&gt;any-pointer-*&lt;/code&gt;&lt;/a&gt; — tweak your design for touch devices explicitly instead of relying on viewport size.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#align-items-to-the-last-baseline&quot;&gt;Align items to the last baseline&lt;/a&gt; — align flex or grid items to the baseline of the last line of text using the new &lt;code&gt;items-baseline-last&lt;/code&gt; and &lt;code&gt;self-baseline-last&lt;/code&gt; utilities.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#keep-content-visible-with-safe-alignment&quot;&gt;Keep content visible with &lt;code&gt;safe&lt;/code&gt; alignment&lt;/a&gt; — center content in flex and grid layouts without it disappearing when there&#39;s not enough space.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#ignore-specific-paths-with-source-not&quot;&gt;Ignore specific paths with &lt;code&gt;@source not&lt;/code&gt;&lt;/a&gt; — explicitly ignore irrelevant large directories and speed up your builds even more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#safelist-specific-utilities-with-source-inline&quot;&gt;Safelist specific utilities with &lt;code&gt;@source inline(…)&lt;/code&gt;&lt;/a&gt; — force Tailwind to include classes that aren&#39;t in your source files.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#a-bunch-of-other-new-variants&quot;&gt;A bunch of other new variants&lt;/a&gt; — including &lt;code&gt;noscript&lt;/code&gt;, &lt;code&gt;user-valid&lt;/code&gt;, &lt;code&gt;inverted-colors&lt;/code&gt;, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&#39;s all the cool stuff, but there&#39;s a few other little things hiding in the &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss/releases/tag/v4.1.0&quot;&gt;release notes&lt;/a&gt; that you might want to check out too.&lt;/p&gt;
&lt;p&gt;Upgrade your projects by installing the latest version of &lt;code&gt;tailwindcss&lt;/code&gt; from npm:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using the Tailwind CLI&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/cli@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using Vite&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/vite@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using PostCSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/postcss@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-text-shadow-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#new-text-shadow-utilities&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;text-shadow-*&lt;/code&gt; utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve been threatening to add text shadows for at least the last six years and today they are finally here.&lt;/p&gt;
&lt;p&gt;We&#39;ve added five text shadows to the default theme, from &lt;code&gt;text-shadow-2xs&lt;/code&gt; to &lt;code&gt;text-shadow-lg&lt;/code&gt;. They are particularly useful for making headings stand out against a busy background:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;relative grid items-center justify-around gap-4 bg-linear-45 from-indigo-400 via-purple-500 to-pink-500 px-6 py-14 text-center text-2xl font-semibold text-white&quot;&gt;&lt;p class=&quot;relative text-shadow-2xs&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-xs&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-sm&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-md&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-lg&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-2xs&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-xs&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-sm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-md&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-lg&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can change the color of the shadow using the &lt;code&gt;text-shadow-&lt;var&gt;&amp;lt;color&amp;gt;&lt;/var&gt;&lt;/code&gt; utilities. For instance, you can create a sort of embossed effect by using a small white shadow on dark text:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;relative grid h-48 place-items-center&quot;&gt;&lt;div class=&quot;-mr-10 flex gap-4 max-sm:-mr-32&quot;&gt;&lt;button class=&quot;relative rounded-full bg-linear-to-b from-sky-300 to-sky-400 to-70% px-4 py-2 text-sm font-semibold text-sky-950 shadow-md ring inset-shadow-2xs ring-sky-500 inset-shadow-white/20 text-shadow-2xs text-shadow-sky-300 dark:ring-sky-500/50&quot;&gt;Book a demo&lt;div class=&quot;absolute top-1/2 -left-6/5 size-42 -translate-y-1/2 overflow-hidden rounded-full bg-white/20 p-2 shadow-lg ring-2 ring-black/5 backdrop-blur-sm dark:ring-black/10&quot;&gt;&lt;div class=&quot;grid size-full items-center overflow-hidden rounded-full bg-linear-to-b from-sky-300 to-sky-400 to-50% px-5 pb-2 text-[70px] font-semibold whitespace-nowrap text-sky-900 inset-ring-2 inset-ring-black/10 text-shadow-[0px_5px_0px_var(--tw-text-shadow-color)] text-shadow-sky-300&quot;&gt;Book a demo&lt;/div&gt;&lt;/div&gt;&lt;/button&gt;&lt;button class=&quot;relative rounded-full bg-linear-to-b from-white/10 to-white/20 to-70% px-4 py-2 text-sm font-semibold text-gray-950 shadow-md ring inset-shadow-2xs ring-black/20 inset-shadow-white/10 dark:text-white dark:text-shadow-2xs&quot;&gt;See pricing&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sky-950 text-shadow-2xs &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-sky-300&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Book a demo&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-gray-950 dark:text-white dark:text-shadow-2xs ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;See pricing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;If you just want to adjust the opacity of a text shadow without changing the color, you can slap an opacity modifier directly on text shadow size utilities like &lt;code&gt;text-shadow-lg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For example, &lt;code&gt;text-shadow-lg/50&lt;/code&gt; is the same as setting &lt;code&gt;text-shadow-lg&lt;/code&gt; and &lt;code&gt;text-shadow-black/50&lt;/code&gt; at the same time:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;relative grid items-center justify-around gap-4 bg-linear-45 from-indigo-400 via-sky-400 to-emerald-400 px-6 py-14 text-center text-2xl font-semibold text-white&quot;&gt;&lt;p class=&quot;relative text-shadow-lg&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-lg/20&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;p class=&quot;relative text-shadow-lg/30&quot;&gt;The quick brown fox jumps over the lazy dog.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-shadow-lg ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-lg/20&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;text-shadow-lg/30&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The quick brown fox...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://tailwindcss.com/docs/text-shadow&quot;&gt;&lt;code&gt;text-shadow&lt;/code&gt;&lt;/a&gt; docs for more details.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;mask-elements-with-the-mask-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#mask-elements-with-the-mask-utilities&quot; class=&quot;anchor&quot;&gt;Mask elements with the &lt;code&gt;mask-*&lt;/code&gt; utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the coolest features of modern CSS is the ability to use images and gradients as masks - basically using the opacity of an image to hide certain parts of an element:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;mx-auto flex items-center p-16 max-sm:p-6&quot;&gt;&lt;img src=&quot;https://tailwindcss.com/_next/static/media/keyboard-light.0q9x0pqkyj1_x.png&quot; class=&quot;aspect-square max-h-72 w-full mask-radial-[100%_200%] mask-radial-from-transparent mask-radial-from-15% mask-radial-to-black mask-radial-to-60% mask-radial-at-right object-cover object-top-left dark:hidden&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;img src=&quot;https://tailwindcss.com/_next/static/media/keyboard-dark.1885yocvsdopr.png&quot; class=&quot;hidden aspect-square max-h-72 w-full mask-radial-[100%_200%] mask-radial-from-transparent mask-radial-from-15% mask-radial-to-black mask-radial-to-60% mask-radial-at-right object-cover object-top-left dark:block&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;font-medium max-sm:-mx-3&quot;&gt;&lt;p class=&quot;font-mono text-xs text-blue-500 uppercase dark:text-blue-400&quot;&gt;Speed&lt;/p&gt;&lt;p class=&quot;mt-2 text-base whitespace-nowrap text-gray-700 dark:text-gray-300&quot;&gt;Built for power users&lt;/p&gt;&lt;p class=&quot;mt-1 text-sm leading-relaxed text-balance text-gray-500&quot;&gt;Work faster than ever with our keyboard shortcuts&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mx-auto flex items-center p-16 max-sm:p-8&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;    src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/img/keyboard.png&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;    class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-from-transparent&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-from-15%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-to-black&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-to-55%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-at-right&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;font-medium&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;font-mono text-xs text-blue-500 uppercase dark:text-blue-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Speed&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-2 text-base text-gray-700 dark:text-gray-300&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Built for power users&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-1 text-sm leading-relaxed text-balance text-gray-500&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      Work faster than ever with our keyboard shortcuts&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Because you can use any &lt;code&gt;background-image&lt;/code&gt; as a mask, the logical thing to do was to copy the &lt;code&gt;bg-*&lt;/code&gt; utilities so they share the same API. The problem with that approach is you often want to combine multiple masks together and the &lt;code&gt;bg-*&lt;/code&gt; utilities are not composable.&lt;/p&gt;
&lt;p&gt;So instead, we created a new set of utilities to work with &lt;code&gt;mask-image&lt;/code&gt; that are composable and purpose-built for the masking use case. For example, you can use utilities like &lt;code&gt;mask-b-from-&lt;var&gt;&amp;lt;value&amp;gt;&lt;/var&gt;&lt;/code&gt; and &lt;code&gt;mask-t-to-&lt;var&gt;&amp;lt;value&amp;gt;&lt;/var&gt;&lt;/code&gt; to add a linear gradient mask to a single side of an element:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;grid grid-cols-1 items-end gap-x-2 gap-y-8 p-8 text-center font-mono text-xs font-medium text-gray-500 max-sm:justify-between max-sm:px-2 sm:grid-cols-2 dark:text-gray-400&quot;&gt;&lt;div class=&quot;flex flex-col items-center gap-3&quot;&gt;&lt;p&gt;mask-t-from-50%&lt;/p&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-t-from-50% bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center gap-3&quot;&gt;&lt;p&gt;mask-r-from-30%&lt;/p&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-r-from-30% bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center gap-3&quot;&gt;&lt;p&gt;mask-l-from-50% mask-l-to-90%&lt;/p&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-l-from-50% mask-l-to-90% bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center gap-3&quot;&gt;&lt;p&gt;mask-b-from-20% mask-b-to-80%&lt;/p&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-b-from-20% mask-b-to-80% bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-t-from-50%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-r-from-30%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-l-from-50%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-l-to-90%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-b-from-20%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-b-to-80%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It&#39;s more natural to think about which side you want to mask, rather than trying to work out the exact gradient you need to use.&lt;/p&gt;
&lt;p&gt;The gradient mask utilities are also composable, so you can combine radial, conic and linear gradients together to create more complex masks:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid grid-cols-1 items-end gap-x-2 gap-y-8 p-8 text-center font-mono text-xs font-medium text-gray-500 max-sm:justify-between max-sm:px-2 sm:grid-cols-2 dark:text-gray-400&quot;&gt;&lt;div class=&quot;flex flex-col items-center&quot;&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-b-from-50% mask-radial-[50%_90%] mask-radial-from-80% mask-radial-at-bottom bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center&quot;&gt;&lt;div class=&quot;grid aspect-3/2 w-48 grid-cols-1&quot;&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg border text-black/10 dark:text-white/12.5 bg-size-[8px_8px] bg-top-left bg-[repeating-linear-gradient(315deg,currentColor_0,currentColor_1px,transparent_0,transparent_50%)]&quot;&gt;&lt;/div&gt;&lt;div class=&quot;col-start-1 row-start-1 rounded-lg bg-[url(https://images.unsplash.com/photo-1554629947-334ff61d85dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;ixlib=rb-1.2.1&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1000&amp;amp;h=1000&amp;amp;q=80)] mask-r-from-80% mask-b-from-80% mask-radial-from-70% mask-radial-to-85% mask-circle mask-radial-at-top-left bg-cover bg-center mask-no-repeat&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-b-from-50%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-[50%_90%]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-from-80%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-r-from-80%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-b-from-80%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-from-70%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;mask-radial-to-85%&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; bg-[url(/img/mountains.jpg)] ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Masking is a super powerful technique and there&#39;s a lot more to the API than we can cover here. For a full breakdown of the new utilities, check out the &lt;a href=&quot;https://tailwindcss.com/docs/mask-image&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;improved-compatibility-with-older-browsers&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#improved-compatibility-with-older-browsers&quot; class=&quot;anchor&quot;&gt;Improved compatibility with older browsers&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We went all-in on modern platform features with Tailwind CSS v4.0 to make the best framework we could, and give this version the longest shelf-life possible.&lt;/p&gt;
&lt;p&gt;Unfortunately some of those features degrade really poorly in older browsers, to the point where even basic things like colors and shadows might not render at all for someone visiting from an old iPhone or iPad that&#39;s stuck on Safari 15.&lt;/p&gt;
&lt;p&gt;For Tailwind CSS v4.1, we put a bunch of effort into coming up with and testing our own framework-specific fallbacks to make your sites render as best as possible in older browsers, even if some super modern things still don&#39;t behave quite the same.&lt;/p&gt;
&lt;div data-media=&quot;true&quot; class=&quot;dark:hidden&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Comparison between how Tailwind CSS v4.0 (left) and Tailwind CSS v4.1 (right) render in Safari 15.5. Tailwind CSS v4.0 fails to render some background gradients that are now visible in Tailwind CSS v4.1&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1365&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-light.0d52r_v1p07my.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-light.0d52r_v1p07my.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-light.0d52r_v1p07my.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div data-media=&quot;true&quot; class=&quot;hidden dark:block&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Comparison between how Tailwind CSS v4.0 (left) and Tailwind CSS v4.1 (right) render in Safari 15.5. Tailwind CSS v4.0 fails to render some background gradients that are now visible in Tailwind CSS v4.1&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1365&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-dark.0urdt2apkj0jv.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-dark.0urdt2apkj0jv.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsafari-15-dark.0urdt2apkj0jv.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here&#39;s a list of the things we&#39;ve managed to improve in this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Colors defined in &lt;code&gt;oklab&lt;/code&gt; now render in older versions of Safari&lt;/li&gt;
&lt;li&gt;Features that depend on custom properties defined with &lt;code&gt;@property&lt;/code&gt; (like shadows, transforms, gradients and more) now work in older versions of Safari and Firefox&lt;/li&gt;
&lt;li&gt;Colors using the opacity modifier now render with inlined fallbacks in older browsers&lt;/li&gt;
&lt;li&gt;Gradients using explicit interpolation methods fall back to the browser default when not supported&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tailwind CSS v4 is still &lt;em&gt;designed&lt;/em&gt; for modern browsers like Safari 16.4 and up and still depends on a lot of modern features for everything to work &lt;em&gt;perfectly&lt;/em&gt;, but at least now your sites will render and be usable in older browsers, even if in certain specific situations the odd shadow color be different.&lt;/p&gt;
&lt;p&gt;To learn everything you need to know about browser compatibility in Tailwind CSS v4, you can read the full &lt;a href=&quot;https://tailwindcss.com/docs/compatibility&quot;&gt;browser compatibility documentation&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;fine-grained-text-wrapping-with-overflow-wrap&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#fine-grained-text-wrapping-with-overflow-wrap&quot; class=&quot;anchor&quot;&gt;Fine-grained text wrapping with &lt;code&gt;overflow-wrap&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The new &lt;code&gt;overflow-wrap&lt;/code&gt; utilities let you control how text wraps within an element. The &lt;code&gt;wrap-break-word&lt;/code&gt; utility is especially useful for long words or URLs that might otherwise break your layout:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;p class=&quot;mx-auto max-w-xs border-x border-x-pink-400/30 py-8 wrap-break-word text-gray-900 dark:text-gray-200&quot;&gt;The longest word in any of the major English language dictionaries is&lt;!-- --&gt; &lt;span class=&quot;font-bold&quot;&gt;pneumonoultramicroscopicsilicovolcanoconiosis,&lt;/span&gt; a word that refers to a lung disease contracted from the inhalation of very fine silica particles, specifically from a volcano; medically, it is the same as silicosis.&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;wrap-break-word&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The longest word in any of the major...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The one case where this doesn&#39;t quite behave like you&#39;d expect is inside a flex container and that&#39;s where you probably want to use the new &lt;code&gt;wrap-anywhere&lt;/code&gt; utility instead.&lt;/p&gt;
&lt;p&gt;It&#39;s similar to &lt;code&gt;wrap-break-word&lt;/code&gt;, but it allows mid-word line breaks when calculating the intrinsic size of the element, replacing the need to set &lt;code&gt;min-width: 0&lt;/code&gt; on the child element:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div&gt;&lt;p class=&quot;mb-3 text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;wrap-break-word&lt;/p&gt;&lt;div class=&quot;mx-auto flex max-w-sm items-center gap-4 rounded-xl bg-white p-3 shadow-sm ring ring-black/2.5 dark:bg-black/10 dark:ring-white/10&quot;&gt;&lt;img class=&quot;size-16 rounded-full outline -outline-offset-1 outline-black/10 dark:outline-white/10&quot; src=&quot;https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;wrap-break-word&quot;&gt;&lt;p class=&quot;text-sm font-medium text-gray-900 dark:text-white&quot;&gt;Jay Riemenschneider&lt;/p&gt;&lt;p class=&quot;text-sm text-gray-500 dark:text-gray-400&quot;&gt;jason.riemenschneider@vandelayindustries.com&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=&quot;mt-8 mb-3 text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;wrap-anywhere&lt;/p&gt;&lt;div class=&quot;mx-auto flex max-w-sm items-center gap-4 rounded-xl bg-white p-3 shadow-sm ring ring-black/2.5 dark:bg-black/10 dark:ring-white/10&quot;&gt;&lt;img class=&quot;size-16 rounded-full outline -outline-offset-1 outline-black/10 dark:outline-white/10&quot; src=&quot;https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;wrap-anywhere&quot;&gt;&lt;p class=&quot;text-sm font-medium text-gray-900 dark:text-white&quot;&gt;Jay Riemenschneider&lt;/p&gt;&lt;p class=&quot;text-sm text-gray-500 dark:text-gray-400&quot;&gt;jason.riemenschneider@vandelayindustries.com&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex max-w-sm&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-16 rounded-full&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/img/profile.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;wrap-break-word&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;font-medium&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Jay Riemenschneider&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;jason.riemenschneider@vandelayindustries.com&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex max-w-sm&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-16 rounded-full&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;/img/profile.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;wrap-anywhere&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;font-medium&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Jay Riemenschneider&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;jason.riemenschneider@vandelayindustries.com&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There&#39;s not much more to it than that, but here&#39;s the &lt;a href=&quot;https://tailwindcss.com/docs/overflow-wrap&quot;&gt;&lt;code&gt;overflow-wrap&lt;/code&gt;&lt;/a&gt; documentation if you want to read it again in slightly different words.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;colored-drop-shadow-support&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#colored-drop-shadow-support&quot; class=&quot;anchor&quot;&gt;Colored &lt;code&gt;drop-shadow&lt;/code&gt; support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While we were building out &lt;code&gt;text-shadow&lt;/code&gt; support we thought we might as well add another feature we never got around to implementing: colored drop shadows.&lt;/p&gt;
&lt;p&gt;Now you can use utilities like &lt;code&gt;drop-shadow-indigo-500&lt;/code&gt; and &lt;code&gt;drop-shadow-cyan-500/50&lt;/code&gt; to change the color of a drop shadow:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid grid-cols-3 items-end gap-8 max-sm:grid-cols-1&quot;&gt;&lt;div class=&quot;flex flex-col items-center&quot;&gt;&lt;p class=&quot;mb-3 text-center font-mono text-xs font-medium text-gray-500&quot;&gt;drop-shadow-cyan-500/50&lt;/p&gt;&lt;svg class=&quot;size-28 text-gray-950/100 drop-shadow-xl drop-shadow-cyan-500/50&quot; viewBox=&quot;0 0 84 84&quot;&gt;&lt;path d=&quot;M22.0992 77L2.19922 42.5L22.0992 8H61.8992L81.7992 42.5L61.8992 77H22.0992Z&quot; class=&quot;fill-cyan-500&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center&quot;&gt;&lt;p class=&quot;mb-3 text-center font-mono text-xs font-medium text-gray-500&quot;&gt;drop-shadow-sky-500/50&lt;/p&gt;&lt;svg class=&quot;size-28 text-gray-950/100 drop-shadow-xl drop-shadow-sky-500/50&quot; viewBox=&quot;0 0 84 84&quot;&gt;&lt;path d=&quot;M22.0992 77L2.19922 42.5L22.0992 8H61.8992L81.7992 42.5L61.8992 77H22.0992Z&quot; class=&quot;fill-sky-500&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-col items-center&quot;&gt;&lt;p class=&quot;mb-3 text-center font-mono text-xs font-medium text-gray-500&quot;&gt;drop-shadow-indigo-500/50&lt;/p&gt;&lt;svg class=&quot;size-28 text-gray-950/100 drop-shadow-xl drop-shadow-indigo-500/50&quot; viewBox=&quot;0 0 84 84&quot;&gt;&lt;path d=&quot;M22.0992 77L2.19922 42.5L22.0992 8H61.8992L81.7992 42.5L61.8992 77H22.0992Z&quot; class=&quot;fill-indigo-500&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;fill-cyan-500 drop-shadow-xl &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;drop-shadow-cyan-500/50&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;fill-blue-500 drop-shadow-xl &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;drop-shadow-blue-500/50&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;fill-indigo-500 drop-shadow-xl &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;drop-shadow-indigo-500/50&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;svg&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There isn&#39;t much more to it but here&#39;s the &lt;a href=&quot;https://tailwindcss.com/docs/filter-drop-shadow&quot;&gt;&lt;code&gt;drop-shadow&lt;/code&gt; documentation&lt;/a&gt; anyway.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;target-input-devices-with-pointer-and-any-pointer-&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#target-input-devices-with-pointer-and-any-pointer-&quot; class=&quot;anchor&quot;&gt;Target input devices with &lt;code&gt;pointer-*&lt;/code&gt; and &lt;code&gt;any-pointer-*&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The new &lt;code&gt;pointer-fine&lt;/code&gt; and &lt;code&gt;pointer-coarse&lt;/code&gt; variants let you style something differently depending on whether the user is using a device with a mouse or using a touchscreen.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;pointer-fine&lt;/code&gt; to target precise pointing devices like mouses and trackpads, and &lt;code&gt;pointer-coarse&lt;/code&gt; to target devices lower precision like touchscreens:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;div class=&quot;mb-4&quot;&gt;&lt;div class=&quot;flex space-x-2&quot;&gt;&lt;svg width=&quot;22&quot; height=&quot;22&quot; fill=&quot;none&quot; viewBox=&quot;0 0 22 22&quot; class=&quot;size-5 flex-none&quot;&gt;&lt;path fill=&quot;currentColor&quot; class=&quot;dark:[fill-opacity:0.1]&quot; fill-opacity=&quot;0.05&quot; fill-rule=&quot;evenodd&quot; d=&quot;M10.5 8.77V2a1.5 1.5 0 1 0-3 0v10.929a3.5 3.5 0 0 1-1.025 2.474l-.008.009a6.5 6.5 0 0 0-1.87-3.937l-.536-.536a1.5 1.5 0 1 0-2.122 2.121l.536.536A3.5 3.5 0 0 1 3.5 16.07v.1a3.5 3.5 0 0 0 1.025 2.475l1.829 1.828A3.5 3.5 0 0 0 8.828 21.5h7.758a2.5 2.5 0 0 0 1.768-.733l.242-.242a6.5 6.5 0 0 0 1.904-4.596v-2.29a3.5 3.5 0 0 0-2.814-3.432z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M10.5 8.77H10v.41l.402.08zm-4.025 6.633-.354-.353zm-.008.009-.498.05.107 1.048.744-.745zm-1.87-3.937-.354.353zm-.536-.536-.354.354zm-2.122 0 .354.354zm0 2.121.354-.353zm.536.536-.354.353zm2.05 5.05L4.172 19zm1.829 1.828L6 20.829zm12 .293.353.354zm.242-.242-.353-.354zm-.91-10.318.099-.49zM10 2v6.77h1V2zM9 1a1 1 0 0 1 1 1h1a2 2 0 0 0-2-2zM8 2a1 1 0 0 1 1-1V0a2 2 0 0 0-2 2zm0 6.17V2H7v6.17zM8 9.5V8.17H7V9.5zm0 3.429V9.5H7v3.429zm-1.172 2.828A4 4 0 0 0 8 12.929H7a3 3 0 0 1-.879 2.12zm-.008.008.008-.008-.707-.707-.008.008zm-2.577-3.937a6 6 0 0 1 1.726 3.634l.995-.1A7 7 0 0 0 4.95 11.12zm-.536-.535.536.535.707-.707-.536-.536zm-1.414 0a1 1 0 0 1 1.414 0l.707-.708a2 2 0 0 0-2.828 0zm0 1.414a1 1 0 0 1 0-1.415l-.707-.707a2 2 0 0 0 0 2.829zm.535.535-.535-.535-.707.707.535.535zM4 16.071a4 4 0 0 0-1.172-2.829l-.707.707A3 3 0 0 1 3 16.071zm0 .1v-.1H3v.1zm.879 2.122A3 3 0 0 1 4 16.17H3A4 4 0 0 0 4.172 19zm1.828 1.828L4.88 18.293 4.172 19 6 20.828zM8.828 21a3 3 0 0 1-2.12-.88L6 20.829A4 4 0 0 0 8.828 22zm7.758 0H8.828v1h7.758zM18 20.414a2 2 0 0 1-1.414.586v1a3 3 0 0 0 2.121-.88zm.243-.243-.243.243.707.707.243-.243zM20 15.93a6 6 0 0 1-1.757 4.242l.707.707a7 7 0 0 0 2.05-4.95zm0-2.29v2.29h1v-2.29zm-2.412-2.941A3 3 0 0 1 20 13.639h1a4 4 0 0 0-3.215-3.922zM10.402 9.26l7.186 1.438.197-.981-7.187-1.437z&quot;&gt;&lt;/path&gt;&lt;path stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; d=&quot;M1.5 4.677a14 14 0 0 1 4-1.736m11 1.736a14 14 0 0 0-4-1.736&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;p class=&quot;text-sm font-medium text-slate-700 dark:text-slate-200&quot;&gt;Try emulating a touch device in your developer tools to see the changes&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;fieldset aria-label=&quot;Choose a memory option&quot; class=&quot;mx-auto max-w-md&quot;&gt;&lt;div class=&quot;flex items-center justify-between&quot;&gt;&lt;div class=&quot;text-sm/6 font-medium text-gray-900 dark:text-white&quot;&gt;RAM&lt;/div&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#&quot; class=&quot;text-sm/6 font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400&quot;&gt;See performance specs&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;mt-4 grid grid-cols-6 gap-2 max-sm:grid-cols-3 pointer-coarse:mt-6 pointer-coarse:grid-cols-3 pointer-coarse:gap-4&quot;&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; value=&quot;4 GB&quot;&gt;&lt;span&gt;4 GB&lt;/span&gt;&lt;/label&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; checked=&quot;&quot; value=&quot;8 GB&quot;&gt;&lt;span&gt;8 GB&lt;/span&gt;&lt;/label&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; value=&quot;16 GB&quot;&gt;&lt;span&gt;16 GB&lt;/span&gt;&lt;/label&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; value=&quot;32 GB&quot;&gt;&lt;span&gt;32 GB&lt;/span&gt;&lt;/label&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; value=&quot;64 GB&quot;&gt;&lt;span&gt;64 GB&lt;/span&gt;&lt;/label&gt;&lt;label class=&quot;flex items-center justify-center rounded-md bg-white p-2 text-sm font-semibold text-gray-900 uppercase ring-1 ring-gray-300 not-data-focus:not-has-checked:ring-inset hover:bg-gray-50 has-checked:bg-indigo-600 has-checked:text-white has-checked:ring-0 has-checked:hover:bg-indigo-500 has-focus-visible:outline-2 has-focus-visible:outline-offset-2 has-focus-visible:outline-indigo-600 data-focus:ring-2 data-focus:ring-indigo-600 data-focus:ring-offset-2 data-focus:has-checked:ring-2 sm:flex-1 dark:bg-transparent dark:text-white dark:ring-white/20 dark:hover:bg-gray-950/50 pointer-coarse:p-4&quot;&gt;&lt;input type=&quot;radio&quot; class=&quot;sr-only&quot; name=&quot;memory-option&quot; value=&quot;128 GB&quot;&gt;&lt;span&gt;128 GB&lt;/span&gt;&lt;/label&gt;&lt;/div&gt;&lt;/fieldset&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;fieldset&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; aria-label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Choose a memory option&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex items-center justify-between&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; See performance specs &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-4 grid grid-cols-6 gap-2 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pointer-coarse:mt-6&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pointer-coarse:grid-cols-3&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pointer-coarse:gap-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;p-2 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;pointer-coarse:p-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;radio&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;memory-option&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;4 GB&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;sr-only&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;4 GB&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;fieldset&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;If you&#39;re on your phone, you&#39;ll see the &lt;code&gt;pointer-coarse&lt;/code&gt; styles applied, which make the touch targets larger and easier to hit. If you&#39;re on a desktop, you&#39;ll see the &lt;code&gt;pointer-fine&lt;/code&gt; styles applied, which make the touch targets smaller and more precise.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;any-pointer-*&lt;/code&gt; variants work the same way but instead of just checking the user&#39;s &lt;em&gt;primary&lt;/em&gt; pointing device, they check if &lt;em&gt;any&lt;/em&gt; pointing device matches. So &lt;code&gt;any-pointer-coarse&lt;/code&gt; will match on a laptop with a touchscreen for a example, even if the user also has a mouse connected.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;align-items-to-the-last-baseline&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#align-items-to-the-last-baseline&quot; class=&quot;anchor&quot;&gt;Align items to the last baseline&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When working with flex or grid layouts, sometimes you need to align something to the baseline of the last line of text rather than the end of the container.&lt;/p&gt;
&lt;p&gt;The new &lt;code&gt;items-baseline-last&lt;/code&gt; utility does just that:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50&quot;&gt;&lt;div class=&quot;mx-auto grid max-w-md divide-y divide-gray-100 border-x border-x-gray-200 text-gray-700 dark:divide-gray-800 dark:border-x-gray-800 dark:bg-gray-950/10 dark:text-gray-300&quot;&gt;&lt;div class=&quot;grid grid-cols-[1fr_auto] items-baseline-last gap-x-4 px-4 py-6&quot;&gt;&lt;div class=&quot;grid grid-cols-[auto_1fr] gap-x-4 max-sm:grid-cols-1&quot;&gt;&lt;img class=&quot;size-[2rem] rounded-full&quot; src=&quot;https://spotlight.tailwindui.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Favatar.51a13c67.jpg&amp;amp;w=128&amp;amp;q=80&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;font-semibold text-gray-900 sm:col-start-2 dark:text-white&quot;&gt;Spencer Sharp&lt;/div&gt;&lt;p class=&quot;text-sm sm:col-start-2&quot;&gt;Working on the future of astronaut recruitment at Space Recruit.&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#&quot; class=&quot;font-mono text-xs font-medium text-gray-400 underline hover:text-blue-500 dark:text-gray-500&quot;&gt;spacerecruit.com&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-[1fr_auto] items-baseline-last gap-x-4 px-4 py-6&quot;&gt;&lt;div class=&quot;grid grid-cols-[auto_1fr] gap-x-4 max-sm:grid-cols-1&quot;&gt;&lt;img class=&quot;size-[2rem] rounded-full&quot; src=&quot;https://images.unsplash.com/photo-1590895340509-793cb98788c9?q=80&amp;amp;w=256&amp;amp;h=256&amp;amp;&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;ixlib=rb-4.0.3&amp;amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;font-semibold text-gray-900 sm:col-start-2 dark:text-white&quot;&gt;Alex Reed&lt;/div&gt;&lt;p class=&quot;text-sm sm:col-start-2&quot;&gt;A multidisciplinary designer.&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#&quot; class=&quot;font-mono text-xs font-medium text-gray-400 underline hover:text-blue-500 dark:text-gray-500&quot;&gt;alex-reed.com&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid grid-cols-[1fr_auto] &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;items-baseline-last&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;img/spencer-sharp.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Spencer Sharp&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Working on the future of astronaut recruitment at Space Recruit.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;spacerecruit.com&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;ve also added &lt;code&gt;self-baseline-last&lt;/code&gt; for when you need to align just a single item, and not all items in the flex or grid container.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;keep-content-visible-with-safe-alignment&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#keep-content-visible-with-safe-alignment&quot; class=&quot;anchor&quot;&gt;Keep content visible with &lt;code&gt;safe&lt;/code&gt; alignment&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ever had center aligned content overflow in both directions when the container got too small? Now you don&#39;t have to use a container query to switch the alignment at different sizes.&lt;/p&gt;
&lt;p&gt;The new &lt;code&gt;safe&lt;/code&gt; alignment utilities will change the alignment to &lt;code&gt;start&lt;/code&gt; when the container starts to overflow, so it only overflows in one direction.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;div class=&quot;mb-4&quot;&gt;&lt;div class=&quot;flex space-x-2&quot;&gt;&lt;svg width=&quot;22&quot; height=&quot;22&quot; fill=&quot;none&quot; viewBox=&quot;0 0 22 22&quot; class=&quot;size-5 flex-none&quot;&gt;&lt;path fill=&quot;currentColor&quot; class=&quot;dark:[fill-opacity:0.1]&quot; fill-opacity=&quot;0.05&quot; fill-rule=&quot;evenodd&quot; d=&quot;M10.5 8.77V2a1.5 1.5 0 1 0-3 0v10.929a3.5 3.5 0 0 1-1.025 2.474l-.008.009a6.5 6.5 0 0 0-1.87-3.937l-.536-.536a1.5 1.5 0 1 0-2.122 2.121l.536.536A3.5 3.5 0 0 1 3.5 16.07v.1a3.5 3.5 0 0 0 1.025 2.475l1.829 1.828A3.5 3.5 0 0 0 8.828 21.5h7.758a2.5 2.5 0 0 0 1.768-.733l.242-.242a6.5 6.5 0 0 0 1.904-4.596v-2.29a3.5 3.5 0 0 0-2.814-3.432z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M10.5 8.77H10v.41l.402.08zm-4.025 6.633-.354-.353zm-.008.009-.498.05.107 1.048.744-.745zm-1.87-3.937-.354.353zm-.536-.536-.354.354zm-2.122 0 .354.354zm0 2.121.354-.353zm.536.536-.354.353zm2.05 5.05L4.172 19zm1.829 1.828L6 20.829zm12 .293.353.354zm.242-.242-.353-.354zm-.91-10.318.099-.49zM10 2v6.77h1V2zM9 1a1 1 0 0 1 1 1h1a2 2 0 0 0-2-2zM8 2a1 1 0 0 1 1-1V0a2 2 0 0 0-2 2zm0 6.17V2H7v6.17zM8 9.5V8.17H7V9.5zm0 3.429V9.5H7v3.429zm-1.172 2.828A4 4 0 0 0 8 12.929H7a3 3 0 0 1-.879 2.12zm-.008.008.008-.008-.707-.707-.008.008zm-2.577-3.937a6 6 0 0 1 1.726 3.634l.995-.1A7 7 0 0 0 4.95 11.12zm-.536-.535.536.535.707-.707-.536-.536zm-1.414 0a1 1 0 0 1 1.414 0l.707-.708a2 2 0 0 0-2.828 0zm0 1.414a1 1 0 0 1 0-1.415l-.707-.707a2 2 0 0 0 0 2.829zm.535.535-.535-.535-.707.707.535.535zM4 16.071a4 4 0 0 0-1.172-2.829l-.707.707A3 3 0 0 1 3 16.071zm0 .1v-.1H3v.1zm.879 2.122A3 3 0 0 1 4 16.17H3A4 4 0 0 0 4.172 19zm1.828 1.828L4.88 18.293 4.172 19 6 20.828zM8.828 21a3 3 0 0 1-2.12-.88L6 20.829A4 4 0 0 0 8.828 22zm7.758 0H8.828v1h7.758zM18 20.414a2 2 0 0 1-1.414.586v1a3 3 0 0 0 2.121-.88zm.243-.243-.243.243.707.707.243-.243zM20 15.93a6 6 0 0 1-1.757 4.242l.707.707a7 7 0 0 0 2.05-4.95zm0-2.29v2.29h1v-2.29zm-2.412-2.941A3 3 0 0 1 20 13.639h1a4 4 0 0 0-3.215-3.922zM10.402 9.26l7.186 1.438.197-.981-7.187-1.437z&quot;&gt;&lt;/path&gt;&lt;path stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; d=&quot;M1.5 4.677a14 14 0 0 1 4-1.736m11 1.736a14 14 0 0 0-4-1.736&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;p class=&quot;text-sm font-medium text-slate-700 dark:text-slate-200&quot;&gt;Resize the container to see the alignment behavior&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;group not-prose relative overflow-hidden sm:overflow-visible&quot;&gt;&lt;div class=&quot;p-8 @container relative overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 dark:inset-ring dark:inset-ring-white/5 group-data-dragging:before:absolute group-data-dragging:before:inset-0&quot; style=&quot;margin-right:0px&quot;&gt;&lt;div class=&quot;grid grid-cols-1 gap-8&quot;&gt;&lt;div&gt;&lt;p class=&quot;text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;justify-center&lt;/p&gt;&lt;ul class=&quot;flex justify-center gap-2 pt-4 text-sm text-sky-600 *:rounded-full *:border *:border-sky-100 *:bg-sky-50 *:px-2 *:py-0.5 dark:text-sky-300 dark:*:border-sky-500/15 dark:*:bg-sky-500/10&quot;&gt;&lt;li&gt;Sales&lt;/li&gt;&lt;li&gt;Marketing&lt;/li&gt;&lt;li&gt;SEO&lt;/li&gt;&lt;li&gt;Analytics&lt;/li&gt;&lt;li&gt;Design&lt;/li&gt;&lt;li&gt;Strategy&lt;/li&gt;&lt;li&gt;Growth&lt;/li&gt;&lt;li&gt;UX/UI&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400&quot;&gt;justify-center-safe&lt;/p&gt;&lt;ul class=&quot;flex justify-center-safe gap-2 pt-4 text-sm text-sky-600 *:rounded-full *:border *:border-sky-100 *:bg-sky-50 *:px-2 *:py-0.5 dark:text-sky-300 dark:*:border-sky-500/15 dark:*:bg-sky-500/10&quot;&gt;&lt;li&gt;Sales&lt;/li&gt;&lt;li&gt;Marketing&lt;/li&gt;&lt;li&gt;SEO&lt;/li&gt;&lt;li&gt;Analytics&lt;/li&gt;&lt;li&gt;Design&lt;/li&gt;&lt;li&gt;Strategy&lt;/li&gt;&lt;li&gt;Growth&lt;/li&gt;&lt;li&gt;UX/UI&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;pointer-events-none absolute inset-y-0 right-1.5 left-60 max-sm:hidden&quot;&gt;&lt;div title=&quot;Drag to resize&quot; class=&quot;pointer-events-auto absolute top-1/2 right-0 z-50 -mt-6 h-12 w-1.5 cursor-ew-resize rounded-full bg-slate-950/20 group-data-dragging:bg-slate-950/40 hover:bg-slate-950/40 dark:bg-slate-500 dark:group-data-dragging:bg-slate-300 dark:hover:bg-slate-300&quot; draggable=&quot;false&quot; style=&quot;transform:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;justify-center&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;justify-center&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; gap-2 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Sales&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Marketing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;SEO&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;justify-center-safe&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;justify-center-safe&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; gap-2 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Sales&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Marketing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;SEO&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;li&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;ul&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;These utilities work with both flexbox and grid layouts, and are available for all alignment properties.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ignore-specific-paths-with-source-not&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#ignore-specific-paths-with-source-not&quot; class=&quot;anchor&quot;&gt;Ignore specific paths with &lt;code&gt;@source not&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sometimes you need to specifically exclude some parts of your code base from being scanned by Tailwind. Now you can use &lt;code&gt;@source not&lt;/code&gt; to ignore specific paths when scanning for class names:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@source&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; not &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;./src/components/legacy&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is useful when you have a large number of files in your project, but only want to scan a specific subset of them.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;safelist-specific-utilities-with-source-inline&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#safelist-specific-utilities-with-source-inline&quot; class=&quot;anchor&quot;&gt;Safelist specific utilities with &lt;code&gt;@source inline(…)&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you need to make sure Tailwind generates certain class names that don’t exist in your content files, you can force them to be generated by using &lt;code&gt;@source inline()&lt;/code&gt;:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@source&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; inline(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;underline&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Generated CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.underline&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  text-decoration&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;underline&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is the equivalent of the &lt;code&gt;safelist&lt;/code&gt; configuration option in previous versions of Tailwind, but now you can use it in your CSS files instead of your config file.&lt;/p&gt;
&lt;p&gt;The source input is &lt;a href=&quot;https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html&quot;&gt;brace-expanded&lt;/a&gt;, so you can generate multiple classes at once. For example, to generate all the red shades with hover variants, you can add a range to the source input:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@source&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; inline(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;{hover:,}bg-red-{50,{100..900..100},950}&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Generated CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-50&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-50&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-200&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-200&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;/* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-800&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-800&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-900&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-900&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.bg-red-950&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-950&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;bg-red-50:hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-50&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;bg-red-950:hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-red-950&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This will generate shades of red from 100 to 900 in increments of 100, as well as the 50 and 950 shades. It also adds the &lt;code&gt;hover:&lt;/code&gt; variant for each of those classes.&lt;/p&gt;
&lt;p&gt;You can also use &lt;code&gt;@source inline()&lt;/code&gt; with the &lt;code&gt;not&lt;/code&gt; modifier to exclude specific classes from being generated:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@source&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; not inline(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This will specifically prevent the &lt;code&gt;container&lt;/code&gt; class from being generated, even if the word &lt;code&gt;container&lt;/code&gt; is detected in your source files.&lt;/p&gt;
&lt;p&gt;For more details, check out the &lt;a href=&quot;https://tailwindcss.com/docs/detecting-classes-in-source-files#safelisting-specific-utilities&quot;&gt;detecting classes in source files&lt;/a&gt; documentation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;a-bunch-of-other-new-variants&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#a-bunch-of-other-new-variants&quot; class=&quot;anchor&quot;&gt;A bunch of other new variants&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;prettier-accordions-with-details-content&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#prettier-accordions-with-details-content&quot; class=&quot;anchor&quot;&gt;Prettier accordions with &lt;code&gt;details-content&lt;/code&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While you could always add styles to the children of a &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; element, it&#39;s been impossible to style the content container itself.&lt;/p&gt;
&lt;p&gt;The new &lt;code&gt;details-content&lt;/code&gt; variant targets the content container which is useful for positioning the content container relative to the &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; element:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;mx-auto max-w-lg&quot;&gt;&lt;details class=&quot;rounded-lg border border-transparent p-6 details-content:mt-3 details-content:-ml-0.5&quot; open=&quot;&quot;&gt;&lt;summary class=&quot;text-sm leading-6 font-semibold text-gray-900 select-none dark:text-white&quot;&gt;Why do they call it Ovaltine?&lt;/summary&gt;&lt;div class=&quot;list-inside list-disc rounded-lg border border-gray-200 bg-gray-50 py-3 pl-3 text-sm leading-6 text-gray-600 dark:border-white/10 dark:bg-gray-800/50 dark:text-gray-400&quot;&gt;&lt;p&gt;The mug is round. The jar is round. They should call it Roundtine.&lt;/p&gt;&lt;/div&gt;&lt;/details&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;details&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;rounded-lg border border-transparent p-6 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;details-content:mt-3&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;details-content:-ml-0.5&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; open&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm leading-6 font-semibold text-gray-900 select-none dark:text-white&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    Why do they call it Ovaltine?&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;summary&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;border-gray-200 bg-gray-50 py-3 pl-3 dark:border-white/10 dark:bg-gray-800/50 ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;The mug is round. The jar is round. They should call it Roundtine.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;details&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;target-inverted-colors-mode&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#target-inverted-colors-mode&quot; class=&quot;anchor&quot;&gt;Target &lt;code&gt;inverted-colors&lt;/code&gt; mode&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use the &lt;code&gt;inverted-colors&lt;/code&gt; variant to conditionally add styles when the user has enabled an inverted color scheme in their OS:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;shadow-xl &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;inverted-colors:shadow-none&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is useful for things like preventing black shadows being turned white when inverted colors are enabled.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-noscript-variant&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#new-noscript-variant&quot; class=&quot;anchor&quot;&gt;New &lt;code&gt;noscript&lt;/code&gt; variant&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Yes, some people disable JavaScript and now you can tell them your app doesn&#39;t work without it. The &lt;code&gt;noscript&lt;/code&gt; variant lets you conditionally apply styles when JS is disabled:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;hidden noscript:block&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Please enable JavaScript to use this app.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You could already do this with the &lt;code&gt;&amp;lt;noscript&amp;gt;&lt;/code&gt; tag but now you can do it with CSS too, which Tailwind lets you write in your HTML, so… yeah.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;better-form-validation-with-user-valid-and-user-invalid&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-1#better-form-validation-with-user-valid-and-user-invalid&quot; class=&quot;anchor&quot;&gt;Better form validation with &lt;code&gt;user-valid&lt;/code&gt; and &lt;code&gt;user-invalid&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ever tried the &lt;code&gt;:invalid&lt;/code&gt; pseudo-class only for the page to be full of red invalid states as soon as it loads, before the user has even touched your form?&lt;/p&gt;
&lt;p&gt;The new &lt;code&gt;user-valid&lt;/code&gt; and &lt;code&gt;user-invalid&lt;/code&gt; variants try to solve this problem, by only applying validation-related styling after the user has actually interacted with the controls:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; required&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;border &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;user-valid:border-green-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; required&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;border &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;user-invalid:border-red-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;So that&#39;s it, that&#39;s Tailwind CSS v4.1! Update to the latest version using npm and start playing with it today:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using the Tailwind CLI&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/cli@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using Vite&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/vite@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Using PostCSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss@latest&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/postcss@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Looking forward to seeing what you build with the new features!&lt;/p&gt;</description><link>https://tailwindcss.com/blog/tailwindcss-v4-1</link><guid isPermaLink="false">Tailwind CSS v4.1: Text shadows, masks, and tons more</guid><pubDate>Thu, 03 Apr 2025 20:00:00 GMT</pubDate><author>Adam Wathan, Dan Hollick</author><enclosure url="https://tailwindcss.com/_next/static/media/card.07i8wip_ymzcx.jpg" type="image/jpeg"></enclosure></item><item><title>Tailwind UI is now Tailwind Plus</title><description>&lt;a href=&quot;https://tailwindcss.com/plus&quot;&gt;&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Tailwind Plus&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;806&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.1380gcjub04-q.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.1380gcjub04-q.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.1380gcjub04-q.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;
&lt;p&gt;We just shipped a huge rebrand project, turning what was previously known as Tailwind UI into &lt;a href=&quot;https://tailwindcss.com/plus&quot;&gt;Tailwind Plus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before you jump to any conclusions, here&#39;s what&#39;s &lt;em&gt;not&lt;/em&gt; changing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No subscription pricing&lt;/strong&gt; — it&#39;s still a one-time purchase with lifetime access, just like it always has been.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No upgrade cost&lt;/strong&gt; — if you already had a Tailwind UI All-Access license, you&#39;ve now got a Tailwind Plus license. The price isn&#39;t changing for new customers either.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;All the same content&lt;/strong&gt; — you get access to all of the same content, including all of our components, templates, and our Catalyst UI kit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So why the change? Simply put, there&#39;s a lot we want to do for our community that doesn&#39;t feel like it fits into the Tailwind UI box.&lt;/p&gt;
&lt;p&gt;Here are some of the ideas we&#39;ve been exploring for Tailwind Plus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tailwind Play accounts&lt;/strong&gt; — so you can save your experiments and find old ideas more easily, and even update existing Plays without losing the original URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom editor themes&lt;/strong&gt; — people ask us about the custom syntax themes we use for our stuff all the time, and Tailwind Plus feels like a cool way to make them available to people.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Color palettes&lt;/strong&gt; — alternatives to the Tailwind CSS default color palette, curated for you by expert designers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Typography themes&lt;/strong&gt; — more typography styles like what you get with our typography plugin, but with different stylistic choices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building a stronger private community&lt;/strong&gt; — Tailwind is used by millions of people which is incredible, but also means there&#39;s a ton of noise in public channels. We want to build a great community where you can have high-quality conversations about front-end development with other UI engineers and connect directly with the Tailwind CSS team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Early access to beta documentation&lt;/strong&gt; — get access to the documentation for unreleased features before it goes public, and help us refine things before they go stable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Early registration for in-person events&lt;/strong&gt; — like the Tailwind Connect meetups we&#39;ve hosted, where you can hang out with the Tailwind team and talk shop with others in the community.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of these ideas are further along than others and some of them might not end up being good ideas at all, but I&#39;m really excited to keep exploring them in the coming months.&lt;/p&gt;
&lt;p&gt;Of course we&#39;re also going to keep investing into more &lt;a href=&quot;https://tailwindcss.com/plus/ui-blocks&quot;&gt;component examples&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/plus/templates&quot;&gt;templates&lt;/a&gt;, and &lt;a href=&quot;https://tailwindcss.com/plus/ui-kit&quot;&gt;Catalyst&lt;/a&gt; improvements! We&#39;re itching to &lt;strong&gt;design a combobox for Catalyst soon&lt;/strong&gt; for example, and we&#39;re also about to start prototyping &lt;strong&gt;plain HTML versions of our templates&lt;/strong&gt; for people who don&#39;t use React.&lt;/p&gt;
&lt;p&gt;So ultimately Tailwind Plus is the all same high-quality resources you know from Tailwind UI, but with all-new possibilities and potential.&lt;/p&gt;
&lt;p&gt;It&#39;s a big risk to make a change like this, but it&#39;s something I&#39;ve wanted to do for years and I&#39;m excited to finally pull the trigger and ship it.&lt;/p&gt;
&lt;p&gt;So here&#39;s to a new era — can&#39;t wait to build you some awesome new stuff.&lt;/p&gt;</description><link>https://tailwindcss.com/blog/tailwind-plus</link><guid isPermaLink="false">Tailwind UI is now Tailwind Plus</guid><pubDate>Tue, 04 Mar 2025 16:00:00 GMT</pubDate><author>Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.1380gcjub04-q.jpg" type="image/jpeg"></enclosure></item><item><title>Tailwind CSS v4.0</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Tailwind CSS v4.0&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;806&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0_24evxv_9oi5.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0_24evxv_9oi5.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0_24evxv_9oi5.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Holy shit it&#39;s actually done — we just tagged Tailwind CSS v4.0.&lt;/p&gt;
&lt;p&gt;Tailwind CSS v4.0 is an all-new version of the framework optimized for performance and flexibility, with a reimagined configuration and customization experience, and taking full advantage of the latest advancements the web platform has to offer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#new-high-performance-engine&quot;&gt;New high-performance engine&lt;/a&gt; — where full builds are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#designed-for-the-modern-web&quot;&gt;Designed for the modern web&lt;/a&gt; — built on cutting-edge CSS features like cascade layers, registered custom properties with &lt;code&gt;@property&lt;/code&gt;, and &lt;code&gt;color-mix()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#simplified-installation&quot;&gt;Simplified installation&lt;/a&gt; — fewer dependencies, zero configuration, and just a single line of code in your CSS file.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#first-party-vite-plugin&quot;&gt;First-party Vite plugin&lt;/a&gt; — tight integration for maximum performance and minimum configuration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#automatic-content-detection&quot;&gt;Automatic content detection&lt;/a&gt; — all of your template files are discovered automatically, with no configuration required.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#built-in-import-support&quot;&gt;Built-in import support&lt;/a&gt; — no additional tooling necessary to bundle multiple CSS files.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#css-first-configuration&quot;&gt;CSS-first configuration&lt;/a&gt; — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#css-theme-variables&quot;&gt;CSS theme variables&lt;/a&gt; — all of your design tokens exposed as native CSS variables so you can access them anywhere.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#dynamic-utility-values-and-variants&quot;&gt;Dynamic utility values and variants&lt;/a&gt; — stop guessing what values exist in your spacing scale, or extending your configuration for things like basic data attributes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#modernized-p3-color-palette&quot;&gt;Modernized P3 color palette&lt;/a&gt; — a redesigned, more vivid color palette that takes full advantage of modern display technology.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#container-queries&quot;&gt;Container queries&lt;/a&gt; — first-class APIs for styling elements based on their container size, no plugins required.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#new-3d-transform-utilities&quot;&gt;New 3D transform utilities&lt;/a&gt; — transform elements in 3D space directly in your HTML.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#expanded-gradient-apis&quot;&gt;Expanded gradient APIs&lt;/a&gt; — radial and conic gradients, interpolation modes, and more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#starting-style-support&quot;&gt;@starting-style support&lt;/a&gt; — a new variant you can use to create enter and exit transitions, without the need for JavaScript.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#not-variant&quot;&gt;not-* variant&lt;/a&gt; — style an element only when it doesn&#39;t match another variant, custom selector, or media or feature query.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#even-more-new-utilities-and-variants&quot;&gt;Even more new utilities and variants&lt;/a&gt; — including support for &lt;code&gt;color-scheme&lt;/code&gt;, &lt;code&gt;field-sizing&lt;/code&gt;, complex shadows, &lt;code&gt;inert&lt;/code&gt;, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Start using Tailwind CSS v4.0 today by &lt;a href=&quot;https://tailwindcss.com/docs/installation&quot;&gt;installing it in a new project&lt;/a&gt;, or playing with it directly in the browser on &lt;a href=&quot;https://play.tailwindcss.com/&quot;&gt;Tailwind Play&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For existing projects, we&#39;ve published a comprehensive &lt;a href=&quot;https://tailwindcss.com/docs/upgrade-guide&quot;&gt;upgrade guide&lt;/a&gt; and built an &lt;a href=&quot;https://tailwindcss.com/docs/upgrade-guide#using-the-upgrade-tool&quot;&gt;automated upgrade tool&lt;/a&gt; to get you on the latest version as quickly and painlessly as possible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-high-performance-engine&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#new-high-performance-engine&quot; class=&quot;anchor&quot;&gt;New high-performance engine&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.0 is a ground-up rewrite of the framework, taking everything we&#39;ve learned about the architecture over the years and optimizing it to be as fast as possible.&lt;/p&gt;
&lt;p&gt;When benchmarking it on our own projects, we&#39;ve found full rebuilds to be over 3.5x faster, and incremental builds to be over 8x faster.&lt;/p&gt;
&lt;p&gt;Here are the median build times we saw when we benchmarked Tailwind CSS v4.0 against &lt;a href=&quot;https://tailwindui.com/templates/catalyst&quot;&gt;Catalyst&lt;/a&gt;:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;v3.4&lt;/th&gt;&lt;th&gt;v4.0&lt;/th&gt;&lt;th&gt;Improvement&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Full build&lt;/td&gt;&lt;td&gt;378ms&lt;/td&gt;&lt;td&gt;100ms&lt;/td&gt;&lt;td&gt;3.78x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Incremental rebuild with new CSS&lt;/td&gt;&lt;td&gt;44ms&lt;/td&gt;&lt;td&gt;5ms&lt;/td&gt;&lt;td&gt;8.8x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Incremental rebuild with no new CSS&lt;/td&gt;&lt;td&gt;35ms&lt;/td&gt;&lt;td&gt;192µs&lt;/td&gt;&lt;td&gt;182x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The most impressive improvement is on incremental builds that don&#39;t actually need to compile any new CSS — these builds are over 100x faster and complete in &lt;em&gt;microseconds&lt;/em&gt;. And the longer you work on a project, the more of these builds you run into because you&#39;re just using classes you&#39;ve already used before, like &lt;code&gt;flex&lt;/code&gt;, &lt;code&gt;col-span-2&lt;/code&gt;, or &lt;code&gt;font-bold&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;designed-for-the-modern-web&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#designed-for-the-modern-web&quot; class=&quot;anchor&quot;&gt;Designed for the modern web&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The platform has evolved a lot since we released Tailwind CSS v3.0, and v4.0 takes full advantage of many of these improvements.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@layer&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; theme&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; base&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; components&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; utilities&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@layer&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; utilities &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .mx-6&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    margin-inline&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 6&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .bg-blue-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    background-color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;color-mix&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;in oklab&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt; var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--color-blue-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 50&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; transparent&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@property&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; --tw-gradient-from &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  syntax: &quot;&amp;lt;color&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;&quot;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  inherits: false;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  initial-value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;#&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0000;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;re leveraging modern CSS features like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Native cascade layers&lt;/strong&gt; — giving us more control than ever over how different style rules interact with each other.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Registered custom properties&lt;/strong&gt; — making it possible to do things like animate gradients, and significantly improving performance on large pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;color-mix()&lt;/strong&gt; — which lets us adjust the opacity of any color value, including CSS variables and &lt;code&gt;currentColor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logical properties&lt;/strong&gt; — simplifying RTL support and reducing the size of your generated CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many of these features have even simplified Tailwind internally, reducing the surface area for bugs and making the framework easier for us to maintain.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;simplified-installation&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#simplified-installation&quot; class=&quot;anchor&quot;&gt;Simplified installation&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve streamlined the setup process a ton in v4.0, reducing the number of steps and removing a lot of boilerplate.&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;1. Install Tailwind CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @tailwindcss/postcss&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;2. Add the PostCSS plugin&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  plugins&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;@tailwindcss/postcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;3. Import Tailwind in your CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;With the improvements we&#39;ve made to this process for v4.0, Tailwind feels more light-weight than ever:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Just one-line of CSS&lt;/strong&gt; — no more &lt;code&gt;@tailwind&lt;/code&gt; directives, just add &lt;code&gt;@import &quot;tailwindcss&quot;&lt;/code&gt; and start building.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero configuration&lt;/strong&gt; — you can start using the framework without configuring anything, not even the paths to your template files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No external plugins required&lt;/strong&gt; — we bundle &lt;code&gt;@import&lt;/code&gt; rules for you out of the box, and use &lt;a href=&quot;https://lightningcss.dev/&quot;&gt;Lightning CSS&lt;/a&gt; under the hood for vendor prefixing and modern syntax transforms.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sure you only go through this once per project, but it adds up when you&#39;re starting and abandoning a different side-project every weekend.&lt;/p&gt;
&lt;h2 id=&quot;first-party-vite-plugin&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#first-party-vite-plugin&quot; class=&quot;anchor&quot;&gt;First-party Vite plugin&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you&#39;re a Vite user, you can now integrate Tailwind using &lt;a href=&quot;https://tailwindcss.com/docs/installation/using-vite&quot;&gt;&lt;code&gt;@tailwindcss/vite&lt;/code&gt;&lt;/a&gt; instead of PostCSS:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;vite.config.ts&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; defineConfig&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; tailwindcss&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;@tailwindcss/vite&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; defineConfig&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  plugins&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;    tailwindcss&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  ]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Tailwind CSS v4.0 is incredibly fast when used as a PostCSS plugin, but you&#39;ll get even better performance using the Vite plugin.&lt;/p&gt;
&lt;h2 id=&quot;automatic-content-detection&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#automatic-content-detection&quot; class=&quot;anchor&quot;&gt;Automatic content detection&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You know how you always had to configure that annoying &lt;code&gt;content&lt;/code&gt; array in Tailwind CSS v3? In v4.0, we came up with a bunch of heuristics for detecting all of that stuff automatically so you don’t have to configure it at all.&lt;/p&gt;
&lt;p&gt;For example, we automatically ignore anything in your &lt;code&gt;.gitignore&lt;/code&gt; file to avoid scanning dependencies or generated files that aren’t under version control:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;.gitignore&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;/node_modules&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;/coverage&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;/.next/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;/build&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We also automatically ignore all binary extensions like images, videos, .zip files, and more.&lt;/p&gt;
&lt;p&gt;And if you ever need to explicitly add a source that&#39;s excluded by default, you can always add it with the &lt;code&gt;@source&lt;/code&gt; directive, right in your CSS file:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@source&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;../node_modules/@my-company/ui-lib&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;@source&lt;/code&gt; directive uses the same heuristics under the hood, so it will exclude binary file types for example as well, without you having to specify all of the extensions to scan explicitly.&lt;/p&gt;
&lt;p&gt;Learn more about in our new documentation on &lt;a href=&quot;https://tailwindcss.com/docs/detecting-classes-in-source-files&quot;&gt;detecting classes in source files&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;built-in-import-support&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#built-in-import-support&quot; class=&quot;anchor&quot;&gt;Built-in import support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before v4.0, if you wanted to inline other CSS files using &lt;code&gt;@import&lt;/code&gt; you&#39;d have to configure another plugin like &lt;code&gt;postcss-import&lt;/code&gt; to handle it for you.&lt;/p&gt;
&lt;p&gt;Now we handle this out of the box, so you don&#39;t need any other tools:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;postcss.config.js&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme [:where(&amp;amp;_.line)]:pl-4&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  plugins&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line relative -mx-5 border-l-4 border-red-400 bg-red-300/15 pr-5 pl-8 before:absolute before:left-4 before:text-red-400 before:content-[&#39;-&#39;]&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    &quot;postcss-import&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    &quot;@tailwindcss/postcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  ]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Our import system is purpose-built for Tailwind CSS, so we&#39;ve also been able to make it even faster by tightly integrating it with our engine.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;css-first-configuration&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#css-first-configuration&quot; class=&quot;anchor&quot;&gt;CSS-first configuration&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the biggest changes in Tailwind CSS v4.0 is the shift from configuring your project in JavaScript to configuring it in CSS.&lt;/p&gt;
&lt;p&gt;Instead of a &lt;code&gt;tailwind.config.js&lt;/code&gt; file, you can configure all of your customizations directly in the CSS file where you import Tailwind, giving you one less file to worry about in your project:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@import&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;tailwindcss&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@theme&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --font-display&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Satoshi&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;sans-serif&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --breakpoint-3xl&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;1920&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.99 0 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-200&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.98 0.04 113.22&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-300&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.94 0.11 115.03&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-400&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.92 0.19 114.08&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.84 0.18 117.33&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-600&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.53 0.12 118.34&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --ease-fluid&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --ease-snappy&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The new CSS-first configuration lets you do just about everything you could do in your &lt;code&gt;tailwind.config.js&lt;/code&gt; file, including configuring your design tokens, defining custom utilities and variants, and more.&lt;/p&gt;
&lt;p&gt;To learn more about how it all works, read the new &lt;a href=&quot;https://tailwindcss.com/docs/theme&quot;&gt;theme variables&lt;/a&gt; documentation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;css-theme-variables&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#css-theme-variables&quot; class=&quot;anchor&quot;&gt;CSS theme variables&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tailwind CSS v4.0 takes all of your design tokens and makes them available as CSS variables by default, so you can reference any value you need at run-time using just CSS.&lt;/p&gt;
&lt;p&gt;Using the example &lt;code&gt;@theme&lt;/code&gt; from earlier, all of these values will be added to your CSS to as regular custom properties:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Generated CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;:root&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --font-display&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Satoshi&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;sans-serif&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --breakpoint-3xl&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;1920&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.99 0 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-200&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.98 0.04 113.22&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-300&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.94 0.11 115.03&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-400&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.92 0.19 114.08&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-500&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.84 0.18 117.33&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --color-avocado-600&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.53 0.12 118.34&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --ease-fluid&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;  --ease-snappy&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;cubic-bezier&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This makes it easy to reuse these values as inline styles or pass them to libraries like &lt;a href=&quot;https://motion.dev/docs/react-animation#css-variables&quot;&gt;Motion&lt;/a&gt; to animate them.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;dynamic-utility-values-and-variants&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#dynamic-utility-values-and-variants&quot; class=&quot;anchor&quot;&gt;Dynamic utility values and variants&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve simplified the way many utilities and variants work in v4.0 by effectively allowing them to accept certain types of arbitrary values, &lt;em&gt;without&lt;/em&gt; the need for any configuration or dropping down to the arbitrary value syntax.&lt;/p&gt;
&lt;p&gt;For example, in Tailwind CSS v4.0 you can create grids of any size out of the box:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;grid-cols-15&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You can also target custom boolean data attributes without needing to define them:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; data-current&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;opacity-75 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;data-current:opacity-100&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Even spacing utilities like &lt;code&gt;px-*&lt;/code&gt;, &lt;code&gt;mt-*&lt;/code&gt;, &lt;code&gt;w-*&lt;/code&gt;, &lt;code&gt;h-*&lt;/code&gt;, and more are now dynamically derived from a single spacing scale variable and accept any value out of the box:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;Generated CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@layer&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; theme &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  :root&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;    --spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;0.25&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@layer&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; utilities &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .mt-8&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    margin-top&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 8&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .w-17&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    width&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 17&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .pr-29&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    padding-right&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 29&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The upgrade tool we released alongside v4.0 will even simplify most of these utilities for you automatically if it notices you using an arbitrary value that&#39;s no longer needed.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;modernized-p3-color-palette&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#modernized-p3-color-palette&quot; class=&quot;anchor&quot;&gt;Modernized P3 color palette&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve upgraded the entire default color palette from &lt;code&gt;rgb&lt;/code&gt; to &lt;code&gt;oklch&lt;/code&gt;, taking advantage of the wider gamut to make the colors more vivid in places where we were previously limited by the sRGB color space.&lt;/p&gt;
&lt;div class=&quot;not-prose my-12&quot;&gt;&lt;div class=&quot;not-prose grid grid-cols-[repeat(17,minmax(0,1fr))] gap-1 md:gap-2&quot;&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.971 0.013 17.38)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.936 0.032 17.717)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.885 0.062 18.334)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.808 0.114 19.571)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.704 0.191 22.216)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.637 0.237 25.331)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.577 0.245 27.325)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.505 0.213 27.518)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.444 0.177 26.899)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.396 0.141 25.723)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.258 0.092 26.042)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.98 0.016 73.684)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.954 0.038 75.164)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.901 0.076 70.697)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.837 0.128 66.29)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.75 0.183 55.934)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.705 0.213 47.604)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.646 0.222 41.116)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.553 0.195 38.402)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.47 0.157 37.304)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.408 0.123 38.172)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.266 0.079 36.259)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.987 0.022 95.277)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.962 0.059 95.617)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.924 0.12 95.746)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.879 0.169 91.605)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.828 0.189 84.429)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.769 0.188 70.08)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.666 0.179 58.318)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.555 0.163 48.998)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.473 0.137 46.201)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.414 0.112 45.904)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.279 0.077 45.635)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.987 0.026 102.212)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.973 0.071 103.193)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.945 0.129 101.54)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.905 0.182 98.111)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.852 0.199 91.936)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.795 0.184 86.047)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.681 0.162 75.834)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.554 0.135 66.442)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.476 0.114 61.907)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.421 0.095 57.708)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.286 0.066 53.813)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.986 0.031 120.757)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.967 0.067 122.328)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.938 0.127 124.321)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.897 0.196 126.665)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.841 0.238 128.85)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.768 0.233 130.85)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.648 0.2 131.684)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.532 0.157 131.589)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.453 0.124 130.933)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.405 0.101 131.063)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.274 0.072 132.109)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.982 0.018 155.826)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.962 0.044 156.743)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.925 0.084 155.995)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.871 0.15 154.449)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.792 0.209 151.711)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.723 0.219 149.579)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.627 0.194 149.214)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.527 0.154 150.069)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.448 0.119 151.328)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.393 0.095 152.535)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.266 0.065 152.934)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.979 0.021 166.113)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.95 0.052 163.051)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.905 0.093 164.15)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.845 0.143 164.978)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.765 0.177 163.223)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.696 0.17 162.48)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.596 0.145 163.225)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.508 0.118 165.612)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.432 0.095 166.913)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.378 0.077 168.94)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.262 0.051 172.552)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.984 0.014 180.72)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.953 0.051 180.801)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.91 0.096 180.426)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.855 0.138 181.071)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.777 0.152 181.912)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.704 0.14 182.503)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.6 0.118 184.704)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.511 0.096 186.391)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.437 0.078 188.216)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.386 0.063 188.416)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.277 0.046 192.524)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.984 0.019 200.873)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.956 0.045 203.388)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.917 0.08 205.041)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.865 0.127 207.078)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.789 0.154 211.53)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.715 0.143 215.221)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.609 0.126 221.723)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.52 0.105 223.128)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.45 0.085 224.283)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.398 0.07 227.392)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.302 0.056 229.695)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.977 0.013 236.62)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.951 0.026 236.824)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.901 0.058 230.902)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.828 0.111 230.318)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.746 0.16 232.661)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.685 0.169 237.323)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.588 0.158 241.966)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.5 0.134 242.749)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.443 0.11 240.79)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.391 0.09 240.876)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.293 0.066 243.157)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.97 0.014 254.604)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.932 0.032 255.585)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.882 0.059 254.128)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.809 0.105 251.813)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.707 0.165 254.624)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.623 0.214 259.815)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.546 0.245 262.881)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.488 0.243 264.376)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.424 0.199 265.638)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.379 0.146 265.522)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.282 0.091 267.935)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.962 0.018 272.314)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.93 0.034 272.788)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.87 0.065 274.039)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.785 0.115 274.713)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.673 0.182 276.935)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.585 0.233 277.117)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.511 0.262 276.966)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.457 0.24 277.023)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.398 0.195 277.366)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.359 0.144 278.697)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.257 0.09 281.288)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.969 0.016 293.756)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.943 0.029 294.588)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.894 0.057 293.283)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.811 0.111 293.571)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.702 0.183 293.541)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.606 0.25 292.717)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.541 0.281 293.009)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.491 0.27 292.581)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.432 0.232 292.759)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.38 0.189 293.745)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.283 0.141 291.089)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.977 0.014 308.299)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.946 0.033 307.174)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.902 0.063 306.703)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.827 0.119 306.383)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.714 0.203 305.504)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.627 0.265 303.9)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.558 0.288 302.321)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.496 0.265 301.924)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.438 0.218 303.724)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.381 0.176 304.987)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.291 0.149 302.717)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.977 0.017 320.058)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.952 0.037 318.852)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.903 0.076 319.62)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.833 0.145 321.434)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.74 0.238 322.16)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.667 0.295 322.15)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.591 0.293 322.896)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.518 0.253 323.949)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.452 0.211 324.591)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.401 0.17 325.612)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.293 0.136 325.661)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.971 0.014 343.198)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.948 0.028 342.258)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.899 0.061 343.231)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.823 0.12 346.018)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.718 0.202 349.761)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.656 0.241 354.308)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.592 0.249 0.584)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.525 0.223 3.958)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.459 0.187 3.815)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.408 0.153 2.432)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.284 0.109 3.907)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;grid grid-cols-1 gap-2&quot;&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.969 0.015 12.422)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.941 0.03 12.58)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.892 0.058 10.001)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.81 0.117 11.638)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.712 0.194 13.428)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.645 0.246 16.439)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.586 0.253 17.585)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.514 0.222 16.935)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.455 0.188 13.697)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.41 0.159 10.272)&quot;&gt;&lt;/div&gt;&lt;div class=&quot;aspect-square rounded&quot; style=&quot;background-color:oklch(0.271 0.105 12.094)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;ve tried to keep the balance between all the colors the same as it was in v3, so even though we&#39;ve refreshed things across the board, it shouldn&#39;t feel like a breaking change when upgrading your existing projects.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;container-queries&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#container-queries&quot; class=&quot;anchor&quot;&gt;Container queries&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve brought container query support into core for v4.0, so you don&#39;t need the &lt;code&gt;@tailwindcss/container-queries&lt;/code&gt; plugin anymore:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@container&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid grid-cols-1 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@sm:grid-cols-3&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@lg:grid-cols-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;ve also added support for max-width container queries using the new &lt;code&gt;@max-*&lt;/code&gt; variant:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@container&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;grid grid-cols-3 &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@max-md:grid-cols-1&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Like our regular breakpoint variants, you can also stack &lt;code&gt;@min-*&lt;/code&gt; and &lt;code&gt;@max-*&lt;/code&gt; variants to define container query ranges:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@container&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;flex &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;@min-md:@max-xl:hidden&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Learn more in our all-new &lt;a href=&quot;https://tailwindcss.com/docs/responsive-design#container-queries&quot;&gt;container queries&lt;/a&gt; documentation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;new-3d-transform-utilities&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#new-3d-transform-utilities&quot; class=&quot;anchor&quot;&gt;New 3D transform utilities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve finally added APIs for doing 3D transforms, like &lt;code&gt;rotate-x-*&lt;/code&gt;, &lt;code&gt;rotate-y-*&lt;/code&gt;, &lt;code&gt;scale-z-*&lt;/code&gt;, &lt;code&gt;translate-z-*&lt;/code&gt;, and tons more.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid perspective-distant&quot;&gt;&lt;article class=&quot;relative isolate z-10 flex w-full max-w-80 rotate-x-51 rotate-z-43 flex-col justify-end justify-self-center overflow-hidden rounded-2xl bg-gray-900 px-8 pt-80 pb-8 shadow-xl transition-all duration-500 transform-3d&quot;&gt;&lt;img src=&quot;https://images.unsplash.com/photo-1496128858413-b36217c2ce36?ixlib=rb-4.0.3&amp;amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=3603&amp;amp;q=80&quot; alt=&quot;&quot; class=&quot;absolute inset-0 -z-10 size-full object-cover&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;div class=&quot;absolute inset-0 -z-10 bg-gradient-to-t from-gray-900 via-gray-900/40&quot;&gt;&lt;/div&gt;&lt;div class=&quot;absolute inset-0 -z-10 rounded-2xl ring-1 ring-gray-900/10 ring-inset&quot;&gt;&lt;/div&gt;&lt;div class=&quot;flex flex-wrap items-center gap-y-1 overflow-hidden text-sm/6 text-gray-300&quot;&gt;&lt;time datetime=&quot;2020-03-16&quot; class=&quot;mr-8&quot;&gt;Mar 16, 2020&lt;/time&gt;&lt;div class=&quot;-ml-4 flex items-center gap-x-4&quot;&gt;&lt;svg view-box=&quot;0 0 2 2&quot; class=&quot;-ml-0.5 size-0.5 flex-none fill-white/50&quot;&gt;&lt;circle r=&quot;1&quot; cx=&quot;1&quot; cy=&quot;1&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;div class=&quot;flex gap-x-2.5&quot;&gt;&lt;img src=&quot;https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=facearea&amp;amp;facepad=2&amp;amp;w=256&amp;amp;h=256&amp;amp;q=80&quot; alt=&quot;&quot; class=&quot;size-6 flex-none rounded-full bg-white/10&quot; referrerpolicy=&quot;no-referrer&quot;&gt;Michael Foster&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=&quot;mt-3 text-lg/6 font-semibold text-white&quot;&gt;&lt;span class=&quot;absolute inset-0&quot;&gt;&lt;/span&gt;Boost your conversion rate&lt;/p&gt;&lt;/article&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;perspective-distant&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;rotate-x-51&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;rotate-z-43&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;transform-3d&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;article&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the updated &lt;a href=&quot;https://tailwindcss.com/docs/transform-style&quot;&gt;&lt;code&gt;transform-style&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/rotate&quot;&gt;&lt;code&gt;rotate&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://tailwindcss.com/docs/perspective&quot;&gt;&lt;code&gt;perspective&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://tailwindcss.com/docs/perspective-origin&quot;&gt;&lt;code&gt;perspective-origin&lt;/code&gt;&lt;/a&gt; documentation to get started.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;expanded-gradient-apis&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#expanded-gradient-apis&quot; class=&quot;anchor&quot;&gt;Expanded gradient APIs&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve added a ton of new gradient features in v4.0, so you can pull off even fancier effects without having to write any custom CSS.&lt;/p&gt;
&lt;h3 id=&quot;linear-gradient-angles&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#linear-gradient-angles&quot; class=&quot;anchor&quot;&gt;Linear gradient angles&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Linear gradients now support angles as values, so you can use utilities like &lt;code&gt;bg-linear-45&lt;/code&gt; to create a gradient on a 45 degree angle:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid place-items-center&quot;&gt;&lt;div class=&quot;size-32 rounded-lg bg-linear-45 from-indigo-500 via-purple-500 to-pink-500&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-linear-45&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; from-indigo-500 via-purple-500 to-pink-500&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;You may notice we&#39;ve renamed &lt;code&gt;bg-gradient-*&lt;/code&gt; to &lt;code&gt;bg-linear-*&lt;/code&gt; too — you&#39;ll see why shortly!&lt;/p&gt;
&lt;h3 id=&quot;gradient-interpolation-modifiers&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#gradient-interpolation-modifiers&quot; class=&quot;anchor&quot;&gt;Gradient interpolation modifiers&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ve added the ability to control the color interpolation mode for gradients using a modifier, so a class like &lt;code&gt;bg-linear-to-r/srgb&lt;/code&gt; interpolates using sRGB, and &lt;code&gt;bg-linear-to-r/oklch&lt;/code&gt; interpolates using OKLCH:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;grid grid-cols-1 gap-4&quot;&gt;&lt;div class=&quot;h-16 rounded-lg bg-linear-to-r/srgb from-indigo-500 to-teal-400&quot;&gt;&lt;/div&gt;&lt;div class=&quot;h-16 rounded-lg bg-linear-to-r/oklch from-indigo-500 to-teal-400&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-linear-to-r/srgb&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; from-indigo-500 to-teal-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-linear-to-r/oklch&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; from-indigo-500 to-teal-400&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Using polar color spaces like OKLCH or HSL can lead to much more vivid gradients when the &lt;code&gt;from-*&lt;/code&gt; and &lt;code&gt;to-*&lt;/code&gt; colors are far apart on the color wheel. We&#39;re using OKLAB by default in v4.0 but you can always interpolate using a different color space by adding one of these modifiers.&lt;/p&gt;
&lt;h3 id=&quot;conic-and-radial-gradients&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#conic-and-radial-gradients&quot; class=&quot;anchor&quot;&gt;Conic and radial gradients&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ve added new &lt;code&gt;bg-conic-*&lt;/code&gt; and &lt;code&gt;bg-radial-*&lt;/code&gt; utilities for creating conic and radial gradients:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;div class=&quot;flex justify-around p-8&quot;&gt;&lt;div class=&quot;size-24 rounded-full bg-conic/[in_hsl_longer_hue] from-red-600 to-red-600&quot;&gt;&lt;/div&gt;&lt;div class=&quot;size-24 rounded-full bg-radial-[at_25%_25%] from-white to-zinc-900 to-75%&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-24 rounded-full &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-conic/[in_hsl_longer_hue]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; from-red-600 to-red-600&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-24 rounded-full &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;bg-radial-[at_25%_25%]&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; from-white to-zinc-900 to-75%&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;These new utilities work alongside the existing &lt;code&gt;from-*&lt;/code&gt;, &lt;code&gt;via-*&lt;/code&gt;, and &lt;code&gt;to-*&lt;/code&gt; utilities to let you create conic and radial gradients the same way you create linear gradients, and include modifiers for setting the color interpolation method and arbitrary value support for controlling details like the gradient position.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;starting-style-support&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#starting-style-support&quot; class=&quot;anchor&quot;&gt;@starting-style support&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The new &lt;code&gt;starting&lt;/code&gt; variant adds support for the new CSS &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/@starting-style&quot;&gt;&lt;code&gt;@starting-style&lt;/code&gt;&lt;/a&gt; feature, making it possible to transition element properties when an element is first displayed:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;not-prose isolate&quot;&gt;&lt;figure class=&quot;flex flex-col gap-1 rounded-xl bg-gray-950/5 p-1 inset-ring inset-ring-gray-950/5 dark:bg-white/10 dark:inset-ring-white/10&quot;&gt;&lt;div class=&quot;flex py-0 not-prose overflow-auto rounded-lg bg-white outline outline-white/5 dark:bg-gray-950/50 p-8&quot;&gt;&lt;iframe class=&quot;h-[340px] w-full&quot; allowtransparency=&quot;true&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popovertarget&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;my-popover&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Check for updates&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; popover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;my-popover&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;transition-discrete&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;starting:open:opacity-0&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; ...&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;With &lt;code&gt;@starting-style&lt;/code&gt;, you can finally animate elements as they appear on the page without the need for any JavaScript at all. &lt;a href=&quot;https://caniuse.com/mdn-css_at-rules_starting-style&quot;&gt;Browser support&lt;/a&gt; probably isn&#39;t quite there yet for most teams, but we&#39;re getting close!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;not-variant&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#not-variant&quot; class=&quot;anchor&quot;&gt;not-* variant&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve added a new &lt;code&gt;not-*&lt;/code&gt; variant which finally adds support for the CSS &lt;code&gt;:not()&lt;/code&gt; pseudo-class:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;not-hover:opacity-75&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.not-hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;opacity-75:not&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;*:hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;  opacity&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;75&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;@media&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; not&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;  .not-hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;opacity-75&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    opacity&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;75&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-100)&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It does double duty and also lets you negate media queries and &lt;code&gt;@supports&lt;/code&gt; queries:&lt;/p&gt;
&lt;div data-stack=&quot;true&quot;&gt;&lt;div class=&quot;not-prose rounded-xl in-[figure]:mt-1 in-[figure]:rounded-b-lg in-[figure]:px-0.5 in-[figure]:pb-0.5 dark:outline dark:-outline-offset-1 dark:outline-white/10 dark:in-[figure]:outline-1 dark:in-[figure]:outline-offset-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;HTML&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot; class=&quot;highlighted-word relative before:absolute before:-inset-x-0.5 before:-inset-y-0.25 before:-z-10 before:block before:rounded-sm before:bg-[lab(19.93_-1.66_-9.7)] [.highlighted-word+&amp;amp;]:before:rounded-l-none&quot;&gt;not-supports-hanging-punctuation:px-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;  &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;CSS&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;.not-supports-hanging-punctuation&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;\:&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;px-4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  @&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;supports&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; not&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;hanging-punctuation&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--tw&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;    padding-inline&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;calc&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-blue-200)&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;--spacing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Check out the new &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#not&quot;&gt;&lt;code&gt;not-*&lt;/code&gt; documentation&lt;/a&gt; to learn more.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;even-more-new-utilities-and-variants&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4#even-more-new-utilities-and-variants&quot; class=&quot;anchor&quot;&gt;Even more new utilities and variants&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve added a ton of other new utilities and variants to v4.0 too, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow&quot;&gt;&lt;code&gt;inset-shadow-*&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring&quot;&gt;&lt;code&gt;inset-ring-*&lt;/code&gt;&lt;/a&gt; utilities&lt;/strong&gt; — making it possible to stack up to four layers of box shadows on a single element.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/field-sizing&quot;&gt;&lt;code&gt;field-sizing&lt;/code&gt;&lt;/a&gt; utilities&lt;/strong&gt; — for auto-resizing textareas without writing a single line of JavaScript.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/color-scheme&quot;&gt;&lt;code&gt;color-scheme&lt;/code&gt;&lt;/a&gt; utilities&lt;/strong&gt; — so you can finally get rid of those ugly light scrollbars in dark mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/font-stretch&quot;&gt;&lt;code&gt;font-stretch&lt;/code&gt;&lt;/a&gt; utilities&lt;/strong&gt; — for carefully tweaking variable fonts that support different widths.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#styling-inert-elements&quot;&gt;&lt;code&gt;inert&lt;/code&gt;&lt;/a&gt; variant&lt;/strong&gt; — for styling non-interactive elements marked with the &lt;code&gt;inert&lt;/code&gt; attribute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#first-last-odd-and-even&quot;&gt;&lt;code&gt;nth-*&lt;/code&gt;&lt;/a&gt; variants&lt;/strong&gt; — for doing really clever things you&#39;ll eventually regret.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#implicit-groups&quot;&gt;&lt;code&gt;in-*&lt;/code&gt;&lt;/a&gt; variant&lt;/strong&gt; — which is a lot like &lt;code&gt;group-*&lt;/code&gt;, but without the need for the &lt;code&gt;group&lt;/code&gt; class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support for &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#openclosed-state&quot;&gt;&lt;code&gt;:popover-open&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — using the existing &lt;code&gt;open&lt;/code&gt; variant to also target open popovers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;a href=&quot;https://tailwindcss.com/docs/hover-focus-and-other-states#styling-all-descendants&quot;&gt;descendant variant&lt;/a&gt;&lt;/strong&gt; — for styling all descendant elements, for better or for worse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out the relevant documentation for all of these features to learn more.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;And that&#39;s it — that&#39;s Tailwind CSS v4.0.&lt;/strong&gt; It&#39;s been years of work to get to this point, but we&#39;re all extremely proud of this release and we can&#39;t wait to see what you build with it.&lt;/p&gt;
&lt;p&gt;Check it out, play with it, maybe even break it, and definitely let us know what you think.&lt;/p&gt;
&lt;p&gt;Just no bug reports until tomorrow please — let us at least enjoy one celebratory team dinner and maybe relax in the hot tub at this hotel for a bit believing that somehow we really did ship flawless software.&lt;/p&gt;</description><link>https://tailwindcss.com/blog/tailwindcss-v4</link><guid isPermaLink="false">Tailwind CSS v4.0</guid><pubDate>Wed, 22 Jan 2025 22:00:00 GMT</pubDate><author>Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.0_24evxv_9oi5.jpg" type="image/jpeg"></enclosure></item><item><title>Tailwind CSS v4.0 Beta 1</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Tailwind CSS v4.0-beta&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;864&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0lp~dbroxv_jo.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0lp~dbroxv_jo.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.0lp~dbroxv_jo.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;About eight months ago we &lt;a href=&quot;https://tailwindcss.com/blog/tailwindcss-v4-alpha&quot;&gt;open-sourced our progress&lt;/a&gt; on Tailwind CSS v4.0. Hundreds of hours of fixing bugs, soul-crushing backward compatibility work, and troubleshooting Windows CI failures later, I&#39;m excited to finally tag the first public beta release.&lt;/p&gt;
&lt;p&gt;As I talked about when we published the first alpha, Tailwind CSS v4.0 is an all-new engine built for performance, and designed for the modern web.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Built for performance&lt;/strong&gt; — full builds in the new engine are up to 5x faster, and incremental builds are over 100x faster — and measured in microseconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unified toolchain&lt;/strong&gt; — built-in import handling, vendor prefixing, and syntax transforms, with no additional tooling required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS-first configuration&lt;/strong&gt; — a reimagined developer experience where you customize and extend the framework directly in CSS instead of a JavaScript configuration file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Designed for the modern web&lt;/strong&gt; — built on native cascade layers, wide-gamut colors, and including first-class support for modern CSS features like container queries, &lt;code&gt;@starting-style&lt;/code&gt;, popovers, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&#39;s so much more to say, but everything you need to get started is in the new beta documentation we published today:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tailwindcss.com/docs&quot;&gt;Get started with Tailwind CSS v4.0 Beta 1 →&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Start building and help us bullet-proof this thing for the stable release early in the new year.&lt;/p&gt;</description><link>https://tailwindcss.com/blog/tailwindcss-v4-beta</link><guid isPermaLink="false">Tailwind CSS v4.0 Beta 1</guid><pubDate>Thu, 21 Nov 2024 18:30:00 GMT</pubDate><author>Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.0lp~dbroxv_jo.jpg" type="image/jpeg"></enclosure></item><item><title>Radiant: A beautiful new marketing site template</title><description>&lt;a href=&quot;https://tailwindui.com/templates/radiant&quot;&gt;&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Learn about the Radiant template&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1228&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftemplate.0g-sjocpf8fv8.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftemplate.0g-sjocpf8fv8.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftemplate.0g-sjocpf8fv8.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;
&lt;p&gt;We just wrapped up work on a beautiful new SaaS marketing site template called &lt;a href=&quot;https://tailwindui.com/templates/radiant&quot;&gt;Radiant&lt;/a&gt;, and it&#39;s available now as part of &lt;a href=&quot;https://tailwindui.com/&quot;&gt;Tailwind UI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’s built with Next.js, Framer Motion, and Tailwind CSS, with a blog powered by Sanity.&lt;/p&gt;
&lt;p&gt;It&#39;s been a while since we built a SaaS marketing template like this, and in that time we&#39;ve learned a lot about what makes a template like this useful and easy to work with. We&#39;ve tried to incorporate all of those learnings into Radiant.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://radiant.tailwindui.com/&quot;&gt;live preview&lt;/a&gt; as always for the full experience — there are tons of cool details in this one that you have to see in the browser to really appreciate.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tastefully-interactive&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template#tastefully-interactive&quot; class=&quot;anchor&quot;&gt;Tastefully interactive&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It&#39;s super easy to overdo animation on a site like this. We&#39;ve all seen sites where you can&#39;t even scroll a few pixels without a bunch of different elements animating in to place. Even worse is how slow things feel when you have to wait for the content to appear before you can read it.&lt;/p&gt;
&lt;p&gt;Radiant is loaded with delightful animations, but they are all layered on to existing content and triggered by user interaction so the site still feels fast. In most cases, we went for animations that loop to make elements feel &quot;alive&quot; while you&#39;re interacting with them.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template/scheduling-animation.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We used &lt;a href=&quot;https://www.framer.com/motion/&quot;&gt;Framer Motion&lt;/a&gt; for almost all of the animations. It&#39;s declarative, making it easy to create our own APIs for complex animations that other people can customize without much effort.&lt;/p&gt;
&lt;p&gt;It does have some drawbacks to work around though. For example, when you have multiple elements animating independently it&#39;s annoying to pass a hover state down to each child. We ended up leveraging Framer&#39;s variant propagation to make this work — a hover event triggers a variant change in the parent that propagates down to the children because they share the same variant keys.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;bento-card.tsx&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; BentoCard&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;motion.div&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      initial&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;idle&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      whileHover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;active&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      variants&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; idle&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {},&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; active&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; }}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      data-dark&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;dark&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; ?&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;true&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; :&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; undefined&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;motion.div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There is no difference between the variants in the parent so it doesn&#39;t actually change but the children still get a signal to change variants on hover, even if they are deeply nested.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;map.tsx&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Marker&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;({&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  top&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  offset&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  delay&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; string&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  top&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; number&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  offset&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; number&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  delay&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; number&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;motion.div&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      variants&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        idle&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; scale&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; opacity&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; rotateX&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; rotate&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; },&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;        active&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; scale&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;0.75&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; opacity&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;},&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      }}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      transition&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; duration&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0.25&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; delay&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; ease&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &#39;easeOut&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; }}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      style&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &#39;--offset&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; `&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;offset&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;px`&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; top&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; as&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt; React&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;CSSProperties&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;absolute left-[calc(50%+var(--offset))] size-[38px] drop-shadow-[0_3px_1px_rgba(0,0,0,.15)]&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;motion.div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;/* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The logo timeline animation is a bit different, because we wanted the logos to pause in their current position when you stop hovering, rather than return to their original position. This doesn&#39;t play very well with Framer&#39;s approach of specifying start and end states, so it was actually easier to build this in CSS.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template/logo-timeline.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It exploits the fact that you can set a negative &lt;code&gt;animation-delay&lt;/code&gt; value to offset the start position of the element. That way all the logos share the same animation keyframes but they can start at different positions and have different durations.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;px-3 pt-0.5 pb-1.5 text-xs/5 text-gray-400 dark:text-white/50&quot;&gt;logo-timeline.tsx&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Logo&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;({&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  label&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; string&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  src&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; string&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;  className&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; string&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;      className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;clsx&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;        &#39;absolute top-2 grid grid-cols-[1rem,1fr] items-center gap-2 whitespace-nowrap px-3 py-1&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;        &#39;rounded-full bg-gradient-to-t from-gray-800 from-50% to-gray-700 ring-1 ring-inset ring-white/10&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;        &#39;[--move-x-from:-100%] [--move-x-to:calc(100%+100cqw)] [animation-iteration-count:infinite] [animation-name:move-x] [animation-play-state:paused] [animation-timing-function:linear] group-hover:[animation-play-state:running]&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;size-4&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm/6 font-medium text-white&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;export&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; LogoTimeline&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Row&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Logo&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Loom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;./logo-timeline/loom.svg&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;[animation-delay:-26s] [animation-duration:30s]&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Logo&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        label&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;Gmail&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;./logo-timeline/gmail.svg&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;[animation-delay:-8s] [animation-duration:30s]&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Row&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This approach means we don&#39;t need to track the play state in JavaScript, we can just use a &lt;code&gt;group-hover:[animation-play-state:running]&lt;/code&gt; class to start the animation when the parent is hovered.&lt;/p&gt;
&lt;p&gt;As you&#39;ve maybe noticed, we&#39;re using a bunch of arbitrary properties for individual &lt;code&gt;animation&lt;/code&gt; properties in this component, since these utilities don&#39;t exist in Tailwind today. This is what&#39;s great about building these templates — it helps us find blind spots in Tailwind CSS. Who knows, maybe we&#39;ll see these utilities added for v4.0!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;deliberately-reusable&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template#deliberately-reusable&quot; class=&quot;anchor&quot;&gt;Deliberately reusable&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The trickiest part of designing a SaaS template like this, is coming up with interactive elements that people can apply to their own product without too much effort. There&#39;s nothing worse than buying a template and realizing that it&#39;s so specific to the example content that you can&#39;t actually use it for your own project.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template/light-bento.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We came up with some core graphical elements that most SaaS products might have. A map with pins, a logo cluster, a keyboard — things that could be applied to a bunch of different features. Because we wanted them to be easy to repurpose for your own product, we built a lot of them in code and designed nice APIs for them.&lt;/p&gt;
&lt;p&gt;The logo cluster, for example, has a simple API that lets you pass in your own logos, tweak their position and hover animation to match.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Logo&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;./logo-cluster/dribbble.svg&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; left&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;285&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; top&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; hover&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; x&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; y&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; rotate&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 6&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; delay&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt; 0.3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; }}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The keyboard shortcuts section is another good example. Adding your own shortcuts is as simple as passing an array of key names to the Keyboard component and because each key is a component, you can easily add custom keys or change the layout.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Keyboard&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; highlighted&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;F&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;M&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;L&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It turns out it&#39;s actually quite a lot of work to build a keyboard in code, but at least now you&#39;ll never have to find that out for yourself.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template/keyboard.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Of course, we also left spots for you to drop in screenshots of your own product. Here&#39;s what this section looks like customized to suit our friends at &lt;a href=&quot;https://savvycal.com/&quot;&gt;SavvyCal&lt;/a&gt;, using the same interactive components.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Radiant as SavvyCal&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1335&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsavvycal-radiant.13jb7z3o075s3.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsavvycal-radiant.13jb7z3o075s3.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsavvycal-radiant.13jb7z3o075s3.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;powered-by-a-cms&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template#powered-by-a-cms&quot; class=&quot;anchor&quot;&gt;Powered by a CMS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Usually we just use MDX when adding a blog to a template, but this time we thought it would be fun to play with a headless CMS for a chance instead. We decided to give &lt;a href=&quot;https://www.sanity.io/&quot;&gt;Sanity&lt;/a&gt; a go for this one after &lt;a href=&quot;https://x.com/adamwathan/status/1796225062279717142&quot;&gt;polling our audience&lt;/a&gt; and hearing a lot of good things.&lt;/p&gt;
&lt;p&gt;Instead of creating files, making commits, and managing images and stuff by hand, a CMS lets you handle everything from their UI, so even non-developers can easily contribute.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Sanity Studio&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;878&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsanity-studio.0c2_h4ya66gvd.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsanity-studio.0c2_h4ya66gvd.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fsanity-studio.0c2_h4ya66gvd.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;One cool thing about headless CMSes like Sanity is you get your content back in a structured format, so similar to MDX you can map elements to your own custom components to handle all of your typography styles.&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;PortableText&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  components&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    block&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;      normal&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; ({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;my-10 text-base/8 first:mt-0 last:mb-0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;      h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; ({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-12 mb-10 text-2xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;      h3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; ({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-12 mb-10 text-xl/8 font-medium tracking-tight text-gray-950 first:mt-0 last:mb-0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;      blockquote&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; ({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;blockquote&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;my-10 border-l-2 border-l-gray-300 pl-6 text-base/8 text-gray-950 first:mt-0 last:mb-0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;          {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;blockquote&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    types&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;      image&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; ({&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; })&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;w-full rounded-2xl&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;2000&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;      )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;    /* ... */&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  }}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Working with a CMS also means all of your assets like images are hosted for you, and you can control the size, quality, and format of the image on the fly.&lt;/p&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm/5 max-sm:text-gray-700 sm:font-medium&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  {&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;dayjs&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;publishedAt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&#39;dddd, MMMM D, YYYY&#39;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;mt-2.5 flex items-center gap-3&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;img&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;aspect-square size-6 rounded-full object-cover&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        src&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;64&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        alt&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;    )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;text-sm/5 text-gray-700&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;post&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;author&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Like you might do with front matter in Markdown, you can also enrich content with custom fields. For example, we added a &lt;code&gt;featured&lt;/code&gt; boolean field to the blog post schema so you can highlight some posts in a special section on the blog.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Radiant Blog&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1484&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fblog.0zhb4hy1ege.q.png&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fblog.0zhb4hy1ege.q.png&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fblog.0zhb4hy1ege.q.png&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Sanity in particular is a paid product, but they have a pretty generous free tier which is more than enough to play around. And if you wanted to try out a different headless CMS, I think the Sanity integration we&#39;ve put together here will still serve as a great informative example of how you might approach wiring things up with another tool.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;And that&#39;s &lt;a href=&quot;https://tailwindui.com/templates/radiant&quot;&gt;Radiant&lt;/a&gt;! Have a look under the hood, kick the tires, and let us know what you think.&lt;/p&gt;
&lt;p&gt;Like all of our templates, it&#39;s included with a one-time purchase &lt;a href=&quot;https://tailwindui.com/all-access&quot;&gt;Tailwind UI all-access&lt;/a&gt; license, which is the best way to support our work on Tailwind CSS and make it possible for us to keep building awesome stuff for you for years to come.&lt;/p&gt;</description><link>https://tailwindcss.com/blog/2024-09-12-radiant-a-beautiful-new-marketing-site-template</link><guid isPermaLink="false">Radiant: A beautiful new marketing site template</guid><pubDate>Thu, 12 Sep 2024 10:30:00 GMT</pubDate><author>Dan Hollick</author><enclosure url="https://tailwindcss.com/_next/static/media/twitter-card.0vut5kqy40fm~.png" type="image/jpeg"></enclosure></item><item><title>Headless UI v2.1: Simplified transition API and improved multi-dialog support</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Headless UI v2.1&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;768&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.15jcx1umw6s4u.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.15jcx1umw6s4u.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.15jcx1umw6s4u.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We just released Headless UI v2.1 for React, which dramatically simplifies our transition APIs and adds support for rendering multiple dialogs as siblings.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;simplified-transition-api&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-06-21-headless-ui-v2-1#simplified-transition-api&quot; class=&quot;anchor&quot;&gt;Simplified transition API&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve made transitions way easier in v2.1 by adding a new &lt;code&gt;transition&lt;/code&gt; prop to all of the built-in components you might want to transition, and adding data attributes for each transition stage so you can add transition styles by just throwing some classes on the target element:&lt;/p&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; Menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; MenuButton&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; MenuItem&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; MenuItems&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;@headlessui/react&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Example&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;MenuButton&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;My account&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;MenuButton&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;MenuItems&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        transition&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          transition ease-out&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          data-[closed]:scale-95 data-[closed]:opacity-0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          data-[enter]:duration-200 data-[leave]:duration-300&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;        `&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;/* Menu items… */&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;MenuItems&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Menu&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There are four data attributes you can use to target the different stages of your transitions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data-closed&lt;/code&gt;: The styles the element should transition from when entering and to when leaving.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data-enter&lt;/code&gt;: Styles to apply while the element is entering, like a duration or easing curve.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data-leave&lt;/code&gt;: Styles to apply while the element is leaving, like a duration or easing curve.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data-transition&lt;/code&gt;: Styles to apply while the element is entering or leaving, useful for sharing values between both stages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can even stack these attributes to use different &lt;code&gt;closed&lt;/code&gt; styles for entering and leaving. For example this dialog slides in from the left, but slides out to the right:&lt;/p&gt;
&lt;!-- --&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; Dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;@headlessui/react&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;react&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Example&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  let&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isOpen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; setIsOpen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; onClick&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; setIsOpen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Open dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Dialog&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        open&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isOpen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        onClose&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; setIsOpen&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        transition&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;        className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          transition duration-300 ease-out&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          data-[closed]:opacity-0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          data-[closed]:data-[enter]:-translate-x-8&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;          data-[closed]:data-[leave]:translate-x-8&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;        `&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        {&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400);font-style:italic&quot;&gt;/* Dialog content… */&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Dialog&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And for transitioning regular HTML elements or other components, you can still use the &lt;code&gt;&amp;lt;Transition&amp;gt;&lt;/code&gt; component but with the new data attribute APIs:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme has-highlighted&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; Transition&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;@headlessui/react&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-200)&quot;&gt; &quot;react&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; Example&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; {&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt; setIsShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; useState&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-amber-200)&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;  return&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; onClick&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={()&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-teal-200)&quot;&gt; setIsShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;Toggle&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Transition&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; show&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:var(--color-rose-300)&quot;&gt;isShowing&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;        &amp;lt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-300)&quot;&gt; className&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt;&quot;transition duration-300 data-[closed]:opacity-0&quot;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;I will fade in and out&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;      &amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:var(--color-violet-300)&quot;&gt;Transition&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;    &amp;lt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line -mx-5 pl-[calc(var(--spacing)*5-2px)] border-l-2 pr-5 border-sky-400 bg-sky-300/15&quot;&gt;&lt;span style=&quot;color:var(--color-slate-50)&quot;&gt;  )&lt;/span&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-slate-400)&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We&#39;ve already updated all of Tailwind UI to use this new transition API and the code is a lot simpler and lighter. Take a look at the &lt;a href=&quot;https://tailwindui.com/components/application-ui/overlays/modal-dialogs&quot;&gt;Modal Dialog&lt;/a&gt;, &lt;a href=&quot;https://tailwindui.com/components/application-ui/elements/dropdowns&quot;&gt;Dropdown&lt;/a&gt;, &lt;a href=&quot;https://tailwindui.com/components/application-ui/overlays/slide-overs&quot;&gt;Slide-over&lt;/a&gt;, &lt;a href=&quot;https://tailwindui.com/components/marketing/elements/flyout-menus&quot;&gt;Flyout Menu&lt;/a&gt;, or &lt;a href=&quot;https://tailwindui.com/components/application-ui/forms/select-menus&quot;&gt;Select Menu&lt;/a&gt; components for more examples.&lt;/p&gt;
&lt;p&gt;All of the existing APIs continue to work for backwards compatibility, but this new approach is what we&#39;re going to recommend going forward.&lt;/p&gt;
&lt;p&gt;Check out the updated &lt;a href=&quot;https://headlessui.com/react/transition&quot;&gt;&lt;code&gt;Transition&lt;/code&gt; component documentation&lt;/a&gt; to learn more.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rendering-multiple-dialogs-as-siblings&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-06-21-headless-ui-v2-1#rendering-multiple-dialogs-as-siblings&quot; class=&quot;anchor&quot;&gt;Rendering multiple dialogs as siblings&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In Headless UI v2.1 you can finally render multiple dialogs at the same time without nesting one inside the other.&lt;/p&gt;
&lt;p&gt;This can be really helpful when two unrelated parts of your application need to show a dialog at the same time — for example maybe you already have some sort of confirmation dialog open but another part of your app detects that you&#39;ve lost network connectivity or your session has timed-out and needs to throw up a new dialog on top.&lt;/p&gt;
&lt;p&gt;Here&#39;s what something like that might look like with &lt;a href=&quot;https://tailwindui.com/templates/catalyst&quot;&gt;Catalyst&lt;/a&gt;, the application UI kit we&#39;ve been working on recently:&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog%2F2024-06-21-headless-ui-v2-1%2Fheadlessui-sibling-dialogs.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We keep track of the order in which each dialog is opened, and whichever one was opened last is the one that will close when you press escape or click outside the dialog.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;To start using this stuff today, just install the latest version of Headless UI:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; @headlessui/react@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;If you run into any issues, let us know on &lt;a href=&quot;https://github.com/tailwindlabs/headlessui&quot;&gt;GitHub&lt;/a&gt;!&lt;/p&gt;</description><link>https://tailwindcss.com/blog/2024-06-21-headless-ui-v2-1</link><guid isPermaLink="false">Headless UI v2.1: Simplified transition API and improved multi-dialog support</guid><pubDate>Fri, 21 Jun 2024 15:00:00 GMT</pubDate><author>Adam Wathan, Jonathan Reinink</author><enclosure url="https://tailwindcss.com/_next/static/media/card.15jcx1umw6s4u.jpg" type="image/jpeg"></enclosure></item><item><title>Automatically clean up whitespace and duplicate class names</title><description>&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;img alt=&quot;Catalyst application layout preview&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;736&quot; decoding=&quot;async&quot; data-nimg=&quot;1&quot; style=&quot;color:transparent&quot; srcset=&quot;/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.027r9580~4o01.jpg&amp;amp;w=1920&amp;amp;q=75 1x, /_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.027r9580~4o01.jpg&amp;amp;w=3840&amp;amp;q=75 2x&quot; src=&quot;https://tailwindcss.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcard.027r9580~4o01.jpg&amp;amp;w=3840&amp;amp;q=75&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We just released a new version of &lt;code&gt;prettier-plugin-tailwindcss&lt;/code&gt; which adds support for removing unnecessary whitespace and duplicate classes when sorting.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cleaning-up-unnecessary-whitespace&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-05-30-prettier-plugin-collapse-whitespace#cleaning-up-unnecessary-whitespace&quot; class=&quot;anchor&quot;&gt;Cleaning up unnecessary whitespace&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When you&#39;re copying around class names or deleting a class name from the middle of a list, it&#39;s easy to end up with some extra whitespace that needs to be cleaned up.&lt;/p&gt;
&lt;p&gt;Now our Prettier plugin will handle this for you automatically, so you don&#39;t need to clean it up yourself.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-05-30-prettier-plugin-collapse-whitespace/collapse-whitespace.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;removing-duplicate-classes&quot;&gt;&lt;a href=&quot;https://tailwindcss.com/blog/2024-05-30-prettier-plugin-collapse-whitespace#removing-duplicate-classes&quot; class=&quot;anchor&quot;&gt;Removing duplicate classes&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our &lt;a href=&quot;https://tailwindcss.com/docs/editor-setup#intellisense-for-vs-code&quot;&gt;VS Code extension&lt;/a&gt; has warned you about duplicate class names for a long time, but now our Prettier plugin can remove those duplicate classes for you automatically.&lt;/p&gt;
&lt;div data-media=&quot;true&quot;&gt;&lt;div class=&quot;not-prose relative overflow-hidden rounded-xl&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-0 rounded-xl ring-1 ring-slate-950/10 ring-inset dark:ring-white/10&quot;&gt;&lt;/div&gt;&lt;video autoplay=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot; src=&quot;https://assets.tailwindcss.com/blog/2024-05-30-prettier-plugin-collapse-whitespace/remove-duplicates.mp4&quot;&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;To start playing with these improvements in your own projects, just install the latest version:&lt;/p&gt;
&lt;div&gt;&lt;div class=&quot;rounded-xl bg-gray-950 in-data-stack:mt-0 in-data-stack:rounded-none in-[figure]:-mx-1 in-[figure]:-mb-1 in-data-stack:[:first-child&gt;&amp;amp;]:rounded-t-xl in-data-stack:[:first-child&gt;&amp;amp;]:*:rounded-t-xl in-data-stack:[:last-child&gt;&amp;amp;]:rounded-b-xl in-data-stack:[:last-child&gt;&amp;amp;]:*:rounded-b-xl&quot;&gt;&lt;div class=&quot;rounded-xl p-1 text-sm scheme-dark in-data-stack:rounded-none dark:bg-white/5 dark:inset-ring dark:inset-ring-white/10 in-data-stack:dark:inset-ring-0 not-prose&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;/div&gt;&lt;div class=&quot;*:flex *:*:shrink-0 *:*:grow *:overflow-auto *:rounded-lg *:bg-white/10! *:p-5 dark:*:bg-white/5! **:[.line]:isolate **:[.line]:block **:[.line]:not-last:min-h-lh *:inset-ring *:inset-ring-white/10 dark:*:inset-ring-white/5 *:*:max-w-none&quot;&gt;&lt;pre class=&quot;shiki tailwindcss-theme&quot; style=&quot;background-color:transparent;color:var(--color-slate-50)&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:var(--color-pink-400)&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; i&lt;/span&gt;&lt;span style=&quot;color:var(--color-sky-300)&quot;&gt; prettier-plugin-tailwindcss@latest&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;If you run into any issues, let us know on &lt;a href=&quot;https://github.com/tailwindlabs/prettier-plugin-tailwindcss/&quot;&gt;GitHub&lt;/a&gt;!&lt;/p&gt;</description><link>https://tailwindcss.com/blog/2024-05-30-prettier-plugin-collapse-whitespace</link><guid isPermaLink="false">Automatically clean up whitespace and duplicate class names</guid><pubDate>Fri, 31 May 2024 16:30:00 GMT</pubDate><author>Adam Wathan</author><enclosure url="https://tailwindcss.com/_next/static/media/card.027r9580~4o01.jpg" type="image/jpeg"></enclosure></item></channel></rss>