<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>dark-mode on Retro Dispatch</title><link>https://phantompixeldev.github.io/hugo-theme-retrocss/tags/dark-mode/</link><description>Recent content in dark-mode on Retro Dispatch</description><generator>Hugo</generator><language>en-us</language><copyright>© 2026 Retro Dispatch</copyright><lastBuildDate>Wed, 02 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://phantompixeldev.github.io/hugo-theme-retrocss/tags/dark-mode/index.xml" rel="self" type="application/rss+xml"/><item><title>Designing a token system that survives dark mode</title><link>https://phantompixeldev.github.io/hugo-theme-retrocss/posts/hello-retro/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://phantompixeldev.github.io/hugo-theme-retrocss/posts/hello-retro/</guid><description>&lt;h2 id="why-tiers"&gt;
 Why tiers
 &lt;a class="heading-anchor" href="#why-tiers" aria-label="Link to Why tiers"&gt;&lt;span aria-hidden="true"&gt;#&lt;/span&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;A colour is not one value. The blue that fills a button is not the blue that
reads as text on grey, and using either in the other&amp;rsquo;s place is how a design
system ships something illegible.&lt;/p&gt;
&lt;h2 id="the-four-tiers"&gt;
 The four tiers
 &lt;a class="heading-anchor" href="#the-four-tiers" aria-label="Link to The four tiers"&gt;&lt;span aria-hidden="true"&gt;#&lt;/span&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Fill, on-fill, on-surface, and states. Every hue carries all four.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma retro-code"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--retro-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#0000aa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--retro-primary-fg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--retro-primary-text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#000080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="what-it-buys-you"&gt;
 What it buys you
 &lt;a class="heading-anchor" href="#what-it-buys-you" aria-label="Link to What it buys you"&gt;&lt;span aria-hidden="true"&gt;#&lt;/span&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;One class sets both a fill and the text colour that survives on it.&lt;/p&gt;</description></item><item><title>Painting the right theme before the first frame</title><link>https://phantompixeldev.github.io/hugo-theme-retrocss/posts/painting-the-right-theme/</link><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid>https://phantompixeldev.github.io/hugo-theme-retrocss/posts/painting-the-right-theme/</guid><description>&lt;p&gt;A theme flash is not a rendering quirk. It is a page admitting that it decided
what colour to be after it had already been drawn.&lt;/p&gt;
&lt;h2 id="do-it-in-css"&gt;
 Do it in CSS
 &lt;a class="heading-anchor" href="#do-it-in-css" aria-label="Link to Do it in CSS"&gt;&lt;span aria-hidden="true"&gt;#&lt;/span&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;The dark palette is emitted twice: once for &lt;code&gt;[data-theme=&amp;quot;dark&amp;quot;]&lt;/code&gt;, and once
under &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt; for &lt;code&gt;:root:not([data-theme=&amp;quot;light&amp;quot;])&lt;/code&gt;.
A visitor whose system is dark gets dark on the first paint, before any script
has run — before the bundle has even been requested.&lt;/p&gt;</description></item></channel></rss>