<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Base on Socle</title><link>https://socle.uncinq.dev/docs/css-base/base/</link><description>Recent content in Base on Socle</description><generator>Hugo</generator><language>en</language><atom:link href="https://socle.uncinq.dev/docs/css-base/base/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://socle.uncinq.dev/docs/css-base/base/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/overview/</guid><description>&lt;p&gt;&lt;code&gt;@layer base&lt;/code&gt; styles native HTML elements so that unstyled markup already looks right. There is no class to apply: write &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;input type=&amp;quot;date&amp;quot;&amp;gt;&lt;/code&gt; and they are styled.&lt;/p&gt;
&lt;p&gt;Every value comes from a custom property resolved by &lt;a href="https://github.com/uncinq/design-tokens"&gt;@uncinq/design-tokens&lt;/a&gt; and &lt;a href="https://github.com/uncinq/component-tokens"&gt;@uncinq/component-tokens&lt;/a&gt;. This package hardcodes almost nothing, so restyling is a matter of changing a token, not overriding a rule.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;css/base.css&lt;/code&gt; imports all 23 files below, one page each.&lt;/p&gt;
&lt;h2 id="typography-and-text"&gt;Typography and text&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Page&lt;/th&gt;
 &lt;th&gt;File&lt;/th&gt;
 &lt;th&gt;Selectors&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../body/"&gt;Body&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/body.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;body&lt;/code&gt;: background, text color, font family, size, weight, line-height&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../headings/"&gt;Headings&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/headings.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;h1&lt;/code&gt; to &lt;code&gt;h6&lt;/code&gt;, plus a per-level size from &lt;code&gt;--font-size-heading-01&lt;/code&gt; to &lt;code&gt;-06&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../paragraphs/"&gt;Paragraphs&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/typography.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;p&lt;/code&gt;: block spacing and &lt;code&gt;--max-width-paragraph&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../link/"&gt;Links&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/link.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;a&lt;/code&gt;: colour, underline, focus ring, external-link marker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../list/"&gt;Lists&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/list.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ul&lt;/code&gt;, &lt;code&gt;ol&lt;/code&gt;, &lt;code&gt;li&lt;/code&gt; in prose context, including nested indentation&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../blockquote/"&gt;Blockquotes&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/blockquote.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;blockquote&lt;/code&gt;, &lt;code&gt;blockquote cite&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../code/"&gt;Code&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/code.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;code&lt;/code&gt;, &lt;code&gt;kbd&lt;/code&gt;, &lt;code&gt;samp&lt;/code&gt;, &lt;code&gt;pre&lt;/code&gt;, and inline &lt;code&gt;code&lt;/code&gt; separately from block code&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../address/"&gt;Address&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/address.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;address&lt;/code&gt;: removes the UA italic and resets inner paragraph spacing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../abbr/"&gt;Abbreviations&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/abbr.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;abbr[title]&lt;/code&gt;: dotted underline with its own offset and thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../sup/"&gt;Superscript&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/sup.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sup&lt;/code&gt;: raised without growing the line box&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="media-and-embedded-content"&gt;Media and embedded content&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Page&lt;/th&gt;
 &lt;th&gt;File&lt;/th&gt;
 &lt;th&gt;Selectors&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../figure/"&gt;Figures&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/figure.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;figure&lt;/code&gt;, &lt;code&gt;figcaption&lt;/code&gt;, and nested &lt;code&gt;picture&lt;/code&gt;, &lt;code&gt;img&lt;/code&gt;, &lt;code&gt;.credit&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../picture/"&gt;Picture&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/picture.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;picture&lt;/code&gt;: &lt;code&gt;inline-block&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../video/"&gt;Video&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/video.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;video&lt;/code&gt;: fluid width, auto height&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../table/"&gt;Tables&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/table.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;thead&lt;/code&gt;, &lt;code&gt;tbody&lt;/code&gt;, &lt;code&gt;th&lt;/code&gt;, &lt;code&gt;td&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="../details/"&gt;Details&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;base/details.css&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;details&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;details[open]&lt;/code&gt;, the marker and the disclosed panel&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="forms"&gt;Forms&lt;/h2&gt;
&lt;p&gt;Six of these seven files are largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Body</title><link>https://socle.uncinq.dev/docs/css-base/base/body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/body/</guid><description>&lt;p&gt;&lt;code&gt;base/body.css&lt;/code&gt; sets the six properties that everything else inherits. It is the shortest file in the layer and the one with the widest reach.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;background);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-family&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;family&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;rem&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;weight&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;400&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;line-height&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;line&lt;span style="color:#f92672"&gt;-&lt;/span&gt;height&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1.5&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Sets&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--color-background&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Page background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--color-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default text colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--font-family-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Body typeface&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--font-size-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base font size, falls back to &lt;code&gt;1rem&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--font-weight-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base weight, falls back to &lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--line-height-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base line-height, falls back to &lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The last three carry a literal fallback on purpose. The upstream reset this package is based on sets &lt;code&gt;line-height: 1.5&lt;/code&gt; on &lt;code&gt;body&lt;/code&gt;; here that rule is &lt;a href="../../reset/#deviations-from-the-original-reset"&gt;commented out&lt;/a&gt; and the value comes from a token instead, with the fallback preserving the original behaviour when the token is missing.&lt;/p&gt;</description></item><item><title>Headings</title><link>https://socle.uncinq.dev/docs/css-base/base/headings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/headings/</guid><description>&lt;p&gt;&lt;code&gt;base/headings.css&lt;/code&gt; styles &lt;code&gt;h1&lt;/code&gt; to &lt;code&gt;h6&lt;/code&gt; with a single rule, then gives each level its size by reassigning one custom property.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h2&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h3&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h4&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h5&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h6&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-family&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;family&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;weight&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;letter-spacing&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;letter&lt;span style="color:#f92672"&gt;-&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;line-height&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;line&lt;span style="color:#f92672"&gt;-&lt;/span&gt;height&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;max-width&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;max&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-transform&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;transform&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt; { --font-size-heading: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading&lt;span style="color:#ae81ff"&gt;-01&lt;/span&gt;); }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h2&lt;/span&gt; { --font-size-heading: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;heading&lt;span style="color:#ae81ff"&gt;-02&lt;/span&gt;); }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* … through h6 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why-the-indirection"&gt;Why the indirection&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;font-size&lt;/code&gt; is declared once, against &lt;code&gt;--font-size-heading&lt;/code&gt;, and each element supplies the value. That keeps the shared rule to a single block, and it gives you two override levels:&lt;/p&gt;</description></item><item><title>Paragraphs</title><link>https://socle.uncinq.dev/docs/css-base/base/paragraphs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/paragraphs/</guid><description>&lt;p&gt;&lt;code&gt;base/typography.css&lt;/code&gt; styles &lt;code&gt;p&lt;/code&gt; and nothing else.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;typography);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;max-width&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;max&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width&lt;span style="color:#f92672"&gt;-&lt;/span&gt;paragraph);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--spacing-typography&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The rhythm between blocks. &lt;a href="../blockquote/"&gt;Blockquotes&lt;/a&gt; and &lt;a href="../list/"&gt;nested lists&lt;/a&gt; read the same token, so prose keeps one spacing unit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-width-paragraph&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The measure cap, in &lt;code&gt;ch&lt;/code&gt; or &lt;code&gt;rem&lt;/code&gt;, so a paragraph wraps before it becomes hard to read&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-measure-cap-is-opt-out-not-opt-in"&gt;The measure cap is opt-out, not opt-in&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--max-width-paragraph&lt;/code&gt; applies to every &lt;code&gt;p&lt;/code&gt; on the page, including ones inside a layout that already constrains its width. Two files in this layer undo it where it would be wrong:&lt;/p&gt;</description></item><item><title>Links</title><link>https://socle.uncinq.dev/docs/css-base/base/link/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/link/</guid><description>&lt;p&gt;&lt;code&gt;base/link.css&lt;/code&gt; styles &lt;code&gt;a&lt;/code&gt; directly. There is no &lt;code&gt;.link&lt;/code&gt; class.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;link);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-underline-offset: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;decoration&lt;span style="color:#f92672"&gt;-&lt;/span&gt;offset);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-decoration-color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;link&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;decoration);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-decoration-line&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;link&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;decoration&lt;span style="color:#f92672"&gt;-&lt;/span&gt;line);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-decoration-thickness: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;decoration&lt;span style="color:#f92672"&gt;-&lt;/span&gt;thickness);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--color-link&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Link colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--color-link-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hover colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--link-text-decoration-line&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;underline&lt;/code&gt; by default, set to &lt;code&gt;none&lt;/code&gt; to drop it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--link-color-text-decoration&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Underline colour, independent of the text colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--link-color-text-decoration-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Underline colour on hover&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--text-decoration-offset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Distance from the baseline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--text-decoration-thickness&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Underline weight&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--link-transition&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The transition, applied only under &lt;code&gt;prefers-reduced-motion: no-preference&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Declaring the underline colour separately from the text colour is what lets a link keep a full-contrast label with a lighter underline, which reads as a link without shouting.&lt;/p&gt;</description></item><item><title>Lists</title><link>https://socle.uncinq.dev/docs/css-base/base/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/list/</guid><description>&lt;p&gt;&lt;code&gt;base/list.css&lt;/code&gt; styles &lt;code&gt;ul&lt;/code&gt;, &lt;code&gt;ol&lt;/code&gt; and &lt;code&gt;li&lt;/code&gt; for a &lt;strong&gt;prose context&lt;/strong&gt;: a list inside running text, with markers and indentation.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;list-style-type&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;type, revert&lt;span style="color:#f92672"&gt;-&lt;/span&gt;layer);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline-start: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;inline&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;start&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1.5&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;ol&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;list-style-type&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;ordered&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;type, revert&lt;span style="color:#f92672"&gt;-&lt;/span&gt;layer);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline-start: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;ordered&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;inline&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;start&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;ol&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; :&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;ol&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block-end: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;nested&lt;span style="color:#f92672"&gt;-&lt;/span&gt;margin&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;typography));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block-start: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;list&lt;span style="color:#f92672"&gt;-&lt;/span&gt;nested&lt;span style="color:#f92672"&gt;-&lt;/span&gt;margin&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;start&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;typography));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;list-item&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;gap, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#ae81ff"&gt;-2&lt;/span&gt;xs));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rule&lt;/th&gt;
 &lt;th&gt;Effect&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;:where(ul)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Indents the list so the bullets sit inside it, from &lt;code&gt;--list-padding-inline-start&lt;/code&gt;, and takes its marker from &lt;code&gt;--list-style-type&lt;/code&gt; when set&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;:where(ol)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The same, with room for two-digit numbers, from &lt;code&gt;--list-ordered-padding-inline-start&lt;/code&gt; and &lt;code&gt;--list-ordered-style-type&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Nested list&lt;/td&gt;
 &lt;td&gt;Block spacing above and below a list inside an item, from &lt;code&gt;--list-nested-margin-block-start&lt;/code&gt; and &lt;code&gt;--list-nested-margin-block-end&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;:where(li)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A small gap between items, from &lt;code&gt;--list-item-gap&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Nested lists get no indent rule, see &lt;a href="https://socle.uncinq.dev/docs/css-base/base/list/#nested-lists"&gt;nested lists&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blockquotes</title><link>https://socle.uncinq.dev/docs/css-base/base/blockquote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/blockquote/</guid><description>&lt;p&gt;&lt;code&gt;base/blockquote.css&lt;/code&gt; styles &lt;code&gt;blockquote&lt;/code&gt; and the &lt;code&gt;cite&lt;/code&gt; inside it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;blockquote&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-inline-start&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width&lt;span style="color:#f92672"&gt;-&lt;/span&gt;lg) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;normal&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-style&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;italic&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;typography);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline-start: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;sm);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;blockquote&lt;/span&gt; &lt;span style="color:#f92672"&gt;cite&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;xs);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-style&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;normal&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block-start: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#f92672"&gt;-&lt;/span&gt;typography);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;blockquote&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;The best way to predict the future is to invent it.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;cite&lt;/span&gt;&amp;gt;Alan Kay&amp;lt;/&lt;span style="color:#f92672"&gt;cite&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;blockquote&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-border-is-inline-start-not-left"&gt;The border is inline-start, not left&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;border-inline-start&lt;/code&gt; follows the writing direction, so the rule holds unchanged in a right-to-left document. The same goes for &lt;code&gt;padding-inline-start&lt;/code&gt;. Nothing in this layer uses physical &lt;code&gt;left&lt;/code&gt; or &lt;code&gt;right&lt;/code&gt; properties.&lt;/p&gt;</description></item><item><title>Code</title><link>https://socle.uncinq.dev/docs/css-base/base/code/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/code/</guid><description>&lt;p&gt;&lt;code&gt;base/code.css&lt;/code&gt; covers four elements and draws one distinction the user agent does not: inline &lt;code&gt;code&lt;/code&gt; is styled as a chip, &lt;code&gt;code&lt;/code&gt; inside &lt;code&gt;pre&lt;/code&gt; is not.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;code&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;kbd&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;samp&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-family&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;family, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;family&lt;span style="color:#f92672"&gt;-&lt;/span&gt;code));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;xs));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#a6e22e"&gt;where&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;code&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;not&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;pre&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;code&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;background, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;background&lt;span style="color:#f92672"&gt;-&lt;/span&gt;muted));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;radius, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radius&lt;span style="color:#f92672"&gt;-&lt;/span&gt;sm));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;on&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;muted));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;code&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding, &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;spacing&lt;span style="color:#ae81ff"&gt;-2&lt;/span&gt;xs));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Selector&lt;/th&gt;
 &lt;th&gt;Styled as&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;code&lt;/code&gt;, &lt;code&gt;kbd&lt;/code&gt;, &lt;code&gt;samp&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Monospace, one step down in size&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;code&lt;/code&gt; not inside &lt;code&gt;pre&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A tinted chip with padding and a radius&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pre&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A scrollable block with its own background and padding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pre &amp;gt; code&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The chip styling removed again: no background, no padding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kbd&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A chip with a real border, so a key reads as a key&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="why-pre--code-is-undone-rather-than-avoided"&gt;Why &lt;code&gt;pre &amp;gt; code&lt;/code&gt; is undone rather than avoided&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;/code&gt; is the correct markup for a code block, so the inner &lt;code&gt;code&lt;/code&gt; matches the chip rule. Rather than writing a more convoluted selector, the file lets it match and then resets the three properties that do not belong:&lt;/p&gt;</description></item><item><title>Address</title><link>https://socle.uncinq.dev/docs/css-base/base/address/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/address/</guid><description>&lt;p&gt;&lt;code&gt;base/address.css&lt;/code&gt; exists to undo two things rather than to add any.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;address&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-style&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;normal&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;p&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-block: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-wrap&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;unset&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Rule&lt;/th&gt;
 &lt;th&gt;Undoes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;font-style: normal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The user agent italic, which reads as emphasis rather than as contact details&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;margin-block: 0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The block margin, left to the surrounding layout&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;p { margin-block: 0 }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The &lt;a href="../paragraphs/"&gt;paragraph&lt;/a&gt; rhythm, which would space the lines of a single address apart&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;p { text-wrap: unset }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text-wrap: pretty&lt;/code&gt; from the &lt;a href="../../reset/"&gt;reset&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="why-text-wrap-is-reset"&gt;Why &lt;code&gt;text-wrap&lt;/code&gt; is reset&lt;/h2&gt;
&lt;p&gt;The reset applies &lt;code&gt;text-wrap: pretty&lt;/code&gt; to every &lt;code&gt;p&lt;/code&gt;, which tunes the wrapping of running prose by avoiding a short last line. An address is a stack of short deliberate lines, usually broken with &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;, so there is nothing for the algorithm to improve and it can only move a break the author chose.&lt;/p&gt;</description></item><item><title>Abbreviations</title><link>https://socle.uncinq.dev/docs/css-base/base/abbr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/abbr/</guid><description>&lt;p&gt;&lt;code&gt;base/abbr.css&lt;/code&gt; styles &lt;code&gt;abbr&lt;/code&gt; only when it carries a &lt;code&gt;title&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;abbr&lt;/span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-decoration-line&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;dotted&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-decoration-thickness: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-underline-offset: &lt;span style="color:#ae81ff"&gt;0.3&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;rem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;Published as &amp;lt;&lt;span style="color:#f92672"&gt;abbr&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Portable Document Format&amp;#34;&lt;/span&gt;&amp;gt;PDF&amp;lt;/&lt;span style="color:#f92672"&gt;abbr&lt;/span&gt;&amp;gt;.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="only-with-a-title"&gt;Only with a title&lt;/h2&gt;
&lt;p&gt;An &lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt; with no &lt;code&gt;title&lt;/code&gt; expands to nothing, so there is nothing to signal and the element is left unstyled. The attribute selector makes that explicit: the dotted underline is a promise that hovering or focusing reveals an expansion.&lt;/p&gt;
&lt;h2 id="the-values-are-hardcoded"&gt;The values are hardcoded&lt;/h2&gt;
&lt;p&gt;This is the one file in &lt;code&gt;@layer base&lt;/code&gt; that does not read tokens. The dotted line is a convention rather than a design decision, and &lt;code&gt;1px&lt;/code&gt; and &lt;code&gt;0.3rem&lt;/code&gt; are tuned to it: a token-scaled thickness would turn the dots into dashes at large sizes, and the offset has to clear the descenders without drifting into the line below.&lt;/p&gt;</description></item><item><title>Superscript</title><link>https://socle.uncinq.dev/docs/css-base/base/sup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/sup/</guid><description>&lt;p&gt;&lt;code&gt;base/sup.css&lt;/code&gt; replaces the user agent&amp;rsquo;s &lt;code&gt;vertical-align: super&lt;/code&gt; with a relative offset.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;sup&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0.75&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; inset-block-start: &lt;span style="color:#ae81ff"&gt;-0.5&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;line-height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-inline: &lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;vertical-align&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;baseline&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why-line-height-is-zeroed"&gt;Why &lt;code&gt;line-height&lt;/code&gt; is zeroed&lt;/h2&gt;
&lt;p&gt;The user agent default, &lt;code&gt;vertical-align: super&lt;/code&gt;, raises the glyph &lt;strong&gt;inside&lt;/strong&gt; the line box, so the line box grows. A block containing a &lt;code&gt;&amp;lt;sup&amp;gt;&lt;/code&gt; then becomes taller than one without it.&lt;/p&gt;
&lt;p&gt;Zeroing &lt;code&gt;line-height&lt;/code&gt; takes the superscript out of the line box calculation, and relative positioning raises it without affecting layout. A label carrying a required marker then measures exactly like a label without one, and two fields side by side stay aligned.&lt;/p&gt;</description></item><item><title>Figures</title><link>https://socle.uncinq.dev/docs/css-base/base/figure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/figure/</guid><description>&lt;p&gt;&lt;code&gt;base/figure.css&lt;/code&gt; lays out &lt;code&gt;figure&lt;/code&gt; as a flex column and gives &lt;code&gt;figcaption&lt;/code&gt; a responsive direction.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;figure&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;picture&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;…&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;…&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;picture&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;figcaption&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;The caption.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;span&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;credit&amp;#34;&lt;/span&gt;&amp;gt;© Photographer&amp;lt;/&lt;span style="color:#f92672"&gt;span&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;figcaption&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;figure&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Selector&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;figure&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Flex column, &lt;code&gt;--figure-gap&lt;/code&gt; between image and caption, &lt;code&gt;--figure-margin-block&lt;/code&gt; around&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;figure picture&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Forced to &lt;code&gt;display: block&lt;/code&gt;, overriding the &lt;a href="../picture/"&gt;&lt;code&gt;inline-block&lt;/code&gt; default&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;figure img&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;width: 100%&lt;/code&gt;, &lt;code&gt;height: auto&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;figure figcaption&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Flex column, &lt;code&gt;--figure-figcaption-font-size&lt;/code&gt;, &lt;code&gt;--figure-figcaption-gap&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;figure p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;margin-block: 0&lt;/code&gt;, since the figure owns the spacing&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;picture + figcaption&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;align-items: baseline&lt;/code&gt;, &lt;code&gt;justify-content: space-between&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-caption-is-a-column-then-a-row"&gt;The caption is a column, then a row&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@&lt;span style="color:#66d9ef"&gt;media&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#f92672"&gt;min-width&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt; &lt;span style="color:#f92672"&gt;48rem&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;figcaption&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;flex-direction&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;row&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;credit&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-inline-start: &lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Below 48rem the caption and the credit stack. Above it they sit on one line, with &lt;code&gt;margin-inline-start: auto&lt;/code&gt; pushing the credit to the far end. The baseline alignment is what keeps the two aligned on their text rather than on their boxes, which matters when the credit is smaller than the caption.&lt;/p&gt;</description></item><item><title>Picture</title><link>https://socle.uncinq.dev/docs/css-base/base/picture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/picture/</guid><description>&lt;p&gt;&lt;code&gt;base/picture.css&lt;/code&gt; is the shortest file in the package.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;picture&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;inline-block&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why-it-exists"&gt;Why it exists&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; has no user agent styling of its own. It is an inline wrapper whose only job is to hold &lt;code&gt;&amp;lt;source&amp;gt;&lt;/code&gt; elements around an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;, and by default it is &lt;code&gt;display: inline&lt;/code&gt;, which means it cannot take a width, a height or a vertical margin.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;inline-block&lt;/code&gt; makes it a box: it sizes to its &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;, it flows with the text, and it accepts dimensions when a component needs to give it some.&lt;/p&gt;</description></item><item><title>Video</title><link>https://socle.uncinq.dev/docs/css-base/base/video/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/video/</guid><description>&lt;p&gt;&lt;code&gt;base/video.css&lt;/code&gt; makes the native element fluid and stops there.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;video&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;auto&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;max-width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;max-width: 100%&lt;/code&gt; keeps a video inside its container whatever its intrinsic width, and &lt;code&gt;height: auto&lt;/code&gt; keeps the aspect ratio while it does so. The &lt;a href="../../reset/"&gt;reset&lt;/a&gt; already sets &lt;code&gt;display: block&lt;/code&gt; and &lt;code&gt;max-width: 100%&lt;/code&gt; on &lt;code&gt;video&lt;/code&gt; among the other media elements; this file adds the &lt;code&gt;height: auto&lt;/code&gt; that makes the scaling proportional rather than squashed.&lt;/p&gt;
&lt;h2 id="what-this-file-deliberately-does-not-do"&gt;What this file deliberately does not do&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;It reserves no space.&lt;/strong&gt; A &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; sized only by &lt;code&gt;max-width&lt;/code&gt; takes its height once the metadata loads, which shifts the rest of the page at an unpredictable moment. Reserving the box is the job of &lt;a href="../../../css-components/embeds/video/"&gt;&lt;code&gt;.video&lt;/code&gt; in @uncinq/css-components&lt;/a&gt;, which declares an &lt;code&gt;aspect-ratio&lt;/code&gt; from a token so the box exists at its final size from the first paint.&lt;/p&gt;</description></item><item><title>Tables</title><link>https://socle.uncinq.dev/docs/css-base/base/table/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/table/</guid><description>&lt;p&gt;&lt;code&gt;base/table.css&lt;/code&gt; styles &lt;code&gt;table&lt;/code&gt;, &lt;code&gt;th&lt;/code&gt; and &lt;code&gt;td&lt;/code&gt; directly. There is no &lt;code&gt;.table&lt;/code&gt; class.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;table&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-collapse&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;collapse&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;table&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;th&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;td&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-block-end&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width&lt;span style="color:#f92672"&gt;-&lt;/span&gt;sm) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;normal&lt;/span&gt;) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;table&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;table-cell&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;table-cell&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;inline&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-align&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;start&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;vertical-align&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--table-font-size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Table text size, usually a step down from the body&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--table-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The horizontal rule under each row&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--table-cell-padding-block&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Vertical cell padding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--table-cell-padding-inline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Horizontal cell padding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--table-color-background-header&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;thead th&lt;/code&gt; background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rules-under-rows-not-around-cells"&gt;Rules under rows, not around cells&lt;/h2&gt;
&lt;p&gt;Only &lt;code&gt;border-block-end&lt;/code&gt; is declared, so the table reads as a set of rows rather than as a grid. &lt;code&gt;border-collapse: collapse&lt;/code&gt; is what keeps adjacent rules to a single line rather than doubling them.&lt;/p&gt;</description></item><item><title>Details</title><link>https://socle.uncinq.dev/docs/css-base/base/details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/details/</guid><description>&lt;p&gt;&lt;code&gt;base/details.css&lt;/code&gt; is the largest non-form file in the layer. It styles the native disclosure element as a bordered card, replaces the user agent marker with a masked icon, and expects one structural convention.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;details&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;summary&lt;/span&gt;&amp;gt;How does the cascade work?&amp;lt;/&lt;span style="color:#f92672"&gt;summary&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;The disclosed content.&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;details&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The wrapping &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; is required. The file targets &lt;code&gt;summary + div&lt;/code&gt; for the content padding, so content placed directly inside &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; is disclosed but unpadded.&lt;/p&gt;</description></item><item><title>Inputs and labels</title><link>https://socle.uncinq.dev/docs/css-base/base/form/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form/</guid><description>&lt;p&gt;&lt;code&gt;base/form.css&lt;/code&gt; is the largest file in the layer. It styles &lt;code&gt;label&lt;/code&gt;, &lt;code&gt;legend&lt;/code&gt; and every &lt;code&gt;input&lt;/code&gt; that is not a button, a checkbox, a radio or a range. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is no &lt;code&gt;.input&lt;/code&gt; or &lt;code&gt;.label&lt;/code&gt; class. The selectors are the native elements.&lt;/p&gt;
&lt;h2 id="labels-and-legends"&gt;Labels and legends&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;label&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;legend&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;font&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;weight&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;line-height&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;line&lt;span style="color:#f92672"&gt;-&lt;/span&gt;height);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-block: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;block&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;inline&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-align&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;align);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;text-transform&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;label&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;text&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;transform);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;display: block&lt;/code&gt; puts the label on its own line, which is the layout a stacked form wants. The &lt;a href="../form-checkbox/"&gt;checkbox&lt;/a&gt; and &lt;a href="../form-radio/"&gt;radio&lt;/a&gt; files override the padding through &lt;code&gt;--label-padding-block&lt;/code&gt; and &lt;code&gt;--label-padding-inline&lt;/code&gt; for their inline rows.&lt;/p&gt;</description></item><item><title>Checkboxes</title><link>https://socle.uncinq.dev/docs/css-base/base/form-checkbox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-checkbox/</guid><description>&lt;p&gt;&lt;code&gt;base/form-checkbox.css&lt;/code&gt; replaces the native checkbox with a box this package draws itself. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#f92672"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;checkbox&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;not&lt;/span&gt;&lt;span style="color:#f92672"&gt;([&lt;/span&gt;&lt;span style="color:#f92672"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;switch&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;])&lt;/span&gt; { &lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;:not([role='switch'])&lt;/code&gt; is what keeps this file and &lt;a href="../form-switch/"&gt;the switch&lt;/a&gt; apart: a switch is a checkbox with a role, and it needs a different shape entirely.&lt;/p&gt;
&lt;h2 id="the-box"&gt;The box&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkable-size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Width and height, falls back to &lt;code&gt;1.25rem&lt;/code&gt;. Shared with &lt;a href="../form-radio/"&gt;radio&lt;/a&gt; and &lt;a href="../form-switch/"&gt;switch&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-color-background&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Unchecked background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-color-background-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Checked background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border colour, drawn as an inset shadow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-color-border-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Checked border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-color-border-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hover border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-border-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-border-radius&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corner radius. Set it to a pill value and the checkbox reads as a round one&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-mask-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The tick glyph&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-mask-indeterminate&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The dash glyph&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkbox-scale-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tick size inside the box, falls back to &lt;code&gt;0.7&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--form-color-accent&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tick colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;flex: 0 0 auto&lt;/code&gt; matters more than it looks: in a flex row next to a long label, a checkbox without it is compressed into an ellipse.&lt;/p&gt;</description></item><item><title>Radios</title><link>https://socle.uncinq.dev/docs/css-base/base/form-radio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-radio/</guid><description>&lt;p&gt;&lt;code&gt;base/form-radio.css&lt;/code&gt; mirrors &lt;a href="../form-checkbox/"&gt;the checkbox&lt;/a&gt; almost rule for rule, with one structural difference: the dot is a real element that scales, not a mask that appears. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#f92672"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;radio&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;appearance&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radio&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;radius);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;box-shadow&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;inset&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radio&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radio&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;display&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;inline&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;grid&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;checkable&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size, &lt;span style="color:#ae81ff"&gt;1.25&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; place-content: &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;checkable&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size, &lt;span style="color:#ae81ff"&gt;1.25&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;em&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkable-size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Width and height, falls back to &lt;code&gt;1.25em&lt;/code&gt;. Shared with &lt;a href="../form-checkbox/"&gt;checkbox&lt;/a&gt; and &lt;a href="../form-switch/"&gt;switch&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-color-background&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-border-radius&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corner radius, a pill value in practice&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-border-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border thickness, drawn as an inset shadow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-color-border-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hover border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-color-background-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dot fill&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-color-border-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dot border&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-border-width-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dot border thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--radio-scale-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dot size when checked, falls back to &lt;code&gt;0.7&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-dot-is-always-there"&gt;The dot is always there&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;::&lt;span style="color:#a6e22e"&gt;before&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radius&lt;span style="color:#f92672"&gt;-&lt;/span&gt;pill, &lt;span style="color:#ae81ff"&gt;9999&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;content&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scale: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* … */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;checked&lt;/span&gt;::&lt;span style="color:#a6e22e"&gt;before&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scale: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;radio&lt;span style="color:#f92672"&gt;-&lt;/span&gt;scale&lt;span style="color:#f92672"&gt;-&lt;/span&gt;checked, &lt;span style="color:#ae81ff"&gt;0.7&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;::before&lt;/code&gt; exists at every moment; only its &lt;code&gt;scale&lt;/code&gt; changes. That is what makes the transition possible: &lt;code&gt;scale&lt;/code&gt; animates, while a &lt;code&gt;::before&lt;/code&gt; toggled between &lt;code&gt;content: none&lt;/code&gt; and &lt;code&gt;content: ''&lt;/code&gt; would pop in.&lt;/p&gt;</description></item><item><title>Range</title><link>https://socle.uncinq.dev/docs/css-base/base/form-range/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-range/</guid><description>&lt;p&gt;&lt;code&gt;base/form-range.css&lt;/code&gt; styles &lt;code&gt;[type='range']&lt;/code&gt; plus two optional classes, &lt;code&gt;.range&lt;/code&gt; and &lt;code&gt;.range-value&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;range&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;data-range-output&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;anchor&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;label&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;for&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&amp;gt;Volume&amp;lt;/&lt;span style="color:#f92672"&gt;label&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;input&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;range&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;volume&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;min&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;max&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;100&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;value&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;50&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;output&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;range-value&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;for&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;volume&amp;#34;&lt;/span&gt;&amp;gt;50&amp;lt;/&lt;span style="color:#f92672"&gt;output&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="two-vendor-implementations-not-one"&gt;Two vendor implementations, not one&lt;/h2&gt;
&lt;p&gt;A range input has no common styling API. WebKit and Gecko expose different pseudo-elements, so the track and the thumb are declared twice:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Pseudo-element&lt;/th&gt;
 &lt;th&gt;Engine&lt;/th&gt;
 &lt;th&gt;Styles&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;::-webkit-slider-runnable-track&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;WebKit, Blink&lt;/td&gt;
 &lt;td&gt;Track&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;::-webkit-slider-thumb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;WebKit, Blink&lt;/td&gt;
 &lt;td&gt;Thumb&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;::-moz-range-track&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Gecko&lt;/td&gt;
 &lt;td&gt;Track&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;::-moz-range-thumb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Gecko&lt;/td&gt;
 &lt;td&gt;Thumb&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;::-moz-range-progress&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Gecko&lt;/td&gt;
 &lt;td&gt;The filled part before the thumb&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;They cannot be combined into one selector list: an unrecognised pseudo-element invalidates the whole rule, so each engine needs its own block.&lt;/p&gt;</description></item><item><title>Select</title><link>https://socle.uncinq.dev/docs/css-base/base/form-select/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-select/</guid><description>&lt;p&gt;&lt;code&gt;base/form-select.css&lt;/code&gt; styles &lt;code&gt;select&lt;/code&gt; and &lt;code&gt;optgroup&lt;/code&gt;. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;select&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;appearance&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;none&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-image&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;icon&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;right&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;icon&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size) &lt;span style="color:#66d9ef"&gt;center&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-repeat&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;no-repeat&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-size&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;icon&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;size);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;box-shadow&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;inset&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border&lt;span style="color:#f92672"&gt;-&lt;/span&gt;width) &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;border);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;padding&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding-inline-end: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;select&lt;span style="color:#f92672"&gt;-&lt;/span&gt;padding&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;100&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-color-background&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border colour, drawn as an inset shadow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-color-border-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hover border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-border-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-border-radius&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corner radius&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-color-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Text colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-icon&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The chevron, as a &lt;code&gt;url()&lt;/code&gt; or &lt;code&gt;image-set()&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-icon-size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Chevron size, and the inset it sits at&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-padding&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Padding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-padding-end&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Inline-end padding, wider to clear the chevron&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--select-color-optgroup&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;optgroup&lt;/code&gt; label colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-chevron-is-a-background-image-not-a-mask"&gt;The chevron is a background image, not a mask&lt;/h2&gt;
&lt;p&gt;Unlike the &lt;a href="../details/#the-summary-and-its-marker"&gt;details marker&lt;/a&gt; or the &lt;a href="../form-checkbox/#the-tick-is-a-mask"&gt;checkbox tick&lt;/a&gt;, this glyph is a &lt;code&gt;background-image&lt;/code&gt;. A select already uses its background for the control surface, and an element has one &lt;code&gt;mask&lt;/code&gt; but can layer several backgrounds, so the image is the workable option here.&lt;/p&gt;</description></item><item><title>Switch</title><link>https://socle.uncinq.dev/docs/css-base/base/form-switch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-switch/</guid><description>&lt;p&gt;&lt;code&gt;base/form-switch.css&lt;/code&gt; styles &lt;code&gt;[role=&amp;quot;switch&amp;quot;]&lt;/code&gt;. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;input&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;checkbox&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;role&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;switch&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;notify&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;label&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;for&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;notify&amp;#34;&lt;/span&gt;&amp;gt;Email notifications&amp;lt;/&lt;span style="color:#f92672"&gt;label&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The markup is a checkbox carrying the role. That is what makes the state work for free: the browser tracks &lt;code&gt;:checked&lt;/code&gt; and assistive technology announces on and off rather than checked and unchecked, with no JavaScript involved.&lt;/p&gt;
&lt;p&gt;&lt;a href="../form-checkbox/"&gt;&lt;code&gt;base/form-checkbox.css&lt;/code&gt;&lt;/a&gt; excludes it explicitly, with &lt;code&gt;[type='checkbox']:not([role='switch'])&lt;/code&gt;, so the two files never both apply.&lt;/p&gt;
&lt;h2 id="the-track-and-the-knob"&gt;The track and the knob&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track width&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--checkable-size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track height and knob diameter, falls back to &lt;code&gt;1.25rem&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-track-color&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track colour, unchecked&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-track-color-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track colour, checked&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-thumb-color&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Knob colour, unchecked&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-thumb-color-checked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Knob colour, checked&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-thumb-scale&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Knob size inside the track&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-border-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Track border thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--switch-border-radius&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corner radius, shared by track and knob&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The knob is &lt;code&gt;::after&lt;/code&gt;, and &lt;code&gt;::before&lt;/code&gt; is an empty spacer.&lt;/p&gt;</description></item><item><title>Textarea</title><link>https://socle.uncinq.dev/docs/css-base/base/form-textarea/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/form-textarea/</guid><description>&lt;p&gt;&lt;code&gt;base/form-textarea.css&lt;/code&gt; styles &lt;code&gt;textarea&lt;/code&gt; with the same box as &lt;a href="../form/"&gt;the text inputs&lt;/a&gt;, plus three declarations specific to a multi-line control. Largely inspired by &lt;a href="https://knacss.com/"&gt;KNACSS&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;textarea&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; field-sizing: &lt;span style="color:#66d9ef"&gt;content&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;min-height&lt;/span&gt;: &lt;span style="color:#a6e22e"&gt;var&lt;/span&gt;(&lt;span style="color:#f92672"&gt;--&lt;/span&gt;textarea&lt;span style="color:#f92672"&gt;-&lt;/span&gt;min&lt;span style="color:#f92672"&gt;-&lt;/span&gt;height, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;lh);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;resize&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;vertical&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* … the shared input box … */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Token&lt;/th&gt;
 &lt;th&gt;Role&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-color-background&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Background&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-color-border&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border colour, drawn as an inset shadow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-color-border-hover&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hover border colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-border-width&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border thickness&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-border-radius&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Corner radius&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-color-text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Text colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-color-placeholder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Placeholder colour&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-padding&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Padding, falls back to &lt;code&gt;0.75rem 1rem&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--textarea-min-height&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum height, falls back to &lt;code&gt;5lh&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="field-sizing-content"&gt;&lt;code&gt;field-sizing: content&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The textarea grows as the user types, instead of scrolling inside a fixed box. It is a progressive enhancement: in a browser without support the declaration is ignored and the control behaves exactly as it always has, at &lt;code&gt;min-height&lt;/code&gt; with a scrollbar.&lt;/p&gt;</description></item><item><title>Accessibility helpers</title><link>https://socle.uncinq.dev/docs/css-base/base/accessibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://socle.uncinq.dev/docs/css-base/base/accessibility/</guid><description>&lt;p&gt;&lt;code&gt;base/accessibility.css&lt;/code&gt; is the only file in this layer that ships classes rather than element selectors.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Class&lt;/th&gt;
 &lt;th&gt;Behaviour&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.visually-hidden&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hidden visually, still exposed to assistive technology&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.visually-hidden-focusable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The same, but revealed on &lt;code&gt;:focus&lt;/code&gt; or &lt;code&gt;:focus-within&lt;/code&gt;. Intended for skip links&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;visually-hidden&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;visually-hidden-focusable&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;not&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;focus&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;not&lt;/span&gt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;focus-within&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;clip&lt;/span&gt;: rect(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;clip-path&lt;/span&gt;: inset(&lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;height&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;overflow&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;hidden&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;white-space&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;nowrap&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="why-not-display-none"&gt;Why not &lt;code&gt;display: none&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;display: none&lt;/code&gt; and &lt;code&gt;visibility: hidden&lt;/code&gt; remove the element from the accessibility tree as well as from the page, so a screen reader never reaches it. These declarations shrink the element to a single clipped pixel instead: it stays in the tree, stays focusable, and is announced normally.&lt;/p&gt;</description></item></channel></rss>