<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>CSSence: Recent</title>
<description>Recent posts, but every blog post type represented.</description>
<language>en</language>
<link>https://cssence.com/rss.xml</link>
<managingEditor>rss-feed@cssence.com (Matthias Zöchling)</managingEditor>
<webMaster>rss-feed@cssence.com (Matthias Zöchling)</webMaster>
<atom:link href="https://cssence.com/rss.xml" rel="self" type="application/rss+xml" />
<item>
<link>https://cssence.com/2026/supports-at-rule-support/</link>
<title>How to feature detect support for new at-rule?</title>
<description>
<![CDATA[
<article aria-labelledby="comment-1">
<h3 id="comment-1"><span data-href="https://mas.to/@CSSence/117041581041602029, https://bsky.app/profile/cssence.com/post/3mscwwwplzc2l"><b>Matthias Zöchling</b> wrote on <time datetime="2026-08-05T06:53:16Z">August 5, 2026 at 06:53</time></span></h3>
<p>Nifty!</p>
<pre><code class="language-css">@supports at-rule(@supports) {
	/* ✅ The browser supports `@supports at-rule(…)` */
}</code></pre>
<p>As seen in <a href="https://www.bram.us/2026/03/15/at-rule/">“Detect at-rule support in CSS with <code>@supports at-rule(@keyword)</code>”</a> by 
@bram.us</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><a href="https://mastodon.social/@nicolaschevobbe/117041792000638070" data-u="NC"><b>Nicolas Chevobbe</b> wrote on <time datetime="2026-08-05T07:46:55Z">August 5, 2026 at 07:46</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@CSSence@mas.to</span>.</small></p>
<p>eh, this was just sent<br><a href="https://groups.google.com/a/mozilla.org/g/dev-platform/c/rm53qxu-8xU/m/ZQAycjzeCgAJ">“Intent to Prototype: CSS at-rule() function for @supports”</a></p>
</article>
]]>
</description>
<pubDate>Wed, 05 Aug 2026 06:53:16 GMT</pubDate>
<guid>https://cssence.com/2026/supports-at-rule-support/</guid>
</item>
<item>
<link>https://cssence.com/2026/screen-reader-pronunciation/</link>
<title>Should you alter screen reader pronunciation?</title>
<description>
<![CDATA[
<article aria-labelledby="comment-1">
<h3 id="comment-1"><a href="https://mastodon.online/@shaedrich/116978256487644309" data-u="SH"><b>Sebastian Hädrich</b> wrote on <time datetime="2026-07-25T02:29:00Z">July 25, 2026 at 02:29</time></a></h3>
<p>Is there a way to indicate “[sic]” to a #screenreader without it reading the brackets verbatim?</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><span data-href="https://mas.to/@CSSence/116978887251111777"><b>Matthias Zöchling</b> wrote on <time datetime="2026-07-25T05:09:25Z">July 25, 2026 at 05:09</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@shaedrich@mastodon.online</span>.</small></p>
<p>I wouldn’t worry about it:</p>
<p><span aria-hidden="true">🔗 </span><a href="https://adrianroselli.com/2023/04/dont-override-screen-reader-pronunciation.html">“Don’t Override Screen Reader Pronunciation”</a></p>
</article>
]]>
</description>
<pubDate>Sat, 25 Jul 2026 05:09:25 GMT</pubDate>
<guid>https://cssence.com/2026/screen-reader-pronunciation/</guid>
</item>
<item>
<link>https://cssence.com/2026/farewell-twitter/</link>
<title>Farewell Twitter</title>
<description>
<![CDATA[
<p>Next week would have been be my fifteenth Twitter anniversary, but that ain’t gonna happen, and it’s anyhow not a thing.</p>
<p>For two reasons: Someone renamed Twitter, but more importantly, I deactivated my account 30&nbsp;days ago, meaning the grace period is over and the account is gone. No big deal, I replaced it with Mastodon in <a href="https://cssence.com/2022/farewell-twitter/">2022</a> and after an unnecessary <a href="https://cssence.com/2023/originally-published-elsewhere/">course correction</a> I stopped tweeting in <a href="https://cssence.com/2024/farewell-twitter/">2024.</a> But the account still existed.</p>
<p>For two reasons: To avoid link rot, and to prevent others from grabbing the account. So why now? What changed?</p>
<p>I stopped caring. But in general it’s not a good idea to have any kind of association with the platform. Even when you think it had reached rock bottom, it manages to take a turn for the worse. Good riddance.</p>
<h2>Better times</h2>
<p>Before turning off the lights, I picked a handful of tweets so I could create an <strong>image gallery.</strong> I obviously did this way too late, conversations with people that themselves had deleted their accounts have already been broken. And even though I have all the data required to restore these on my own site, I couldn’t be arsed to spend the time to create mockups just so I could take screenshots.</p>
<p>But I did sneak something in. For older tweets that predate a special 💒 day in my life, I made sure that <a href="https://cssence.com/about/matt/">my birth name</a> was shown in the screenshot. After all, I did use the platform for more then a decade, and a lot has happened during that time.</p>
<p>I suppose the gallery is my personal acknowledgment that Twitter was the place to be back then.</p>
<figure class="standout"><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20121026.webp" alt="On August 23, 2012, I posted about “Go Dark For IE”, a movement to get rid of older versions of Internet Explorer. Little did we know that its final version would exist for another decade."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20140612.webp" alt="On June 14, 2014, I took part in painting the web purple, an attempt to get the hashtag #663399Becca trending. If you wonder why rebeccapurple is the keyword for the color #663399, its origin story is a very sad one."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20151122.webp" alt="On November 24, 2015, Lea Verou casually mentions that she likes my user name @CSSence. My response involved praise for the user name of a special person in her life, namely Chris Lilley a.k.a @svgeesus."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20160503.webp" alt="On May 3, 2016, I’m paraphrasing Jeremy Keith in my confession that the three tools I can’t work without are HTML and CSS. Yes, you read that right."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20160617.webp" alt="On June 17, 2016, I met my web hero Jeremy Keith at the CSS Day conference, but contrary to previous encounters, this time a photo was taken to proof it. As it happens, Harry Roberts a.k.a. @csswizardry took it."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20161202.webp" alt="On December 2, 2016, I’m facing my biggest audience yet, on stage of @dotCSS in Paris."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20161230.webp" alt="On December 30, 2016, The Dot Post announces that the video of my talk is available. My Topic was a call for more diversity in design."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20171210.webp" alt="On December 10, 2017, I look back at the year to conclude that it was all about accessiblity, a topic that would change the course of my career."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20191123.webp" alt="On November 24, 2019, I receive praise for my latest site redesign from none other than my web heroine Sara Soueidan."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20191125.webp" alt="On November 25, 2019, I’m at the WeAreWebClerks conference in Vienna. It takes place in an old observatory, and by sheer coincidence there are planets on my shirt."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20200408.webp" alt="On April 8, 2020, a conversation between Eric Meyer and Brian Kardell reminds me that CSS Naked Day takes place on my birthday."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20200525.webp" alt="On May 25, 2020, I thank Ethan Marcotte for ten years of Responsive Web Design. Embracing it turned out to be another turning point in my career."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20200527.webp" alt="On May 27, 2020, I agree with Florin Pop that with the use of a simple outline declaration one can go far when it comes to CSS debugging."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20200729.webp" alt="On July 29, 2020, Cassie Evans reveals that makefrontendshitagain.party is an actual website. I learn about this and other facts at a virtual conference live on my computer, because pandemic."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20201211.webp" alt="On December 11, 2020, I go a little overboard when writing a blog post, in an attempt to mimick the style of Ahmad Shadeed. He’s a good sport about it."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20210127.webp" alt="On January 27, 2021, I had a brain fart moment. (Look I’m all for alt text, but let’s keep it at that.)"><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20210831.webp" alt="On August 31, 2021, I post what would become my pinned tweet: HTML ≥ CSS ≥ JS."><img loading="lazy" src="https://cssence.com/2026/farewell-twitter/20220228.webp" alt="On February 28, 2022, I changed the initial three letters of my Twitter user name to uppercase, in an attempt to make it more accessible.">
</figure>
<hr>
<p>Okay, fine. I’m not really into nostalgia. I just wanted an excuse to do something with <strong>masonry layout,</strong> and this is problably my one and only chance. Goes without saying, <a href="https://caniuse.com/css-grid-lanes">support for grid lanes</a> ain’t there yet, so I did the next best thing, or several things, depending on the <a href="https://cssence.com/settings/">site’s page style.</a></p>
<ul>
<li>On an unstyled page, the images are inline elements, as one would expect.</li>
<li>In the <em>Basic</em> page style, I used floats. 😬</li>
<li>In the <em>Advanced</em> page style, I called flexbox to the rescue.</li>
<li>For the time being, the <em>Elegant</em> page style is almost an exact copy of <em>Advanced,</em> but I’ll replace it with actual grid lanes when browser support finally gets there.</li>
</ul>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-0" hidden>
<h3 id="comment-0"><span data-href="https://mas.to/@CSSence/116888929724854318, https://bsky.app/profile/cssence.com/post/3mq75nj7d5k2p"><b>Matthias Zöchling</b> wrote on <time datetime="2026-07-08T09:40:00Z">July 8, 2026 at 09:40</time></span></h3>
<p>Something something masonry layout.<br><a href="https://cssence.com/2026/farewell-twitter/">cssence.com/2026/farewell-twitter</a></p>
</article>
<p>No comments have been added so far.</p>
]]>
</description>
<pubDate>Wed, 08 Jul 2026 09:40:00 GMT</pubDate>
<guid>https://cssence.com/2026/farewell-twitter/</guid>
</item>
<item>
<link>https://cssence.com/2026/frontend-graz/</link>
<title>Frontend Graz meetup #10</title>
<description>
<![CDATA[
<p>I’ve traveled to Graz to for once *not* speak at the <a href="https://www.meetup.com/frontend-graz/events/314982300/">Frontend Graz meetup,</a> and instead be a regular attendee who can simply enjoy the show. By the way, this was the tenth edition, because we include the times when it was still called CSS-in-Graz.</p>
<p>Train delays and extreme heat cannot take away from the fact that it was once again a great experience.</p>
<h2 id="talks">Talks &amp; Speakers</h2>
<ul>
<li>“Fighting Hardware Obsolescence With Greener Frontend Code” by <a href="https://ganslandt.xyz/">Björn Ganslandt</a></li>
<li>“Rslidy: Lightweight, Accessible, and Responsive HTML5 Slide Decks” by <a href="https://keithandrews.com/keith/">Keith Andrews</a></li>
<li>“Web Performance: What Actually Matters - a deep dive into Core Web Vitals, performance debugging, and real-world optimizations” by <a href="https://www.acurion.at/">Stefan Schintler</a></li>
</ul>
<h2 id="summary">(Short) Summary</h2>
<p>Björn kicked it off with a topic that truly hit home, fighting hardware obsolescence is something I deeply care about. Progressive enhancement and testing on older devices can keep hardware around for longer, thus slowing down the increase of e-waste.</p>
<p>Keith then talked about <a href="https://github.com/tugraz-isds/rslidy">Rslidy</a>, which allows you to run HTML slide decks in the browser. Its file size is already impressive, but guess what, it comes with zero dependencies. Goes without saying, Rslidy has been used to present Rslidy, clearly a case of dogfooding.</p>
<p>Finally, Stefan sealed the deal by talking about what actually matters when it comes to web performance, with his fresh take on Lighthouse scores.</p>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><a href="https://front-end.social/@matuzo/116835202588861418" data-u="MM"><b>Manuel Matuzović</b> wrote on <time datetime="2026-06-29T20:08:31Z">June 29, 2026 at 20:08</time></a></h3>
<p>It warms my heart when friends from Vienna travel 2-3 hours just to attend my meetup in Graz. Today, two of them were here. ❤️</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><span data-href="https://mas.to/@CSSence/116835383666378433"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-29T20:54:34Z">June 29, 2026 at 20:54</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@matuzo@front-end.social</span>.</small></p>
<p>Thank you Manuel for hosting this great event.</p>
<p>Three excellent talks, good food and good company. 🤗</p>
</article>
]]>
</description>
<pubDate>Mon, 29 Jun 2026 20:50:00 GMT</pubDate>
<guid>https://cssence.com/2026/frontend-graz/</guid>
</item>
<item>
<link>https://cssence.com/2026/breaking-bad/</link>
<title>Breaking bad</title>
<description>
<![CDATA[
<aside class="standoff -large" aria-labelledby="miniseries">
<p>This is the third blog post of my <a href="https://cssence.com/2026/tales-from-the-hospital/"><strong id="miniseries">Tales from the hospital</strong></a> miniseries. I wrote about edge cases in web design that I encountered between surgeries.</p>
<ol class="figure" aria-labelledby="miniseries">
<li><a href="https://cssence.com/2026/breakpoints/">Breakpoints</a></li>
<li><a href="https://cssence.com/2026/breaking-points/">Breaking points</a></li>
<li>Breaking bad</li>
</ol>
</aside>
<p>Contrary to my earlier hospital encounters this year, my third visit was planned. As are most site designs <strong>not</strong> an accident, someone did put in the effort.</p>
<p>Which makes one thing even more worrisome: There being so little emphasis on the actual content these days must have happened according to someone’s plan.</p>
<p>I cannot find the source, but I saw a conference talk on the subject, and this was my takeaway: On desktop, only 30% of the initial viewport is filled with the content someone came for. On mobile, it’s 17%. Whether I remember these numbers correctly does not matter, because we can see for ourselves. Open any popular website in incognito mode, and try to spot the content. Here’s what I got when I went to FIFA.com.</p>
<figure><img loading="lazy" src="https://cssence.com/2026/breaking-bad/fifa-com.webp" alt="On larger screens, a popover is centered atop the content, which itself is partly covered by a cookie consent banner. On smaller screens, no content to be found, even the cookie consent banner’s action buttons are out of view." style="--frame: ">
</figure>
<p>On mobile, I see a glimpse of the site’s primary navigation, but almost the entire screen is covered by letting me know that they care about my privacy, an information so long it requires scrolling. On desktop, two popovers compete for my attention. I didn’t calculate how much content I can still see. On desktop I’d anyhow have to look past the fact that the content is dimmed. On mobile it’s easy, as the answer is zero percent.</p>
<p>Now, you could argue that some obstrusive banner is only presented on first visit and can be dismissed permanently. But usually it doesn’t stop there, because many sites also want you to look at advertisement, sign up for their newsletter, and download their app. And let’s not forget these popovers that open automatically if you haven’t interacted with the page for more than two seconds.</p>
<h2>Past to present</h2>
<p>While the <a href="https://geocities.restorativland.org/">early days of the web</a> may be compared to the Wild West, eventually sites became more polished, but along the way something must have happened that made us pivot to the current state of web design. We are quick to blame legislative directives like the <em>General Data Protection Regulation</em>. Sure, it did cause all those pesky cookie consent banners, but the European Union does not require you to inform your visitors that they should prefer your app instead, nor to come up with any of these other questionable UX patterns.</p>
<p>There’s a chance I’m seeing the past through rose-tinted glasses. Maybe the situation was never really great, except for one point in time: The rise of the mobile web and in turn responsive design required us get rid of a lot of the crap that had been sitting next to our content, but after that brief period in the first half of the last decade, <a href="https://cssence.com/2015/we-broke-the-internet/">site design started to deteriorate</a> again.</p>
<p>Working on the web, I get to enjoy a lot of personal blogs that show me <a href="https://whimsical.club/">whimsical design</a> instead of said questionable patterns. But those are the exception. And while this miniseries was supposed to be about edge cases in web design, I’m afraid what I’m describing in this third blog post has become the norm.</p>
<p>So how do we get out of this mess?</p>
<h2>Present to future</h2>
<p>Apparently it has to get worse before it gets better. And it sure does.</p>
<p>Matthias Ott concludes that <a href="https://matthiasott.com/notes/ad-infinitum">we no longer get people sent our way.</a></p>
<blockquote cite="https://matthiasott.com/notes/ad-infinitum">
<p>Generative UI doesn’t link to your article, necessarily. It absorbs your article, synthesizes it into a widget, and presents it as Google’s own answer. Information agents don’t send users to websites.</p>
</blockquote>
<p>Great, without visitors there’s no need to fix all these broken sites, right?<sup><a id="ref-fn-1" href="https://cssence.com/2026/breaking-bad/#fn-1" role="doc-noteref" aria-label="Footnote #1">[1]</a></sup></p>
<p>My personal site shows no advertisement, I pay it out of my own pocket. So I don’t mind whether people come to my site or not. I happily provide other forms to consume my content, like <a href="https://cssence.com/rss/">RSS.</a> Back in the day, when we were all still trying to figure out if XHTML is the way to go, I envisioned a future where the use of valid XML would give us an easy way for humans and machines to consume our content. But the latest turn of events, namely <a href="https://www.techpolicy.press/the-web-is-being-made-accessible-for-ai-not-people/">providing instructions for LLMs</a> so AI can easily consume the content, is quite something. Wait, what?</p>
<p>Well, yes, we actually do “fix” broken sites, just <strong>not for people, but for AI.</strong> Amazing! After an eternity of being told that improving accessibility is hard, along comes AI, and now we have no problem spending the time and effort to make sites accessible for something that requires vast amounts of energy and water, as if there was no climate crisis to begin with.</p>
<blockquote>
<p>When a society is unmoved by decades of advocacy from disabled communities but springs into action when a tech company needs the same accommodation, it reveals whose claims on shared resources are treated as legitimate and whose are treated as optional.</p>
<footer>— <cite><a href="https://www.techpolicy.press/the-web-is-being-made-accessible-for-ai-not-people/">The Web Is Being Made Accessible for AI, Not People</a>, by Jonathan Zong &amp; Frank Elavsky.</cite></footer>
</blockquote>
<p>I don’t see a silver lining at the moment.<sup><a id="ref-fn-2" href="https://cssence.com/2026/breaking-bad/#fn-2" role="doc-noteref" aria-label="Footnote #2">[2]</a></sup></p>
<section>
<h2 id="fns">Footnotes</h2>
<ol>
<li id="fn-1">In case you can’t tell, I’m being sarcastic. <a href="https://cssence.com/2026/breaking-bad/#ref-fn-1" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
<li id="fn-2">I’ll revist this article in five years, on June&nbsp;4, 2031. Maybe, by then, the AI bubble has burst, and things have improved. <a href="https://adactio.com/journal/22540">One can dream.</a> <a href="https://cssence.com/2026/breaking-bad/#ref-fn-2" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
</ol>
</section>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-0" hidden>
<h3 id="comment-0"><span data-href="https://mas.to/@CSSence/116691235241510552, https://bsky.app/profile/cssence.com/post/3mnheajfwcs2o"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-04T09:29:00Z">June 4, 2026 at 09:29</time></span></h3>
<p>Part Three of my miniseries about edge cases in web design:</p>
<p>Will your site still be seen by anyone?</p>
<p>Outlook not so good.<br><a href="https://cssence.com/2026/breaking-bad/">cssence.com/2026/breaking-bad</a></p>
</article>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><span data-href="https://bsky.app/profile/cssence.com/post/3mnhihqdbyc2c"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-04T10:44:00Z">June 4, 2026 at 10:44</time></span></h3>
<p>As it happens, I just watched <a href="https://youtu.be/KSFsZmxM9sA">“The future of the web might lie in its past”</a> by @kevinpowell.co … he too wants to revisit the topic in five years. 🙃</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><a href="https://bsky.app/profile/sam-rivera.bsky.social/post/3mnhhvfbdsn2q" data-u="SR"><b>Sam Rivera</b> wrote on <time datetime="2026-06-04T11:01:00Z">June 4, 2026 at 11:01</time></a></h3>
<p>That generative AI synthesizing content claim is wild. What’s the move for creators?</p>
</article>
<article aria-labelledby="comment-3">
<h3 id="comment-3"><span data-href="https://bsky.app/profile/cssence.com/post/3mnhihqdbyc2c"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-04T11:11:00Z">June 4, 2026 at 11:11</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@sam-rivera.bsky.social</span>.</small></p>
<p>Dance like nobody’s watching?</p>
</article>
<article aria-labelledby="comment-4">
<h3 id="comment-4"><span data-href="https://mas.to/@CSSence/116696162627688404"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-05T06:48:49Z">June 5, 2026 at 06:48</time></span></h3>
<p>Thanks @annaecook@mastodon.social for that Forbes article link, I too think we should fix the actual issues, not work around them just to make LLMs happy.</p>
<blockquote>
<p>I’ve used the “AI reads like people do” case to justify continued accessibility work <a href="https://www.forbes.com/councils/forbesagencycouncil/2025/11/13/how-accessibility-prepares-your-website-for-ai-search/">(link to Forbes on that).</a></p>
<p>But there’s something really upsetting about having to do that when ultimately we’ve always had people who need accessibility.</p>
<p>All people need accessibility.</p>
<footer>— <cite><a href="https://mastodon.social/@annaecook/116693022595575272">mastodon.social/@annaecook/116693022595575272</a></cite></footer>
</blockquote>
<p>In addition, the second link in the thread is the very article I’ve quoted when writing mine.</p>
</article>
]]>
</description>
<pubDate>Thu, 04 Jun 2026 09:29:00 GMT</pubDate>
<guid>https://cssence.com/2026/breaking-bad/</guid>
</item>
<item>
<link>https://cssence.com/2026/html-boilerplate/</link>
<title>HTML boilerplate</title>
<description>
<![CDATA[
<article aria-labelledby="comment-1">
<h3 id="comment-1"><a href="https://front-end.social/@matuzo/116679187282249130" data-u="MM"><b>Manuel Matuzović</b> wrote on <time datetime="2026-06-02T06:51:46Z">June 2, 2026 at 06:51</time></a></h3>
<p>I should probably do a 2026 update of my <a href="https://www.matuzo.at/blog/html-boilerplate/">HTML boilerplate</a> post. I just need to figure out what changed in the past 5 years.</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><span data-href="https://mas.to/@CSSence/116679423362112170"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-02T07:51:49Z">June 2, 2026 at 07:51</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@matuzo@front-end.social</span>.</small></p>
<p>Please do. Looking forward to the <em>cutting the mustard</em> part.</p>
</article>
<article aria-labelledby="comment-3">
<h3 id="comment-3"><a href="https://mastodon.social/@gray17/116681101133588991" data-u="@gray17@mastodon.social"><b>@gray17@mastodon.social</b> wrote on <time datetime="2026-06-02T14:58:29Z">June 2, 2026 at 14:58</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@matuzo@front-end.social</span>.</small></p>
<p>I omit the <code>&lt;head&gt;</code> and <code>&lt;body&gt;</code> tags (reduces unnecessary indentation)</p>
<p><code>og:title</code> is redundant with <code>&lt;title&gt;</code>, it seems silly to do both.<br><code>og:description</code> seems to me the only useful og: tag.<br>well, <code>og:image</code> and <code>og:image:alt</code> are useful too if there’s a meaningful image. (I strongly resist the idea of meaningless hero images.)</p>
<p>add <code>&lt;meta name="color-scheme"&gt;</code><br>maybe also <code>&lt;meta name="text-scale"&gt;</code></p>
</article>
<article aria-labelledby="comment-4">
<h3 id="comment-4"><a href="https://typo.social/@myfonj/116687467267303924" data-u="@myfonj@typo.social"><b>@myfonj@typo.social</b> wrote on <time datetime="2026-06-02T14:58:29Z">June 2, 2026 at 14:58</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@gray17@mastodon.social</span>.</small></p>
<p>This 👆️. Although, personally, for <code>"light dark"</code> I’ve settled on using inline style on HTML, (like <code>&lt;html lang="…" style="color-scheme: light dark;"&gt;</code>) rather than meta tag inside the head, since it seems more straightforward and can be leveraged later in a user toggle: <code>html[style*="color-scheme: dark;"]</code>.</p>
</article>
<article aria-labelledby="comment-5">
<h3 id="comment-5"><span data-href="https://mas.to/@CSSence/116833876218107974"><b>Matthias Zöchling</b> wrote on <time datetime="2026-06-29T14:31:12Z">June 29, 2026 at 14:31</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@myfonj@typo.social</span>.</small></p>
<p>Thanks to <code>:has()</code> you can <a href="https://cssence.com/2024/color-scheme-switcher/">have your cake and eat it.</a> 🙂</p>
</article>
<article aria-labelledby="comment-6">
<h3 id="comment-6"><a href="https://typo.social/@myfonj/116838401534640264" data-u="@myfonj@typo.social"><b>@myfonj@typo.social</b> wrote on <time datetime="2026-06-30T09:42:03Z">June 30, 2026 at 09:42</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@CSSence@mas.to</span>.</small></p>
<p>Sure, just that <code>html[style*="…"]</code> feels a little bit more straightforward and possibly much more performant than <code>html:has(&gt;head&gt;meta[…])</code>. Either way, this hatch is basically just a very sad workaround for something we should not be forced to deal with to begin with: simply setting the palette through light-dark() function and setting color-scheme on element(s) should be all we need; no “prefers”, no classes, no attributes, nothing. It’s just the non-colour and non-images stuff, such as font weight, that we have to anchor this way, till CSS functions arrive…</p>
</article>
]]>
</description>
<pubDate>Tue, 02 Jun 2026 07:51:49 GMT</pubDate>
<guid>https://cssence.com/2026/html-boilerplate/</guid>
</item>
<item>
<link>https://cssence.com/2026/react-space/</link>
<title>React space</title>
<description>
<![CDATA[
<article aria-labelledby="comment-1">
<h3 id="comment-1"><a href="https://bsky.app/profile/sjoy.lol/post/3mjekvgwem224" data-u="SJ"><b>Sara Joy</b> wrote on <time datetime="2026-04-13T09:36:00Z">April 13, 2026 at 09:36</time></a></h3>
<p>Quick front end question:<br>How often have you seen elaborate mid-sentence CSS flex and gap or padding styling within React apps, when all that’s missing is what I’m calling a “React space”: <code>{' '}</code>?</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><span data-href="https://bsky.app/profile/cssence.com/post/3mjelzgpxxk2q"><b>Matthias Zöchling</b> wrote on <time datetime="2026-04-13T09:56:00Z">April 13, 2026 at 09:56</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@sjoy.lol</span>.</small></p>
<p>My answer is “not yet”, and I’d hope so is yours, but I guess there’s a reason the question exists.</p>
<p>Full disclosure: The answer comes from someone who has to endure React. And I sprinkle in quite a few <code>{' '}</code> on an average work day.</p>
</article>
<article aria-labelledby="comment-3">
<h3 id="comment-3"><a href="https://bsky.app/profile/sjoy.lol/post/3mjestho6lk2b" data-u="SJ"><b>Sara Joy</b> wrote on <time datetime="2026-04-13T11:58:00Z">April 13, 2026 at 11:58</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@CSSence@mas.to</span>.</small></p>
<p>Nope I’ve had to fix/simplify issues like this twice now 😅 just wondering how common it is!</p>
</article>
]]>
</description>
<pubDate>Mon, 13 Apr 2026 09:56:00 GMT</pubDate>
<guid>https://cssence.com/2026/react-space/</guid>
</item>
<item>
<link>https://cssence.com/2026/font-variant-emoji/</link>
<title>Unicode Variation Selectors</title>
<description>
<![CDATA[
<p>While I knew that Unicode has <a href="https://en.wikipedia.org/wiki/Variation_Selectors_(Unicode_block)">Variation Selectors (VS),</a> I had no idea that CSS has a <code>font-variant-emoji</code> property. So it was time to connect the dots.</p>
<blockquote>
<p>A <strong>variation selector</strong> is a Unicode code point that, when placed immediately after another character, signals a specific presentation preference to the renderer. Variation selectors produce no visible output of their own — they are invisible modifiers.</p>
<footer>— <cite><a href="https://symbolfyi.com/guides/variation-selectors-explained/">Variation Selectors: How Unicode Controls Text vs Emoji Display</a>, symbolfyi.com</cite></footer>
</blockquote>
<p>Of particular importance are the last two, VS15 and VS16, because they act as the emoji/text presentation toggle. It’s worth noting that not all emojis come in both forms, but if we <a href="https://www.unicode.org/emoji/charts/emoji-variants.html">look at those that do,</a> appending the variation selector can make a difference.</p>
<blockquote>
<p>When VS15 is appended to a symbol, it forces it to be displayed as text (black and white glyph). Contrarily, when VS16 is appended, it forces the color version to be displayed (emoji).</p>
<footer>— <cite><a href="https://www.codejam.info/2021/11/emoji-variation-selector.html">Emoji displayed as monochrome symbol? 🤔 The Unicode variation selector</a>, codejam.info</cite></footer>
</blockquote>
<p>This leaves us with the default case, i.e. an emoji that is all by itself, without variation selector. How will it be displayed? While there should be a simple answer, in practice it’s a bit more complicated, as the article I just quoted explains.</p>
<p>But what I actually wanted to talk about is what CSS adds to the mix with the <code>font-variant-emoji</code> property. Safari does not support the property (yet), in other browsers it only has an effect on emojis without a variation selector, which makes sense.</p>
<p>Long story short, I created a test page<sup><a id="ref-fn-1" href="https://cssence.com/2026/font-variant-emoji/#fn-1" role="doc-noteref" aria-label="Footnote #1">[1]</a></sup> to see how emojis are presented, and to see what the impact of <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/font-variant-emoji">the different values</a> of <code>font-variant-emoji</code> is. While the values <code>text</code> and <code>emoji</code> live up to their purpose, the values <code>normal</code> and <code>unicode</code> always resulted in the text form, independent of operating system, web browser, and emoji used.<sup><a id="ref-fn-2" href="https://cssence.com/2026/font-variant-emoji/#fn-2" role="doc-noteref" aria-label="Footnote #2">[2]</a></sup></p>
<h2 id="showcase">Showcase</h2>
<p><a href="https://codepen.io/cssence/pen/WbGYvXz">View “Unicode meets font-variant-emoji” on CodePen.</a></p>
<section>
<h2 id="fns">Footnotes</h2>
<ol>
<li id="fn-1">Fair warning, the test page ended up being unnecessarily complex, because initially I thought browsers have issues with monochromatic emojis in combination with <code>color-scheme</code> declarations that are not set on the <code>:root</code> level. But upon further investigation I realized that’s not the case. <a href="https://cssence.com/2026/font-variant-emoji/#ref-fn-1" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
<li id="fn-2">I’m not yet sure what to make of it. But as with most of <a href="https://cssence.com/series/test-pages/">my test pages:</a> To be continued. <a href="https://cssence.com/2026/font-variant-emoji/#ref-fn-2" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
</ol>
</section>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-0" hidden>
<h3 id="comment-0"><span data-href="https://mas.to/@CSSence/116395556590205462, https://bsky.app/profile/cssence.com/post/3mje2f6rxos2u"><b>Matthias Zöchling</b> wrote on <time datetime="2026-04-12T20:54:00Z">April 12, 2026 at 20:54</time></span></h3>
<p>✍️ In case you haven’t heard of <code>font-variant-emoji</code>, neither have I.</p>
<p><a href="https://cssence.com/2026/font-variant-emoji/">cssence.com/2026/font-variant-emoji</a></p>
</article>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><a href="https://bsky.app/profile/littlefair.ca/post/3mjerrbz2f22i" data-u="SL"><b>Sam Littlefair</b> wrote on <time datetime="2026-04-13T11:39:00Z">April 13, 2026 at 11:39</time></a></h3>
<p>This is excellent! I hate it when I try to insert a Unicode pictogram and it renders as an emoji.</p>
</article>
]]>
</description>
<pubDate>Sun, 12 Apr 2026 20:54:00 GMT</pubDate>
<guid>https://cssence.com/2026/font-variant-emoji/</guid>
</item>
<item>
<link>https://cssence.com/2026/animating-emojis/</link>
<title>Animating emojis (2026)</title>
<description>
<![CDATA[
<p>I dedided to stay in <em>glass</em> territory: After last year’s use of the two <a href="https://cssence.com/2025/animating-emojis/">Hourglass</a> emojis I’m moving on to <strong>sunglasses</strong>.</p>
<p>We all know that the <a href="https://emojipedia.org/smiling-face-with-sunglasses">smiling face with sunglasses</a>&nbsp;<span aria-hidden="true">😎</span> exists in Unicode, but what about creating it manually? Putting 🕶️ on 🙂 should take us there.</p>
<p>After finishing the initial animation, I realized I could throw in another one, so I made the smiley squint while the glasses are off. In doing so, I paid an homage to the <a href="https://cssence.com/2019/animating-emojis/">original animation</a> that started it all.</p>
<p>I also realized that I could add sunglasses to many other emojis. Put them on a cat&nbsp;<span aria-hidden="true">😺</span>, you get a cool cat. Nothing is off limits, but I beg you to leave the <a href="https://cssence.com/2020/animating-emojis/">monkey</a>&nbsp;<span aria-hidden="true">🐵</span> alone.</p>
<h2 id="showcase">Showcase</h2>
<p><a href="https://codepen.io/cssence/pen/wBzYNxm">View “Animating Emojis - Sunglasses” on CodePen.</a></p>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><span data-href="https://mas.to/@CSSence/116385604233287342, https://bsky.app/profile/cssence.com/post/3mj7mxmpmns2q"><b>Matthias Zöchling</b> wrote on <time datetime="2026-04-11T08:17:00Z">April 11, 2026 at 08:17</time></span></h3>
<p>My <a href="https://cssence.com/series/animating-emojis/">annual Emoji animation</a> returns, meaning there are now eight animations nobody asked for.</p>
<p>I made this on Linux, fingers crossed that it’ll look decent with the emoji set on your OS too.</p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><a href="https://mas.to/@iamdtms/116385669685727027" data-u="TD"><b>Tamás Dohány</b> wrote on <time datetime="2026-04-11T10:46:23Z">April 11, 2026 at 10:46</time></a></h3>
<p><a href="https://codepen.io/iamdtms/pen/LgeeMZ">Time flies! pen</a><br>- Animate Pseudo Emoji Content</p>
</article>
]]>
</description>
<pubDate>Sat, 11 Apr 2026 08:17:00 GMT</pubDate>
<guid>https://cssence.com/2026/animating-emojis/</guid>
</item>
<item>
<link>https://cssence.com/2026/breaking-points/</link>
<title>Breaking points</title>
<description>
<![CDATA[
<aside class="standoff -large" aria-labelledby="miniseries">
<p>This is the second blog post of my <a href="https://cssence.com/2026/tales-from-the-hospital/"><strong id="miniseries">Tales from the hospital</strong></a> miniseries. I wrote about edge cases in web design that I encountered between surgeries.</p>
<ol class="figure" aria-labelledby="miniseries">
<li><a href="https://cssence.com/2026/breakpoints/">Breakpoints</a></li>
<li>Breaking points</li>
<li><a href="https://cssence.com/2026/breaking-bad/">Breaking bad</a></li>
</ol>
</aside>
<p>For the first couple of weeks I refused to join the hospital Wi-Fi, instead I relied on my phone’s data plan. The problem is, there are thousands of patients and personnel all connecting to the same set of cellular towers, which obviously puts a burden on the system.</p>
<p>What I got in terms of connection speed I would rank somewhere slightly below 3G. Videos on YouTube would load sometimes, depending on the time of day. All other videos did not, I got network errors, most likely due to improperly handled timeouts.</p>
<p>Videos aside, for the majority of websites to load in the first place, I had to be very patient. (Not a problem, I’ve been a patient after all. Get it? Sorry.)</p>
<p>Here’s what I got trying to access a repository on GitHub. The HTML did load, but no stylesheets nor any JavaScript had been applied.</p>
<figure><img src="https://cssence.com/2026/breaking-points/github-without-css.webp" alt="My attempt to open the open-ui GitHub repository on a slow internet connection had essentially been a failure." style="--frame:#fff">
</figure>
<p>No stylesheets? Might as well use a <a href="https://cssence.com/2026/text-based-web-browsers/">text-based web browser.</a></p>
<h2>Client-side rendering</h2>
<p>How well a site fares also depends on the underlying technology. If you are lucky, the server already returns your requested content in the retrieved HTML.</p>
<p>On the other hand, if you have to wait for a large JavaScript file to get requested, downloaded, parsed, and executed, so that it then hopefully will fetch actual content, there’s a chance some step along the way won’t be successful, especially on a slow connection. As a result, you may be starring at a blank page indefinitely, usually without any information that something went wrong.</p>
<p>Put simply, I have a feeling that the “HTML” you got looks like this, courtesy of <em>insert name of JavaScript framework:</em></p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
	&lt;head&gt;&lt;!-- … --&gt;&lt;/head&gt;
	&lt;body&gt;
		&lt;script src=&quot;/app.js&quot;&gt;&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>Whenever that’s the case, <strong>someone did not do the <a href="https://cssence.com/2021/the-day-the-website-stood-still/">progressive enhancement</a> homework.</strong></p>
<h2>A call for lightweight websites</h2>
<p>Don’t leave your site visitors empty-handed, do this instead:</p>
<ul>
<li>Prioritize content.</li>
<li>Put emphasis on performance.</li>
<li>Fail gracefully.</li>
</ul>
<p>I’ll keep this essay short, because I’m gonna hand over to Marijke Luttekes, who already wrote what needs to be said in her superb article <a href="https://marijkeluttekes.dev/blog/articles/2026/01/21/why-light-weight-websites-may-one-day-save-your-life/">»Why light-weight websites may one day save your life«.</a></p>
<blockquote cite="https://marijkeluttekes.dev/blog/articles/2026/01/21/why-light-weight-websites-may-one-day-save-your-life/">
<p>I do not see as much talk about website performance and size as I would. Usually, the people talking about it are the artisans who care, or those who have been told by tools like Lighthouse that their stats are wrong.</p>
</blockquote>
<p>On the upside, my own site performed well on said slow connection. Am I one of those artisans Marijke is talking about?</p>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-0" hidden>
<h3 id="comment-0"><span data-href="https://mas.to/@CSSence/116130032183771712, https://bsky.app/profile/cssence.com/post/3mfo52yq5sk2f"><b>Matthias Zöchling</b> wrote on <time datetime="2026-02-25T07:14:00Z">February 25, 2026 at 07:14</time></span></h3>
<p>Part Two of my miniseries about edge cases in web design:</p>
<p>Will all the resources on your site finish loading?</p>
<p>Only at the best of times.<br><a href="https://cssence.com/2026/breaking-points/">cssence.com/2026/breaking-points</a></p>
</article>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><span data-href="https://mas.to/@CSSence/116130038061363436"><b>Matthias Zöchling</b> wrote on <time datetime="2026-02-25T07:15:00Z">February 25, 2026 at 07:15</time></span></h3>
<p>Tl;dr, you can skip reading my article, instead head straight over to @mahryekuh@hachyderm.io’s site and read <a href="https://marijkeluttekes.dev/blog/articles/2026/01/21/why-light-weight-websites-may-one-day-save-your-life/">»Why light-weight websites may one day save your life«.</a></p>
</article>
<article aria-labelledby="comment-2">
<h3 id="comment-2"><a href="https://hachyderm.io/@mahryekuh/116137871016892582" data-u="ML"><b>Marijke Luttekes</b> wrote on <time datetime="2026-02-26T16:27:56Z">February 26, 2026 at 16:27</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@CSSence@mas.to</span>.</small></p>
<p>Thank you for mentioning me! Loved your article too.</p>
<p>I hope you get well soon!</p>
</article>
<article aria-labelledby="comment-3">
<h3 id="comment-3"><span data-href="https://mas.to/@CSSence/116138413487226674"><b>Matthias Zöchling</b> wrote on <time datetime="2026-02-26T18:45:53Z">February 26, 2026 at 18:45</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@mahryekuh@hachyderm.io</span>.</small></p>
<p>Aw, thanks for the kind words.</p>
</article>
<article aria-labelledby="comment-4">
<h3 id="comment-4"><span data-href="https://bsky.app/profile/cssence.com/post/3mfo5xepdgk2f"><b>Matthias Zöchling</b> wrote on <time datetime="2026-02-25T07:31:00Z">February 25, 2026 at 07:31</time></span></h3>
<p>Seconds after I posted my latest article I ran into this gem from @dbushell.com, so I’m gonna link to it:<br><span aria-hidden="true">🔗 </span><a href="https://dbushell.com/2025/06/13/your-framework-is-showing-nextjs-error/">»Your Framework is Showing«</a></p>
<p>Throwing such an error message towards your visitors violates my “Fail gracefully” bullet point.</p>
</article>
<article aria-labelledby="comment-5">
<h3 id="comment-5"><a href="https://bsky.app/profile/dbushell.com/post/3mfo6dfxx2k2f" data-u="DB"><b>David Bushell</b> wrote on <time datetime="2026-02-25T07:37:00Z">February 25, 2026 at 07:37</time></a></h3>
<p data-chain="reply"><small>In reply to: <span>@cssence.com</span>.</small></p>
<p>great article!</p>
<p>yours i mean! and mine i guess 🙂</p>
</article>
<article aria-labelledby="comment-6">
<h3 id="comment-6"><span data-href="https://bsky.app/profile/cssence.com/post/3mfo6ioqw4c2f"><b>Matthias Zöchling</b> wrote on <time datetime="2026-02-25T07:40:00Z">February 25, 2026 at 07:40</time></span></h3>
<p data-chain="reply"><small>In reply to: <span>@dbushell.com</span>.</small></p>
<p>Long Distance High Five! 🙂</p>
</article>
]]>
</description>
<pubDate>Wed, 25 Feb 2026 07:14:00 GMT</pubDate>
<guid>https://cssence.com/2026/breaking-points/</guid>
</item>
<item>
<link>https://cssence.com/2025/without-further-notice/</link>
<title>Redesigning in the open - Without further notice</title>
<description>
<![CDATA[
<p>New design coming soon?</p>
<blockquote cite="https://cssence.com/2024/redesigning-in-the-open/">
<p><strong>No, not on this site</strong> in <a href="https://cssence.com/about/versions/">the foreseeable future.</a> I like my current way of doing incremental changes.</p>
</blockquote>
<p>… is <a href="https://cssence.com/2024/redesigning-in-the-open/">what I wrote last year</a> about this site’s design, only to start working on another redesign a couple of months later.</p>
<p>Well, guess what, after working incrementally on it from February to May, I think I’m done. But now it’s November, and you still see the to-be-replaced design. What gives?</p>
<p>Despite all those incremental changes, there never was a banner message indicating an ongoing redesign, stating “if things look wonky, that’s why”, because those changes remained hidden. In the unlikely event that someone headed over the my Settings page, they could have encountered the new design in the <em>page style</em> dropdown, which is where is was (and still is) buried for all those months. In other words, I’ve been <strong>redesigning in the open, hidden behind a flag.</strong></p>
<p>This may not work for everybody, as not everyone has multiple styles on their site, let alone a Settings page that allows you to choose a style, but there are other ways to pull this off in the open. Alas, they are not the scope of today’s article.</p>
<p>Personally, my stategy has served me well, because the new design uses a lot new CSS features that are not yet classified as <em>widely available</em> in <a href="https://web.dev/baseline/">Baseline</a> terms, so it remains to be seen when I’m going to make the switch, i.e. when the new design will become the default. To make things worse, I still like my old design more. Obviously, it will eventually happen, because writing CSS in 2025 is different, especially when compared to the CSS I wrote four years ago, when my last major redesign took place. In other words, looks aside, I like the new CSS under the hood a lot.</p>
<hr>
<p>Whenever I do a major redesign, I jot down a couple of noteworthy facts, which is exactly what I’ll do for the remainder of this editorial.</p>
<h2>Starting from scratch</h2>
<p>A clean slate can be very liberating, but in my case I had to be backwards-compatible at the same time, because changing the HTML meant I had to retrofit such changes into the existing design(s). Luckily, the semantic markup I had in place was very capable of housing the new design too, only minor tweaks were necessary. Most importantly, no additional wrapper divs had to be introduced. 😌</p>
<h2>Included features</h2>
<p>Okay, no more stalling, let me run through the interesting bits.</p>
<h3>Native CSS nesting</h3>
<p>I started using native nesting for everything: Not just regular selectors, but also pseudo elements and media queries. When I wrote <a href="https://cssence.com/2024/is-css-alive/">»Is CSS alive«</a>, my verdict on nesting has been <q cite="https://cssence.com/2024/is-css-alive/">Take it or leave it.</q> To my own surprise I grew very fond of it. Just make sure that your selectors do not get unnecessary complex, don’t let your nesting levels run too deep, and avoid <a href="https://dev.to/kilianvalkhof/the-gotchas-of-css-nesting-58m9">the gotchas that come with nesting.</a></p>
<h3>Nested color scheme</h3>
<p>Yeah, the new design features a dark color scheme on the top level, but the actual content adapts to user preference. Confused? I already blogged about this technique in depth in my <a href="https://cssence.com/2025/nesting-color-schemes/">»Nesting color schemes«</a> essay.</p>
<h3>Logical properties</h3>
<p>I’m a big fan of logical properties, and by starting from scratch I was finally able to use them exclusively.</p>
<h3>Media queries &amp; breakpoints</h3>
<p>I was leaning towards <a href="https://youtu.be/AMPKmh98XLY">Intrinsic Web Design</a> to let my content roam free, in hopes of needing little to no breakpoints. But I didn’t achieve that in this redesign. It turned out to be almost the opposite, for the first time I even have additional tweaks for screen sizes below 360&nbsp;pixels, intended for smartwatches. In said smartwatch territory I even made sure that my site works on circular displays.</p>
<figure id="figure-1"><img loading="lazy" src="smartwatch.webp" alt="How the top part of this article might look like when viewed on a circular smart watch display." style="--frame: ">
<figcaption>The new design on a 240x240pixel circular screen.</figcaption>
</figure>
<h3>Layout …</h3>
<p>Floats are back. Yes, you read that right, but obviously I’m using floats for their true purpose, not in the hacky way we did layout in the past. Floats are for minor things, the heavy lifting is done with Grid and Flexbox. And I even ended up with my first use of <code>display: contents</code>.</p>
<h3>… and more</h3>
<p>Speaking of using a property for the first time, in the new design I even made use of <code>border-image</code><sup><a id="ref-fn-1" href="https://cssence.com/2025/without-further-notice/#fn-1" role="doc-noteref" aria-label="Footnote #1">[1]</a></sup>. Just like floats that’s something from ye olden days. We used border images to <a href="https://cssence.com/2011/sliding-door-no-more/">do weird things in the past</a><sup><a id="ref-fn-2" href="https://cssence.com/2025/without-further-notice/#fn-2" role="doc-noteref" aria-label="Footnote #2">[2]</a></sup>, but there are lots of <a href="https://www.smashingmagazine.com/2024/01/css-border-image-property/">clever ways you can use them today.</a></p>
<p>That’s about it, but if you look closely you’ll find <code>text-wrap</code>’s pretty and balance options, the <code>clamp()</code> function, and more. Color is the only thing I haven’t fully embraced yet, I’m still predominantely using hex notation and the sRGB color space.</p>
<p>One last thing: Like in previous redesigns, the site navigation (and footer) is a defining feature, and this time I had some fun with the number of columns.</p>
<h2>Still hidden</h2>
<p>I’ve named my new page style “Elegant”. As stated, at the time of writing this post, it hasn’t become the default yet, I’m still showing the old “Advanced” style. You can head over to <a href="https://cssence.com/settings/">Settings</a> and flip the switch yourself.</p>
<p>With all that being said, I have a strange feeling that the next redesign is right around the corner.</p>
<section>
<h2 id="updates">Update</h2>
<p id="update-1"><time class="update" datetime="2025-12-02">December 2, 2025:</time> I pulled the switch, the <em>Elegant page style</em> is now the default.</p>
</section>
<section>
<h2 id="fns">Footnotes</h2>
<ol>
<li id="fn-1">To be exact, I only have a single use case, I’m applying it to some images in my blog posts, namely those that should not touch the edge of their <code>&lt;figure&gt;</code> container. While photos usually go edge-to-edge, for certain graphics I use the border image to add a colored frame that matches their dominant background color. <a href="https://cssence.com/2025/without-further-notice/#figure-1">The screenshot above</a> even has a transparent frame. <a href="https://cssence.com/2025/without-further-notice/#ref-fn-1" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
<li id="fn-2">Case in point, that link goes to an old article of mine called »Sliding door, no more« from 2011. It starts with an introduction that is <em>floated</em> to the right in the new design—well, actually to the <code>inline-end</code>, you do remember I said logical properties? 😉 <a href="https://cssence.com/2025/without-further-notice/#ref-fn-2" role="doc-backlink" aria-label="Back to article">↩︎</a></li>
</ol>
</section>

<hr>
<h2 id="comments">Comments</h2>
<article aria-labelledby="comment-0" hidden>
<h3 id="comment-0"><span data-href="https://mas.to/@CSSence/115510256498379995, https://bsky.app/profile/cssence.com/post/3m4zxlgkqis2t"><b>Matthias Zöchling</b> wrote on <time datetime="2025-11-07T11:15:00Z">November 7, 2025 at 11:15</time></span></h3>
<p>I have a philosophical thought experiment for you:<br>If a redesign happens in the open, and no one is around to see it, did it go live?</p>
<p><a href="https://cssence.com/2025/without-further-notice/">cssence.com/2025/without-further-notice</a></p>
</article>
<article aria-labelledby="comment-1">
<h3 id="comment-1"><span data-href="https://mas.to/@CSSence/115650667380184994, https://bsky.app/profile/cssence.com/post/3m6zavcrhps2m"><b>Matthias Zöchling</b> wrote on <time datetime="2025-12-02T15:09:00Z">December 2, 2025 at 15:09</time></span></h3>
<p>“Baseline widely available” is a good thing to look out for when it comes to CSS features, but given that my blog’s core audience uses the latest browsers, I just went all in and made my new design the default.</p>
</article>
]]>
</description>
<pubDate>Fri, 07 Nov 2025 11:15:00 GMT</pubDate>
<guid>https://cssence.com/2025/without-further-notice/</guid>
</item>
<item>
<link>https://cssence.com/2025/css-in-graz/</link>
<title>CSS-in-Graz meetup #7</title>
<description>
<![CDATA[
<p>I went to Graz with a talk named <a href="https://cssence.github.io/slides-cssingraz2025/">“CSS has come full circle”</a> in my backpack, that I presented at the <a href="https://www.meetup.com/css-in-graz/events/308080536/">seventh CSS-in-Graz meetup.</a> I was followed by other attendees and our host <a href="https://www.matuzo.at/">Manuel</a>, who made up some inspiring impromptu talks on the spot.</p>
<hr>
<p>Usually I do a little coverage of the event, but it was <a href="https://www.bbc.com/news/articles/ced27g4e6xwo">overshadowed by current events [content warning: disturbing scenes].</a> Violence has no place in society. 💔</p>

<hr>
<h2 id="comments">Comments</h2>
<p>Comments are closed.</p>
]]>
</description>
<pubDate>Tue, 10 Jun 2025 21:58:00 GMT</pubDate>
<guid>https://cssence.com/2025/css-in-graz/</guid>
</item>
</channel>
</rss>
