<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Abhishek Sawant — Blog</title><description>Dispatches from the workbench — essays on design systems, performance, and the honest craft of building interfaces that feel physical.</description><link>https://abhisawant.me/</link><item><title>A View Transition Starts With A Screenshot</title><link>https://abhisawant.me/blog/a-view-transition-starts-with-a-screenshot/</link><guid isPermaLink="true">https://abhisawant.me/blog/a-view-transition-starts-with-a-screenshot/</guid><description>The browser photographs your page before and after a change and animates the photographs, which explains duplicate names, smeared text, and a frozen page.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Animation</category><category>Browser_APIs</category></item><item><title>Container Queries Need A Container</title><link>https://abhisawant.me/blog/container-queries-need-a-container/</link><guid isPermaLink="true">https://abhisawant.me/blog/container-queries-need-a-container/</guid><description>Why an element can never respond to its own width, what inline-size containment quietly costs you, and how the browser decides which container answers a query.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Layout</category><category>Design_Systems</category></item><item><title>CSS Grid Sizes Tracks, Not Items</title><link>https://abhisawant.me/blog/css-grid-sizes-tracks-not-items/</link><guid isPermaLink="true">https://abhisawant.me/blog/css-grid-sizes-tracks-not-items/</guid><description>Why a three-column grid overflows its container, what the fr unit is actually dividing up, and the four rules that follow from the answer.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Layout</category></item><item><title>Grid Places First, Sizes Second</title><link>https://abhisawant.me/blog/grid-places-first-sizes-second/</link><guid isPermaLink="true">https://abhisawant.me/blog/grid-places-first-sizes-second/</guid><description>The placement algorithm runs on line numbers and spans alone, before any track has a width, which is why phantom columns appear and negative line numbers quietly stop working.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Layout</category></item><item><title>Nothing Tells You When Sticky Sticks</title><link>https://abhisawant.me/blog/nothing-tells-you-when-sticky-sticks/</link><guid isPermaLink="true">https://abhisawant.me/blog/nothing-tells-you-when-sticky-sticks/</guid><description>A sticky element pins without changing a single style, so here is how to detect the pinned state with a sentinel, and how CSS now does it natively.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Layout</category><category>Browser_APIs</category></item><item><title>Rem Is A Setting, Not A Size</title><link>https://abhisawant.me/blog/rem-is-a-setting-not-a-size/</link><guid isPermaLink="true">https://abhisawant.me/blog/rem-is-a-setting-not-a-size/</guid><description>Browser zoom scales pixels too, so the real difference between rem and px is whether your layout listens to the reader&apos;s font-size setting. Here is how to decide per property.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Accessibility</category><category>Design_Systems</category></item><item><title>Subgrid Borrows Its Parent&apos;s Tracks</title><link>https://abhisawant.me/blog/subgrid-borrows-its-parents-tracks/</link><guid isPermaLink="true">https://abhisawant.me/blog/subgrid-borrows-its-parents-tracks/</guid><description>Nested grids can&apos;t align with each other because tracks stop at the container that declared them. Subgrid is the one keyword that removes the boundary.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Layout</category></item><item><title>Theming Is Three Separate Questions</title><link>https://abhisawant.me/blog/theming-is-three-separate-questions/</link><guid isPermaLink="true">https://abhisawant.me/blog/theming-is-three-separate-questions/</guid><description>light-dark(), contrast-color() and style queries each answer a different question about a component&apos;s surroundings, and picking the wrong one is how themes break.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Design_Systems</category><category>Accessibility</category></item><item><title>What :has() Actually Selects</title><link>https://abhisawant.me/blog/what-has-actually-selects/</link><guid isPermaLink="true">https://abhisawant.me/blog/what-has-actually-selects/</guid><description>The argument is non-forgiving, the specificity leaks out of it, and the anchor sits where you started — the rules that make advanced :has() predictable.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>CSS</category><category>Forms</category><category>Performance</category></item></channel></rss>