<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.linuxize.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Datanasov</id>
	<title>LinuxizeNet - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxize.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Datanasov"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php/Special:Contributions/Datanasov"/>
	<updated>2026-10-16T22:37:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=808</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=808"/>
		<updated>2026-08-09T21:59:18Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Fix Template:Box layout — flex was fragmenting inline content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important appears in&lt;br /&gt;
 * exactly two places, both deliberate: the prefers-reduced-motion block, and&lt;br /&gt;
 * the thumbnail caption fill in section 11 (see the note there).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Visited links in chrome ---&lt;br /&gt;
 * `.mw-body a:visited` only covers article content, so every link outside it —&lt;br /&gt;
 * both sidebars, the Categories box, the tab strip, the footer — fell back to&lt;br /&gt;
 * MediaWiki&#039;s default visited blue, against a warm amber palette.&lt;br /&gt;
 *&lt;br /&gt;
 * Chrome links are given NO visited state rather than a palette-correct one.&lt;br /&gt;
 * Every reader has clicked &amp;quot;Main page&amp;quot; and &amp;quot;Recent changes&amp;quot;; colouring those&lt;br /&gt;
 * as visited turns the sidebar a second colour and tells you nothing. Visited&lt;br /&gt;
 * styling stays where it earns its place: article content. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation a:visited,&lt;br /&gt;
body.skin-timeless #mw-related-navigation a:visited,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar a:visited,&lt;br /&gt;
body.skin-timeless .sidebar-chunk a:visited,&lt;br /&gt;
body.skin-timeless #mw-header-container a:visited,&lt;br /&gt;
body.skin-timeless #mw-page-header-links a:visited,&lt;br /&gt;
body.skin-timeless #mw-footer a:visited,&lt;br /&gt;
body.skin-timeless .catlinks a:visited {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-site-navigation a:visited:hover,&lt;br /&gt;
body.skin-timeless #mw-related-navigation a:visited:hover,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar a:visited:hover,&lt;br /&gt;
body.skin-timeless .sidebar-chunk a:visited:hover,&lt;br /&gt;
body.skin-timeless .catlinks a:visited:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Categories below the sidebar breakpoint ---&lt;br /&gt;
 * Timeless shows categories in the right sidebar and hides the standard&lt;br /&gt;
 * in-content bar (#catlinks in #content-bottom-stuff). Below 1100px it&lt;br /&gt;
 * collapses BOTH sidebars into header dropdowns, so categories end up behind&lt;br /&gt;
 * a click exactly on the screens with least room.&lt;br /&gt;
 *&lt;br /&gt;
 * Rather than pin the sidebar box open — which fights the skin&#039;s layout and&lt;br /&gt;
 * pushes the article down the page — the in-content bar is restored at those&lt;br /&gt;
 * widths. It sits at the foot of the article, which is where MediaWiki puts it&lt;br /&gt;
 * anyway, and it inherits the .catlinks styling in section 2. */&lt;br /&gt;
@media screen and ( max-width: 1099px ) {&lt;br /&gt;
	body.skin-timeless #catlinks {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External and interwiki links. MediaWiki core colours these #36c / #3377aa,&lt;br /&gt;
 * with a specificity that beats the generic `a` rule above — so without this&lt;br /&gt;
 * every outbound link on the wiki renders in MediaWiki blue against a warm&lt;br /&gt;
 * amber palette. They already get a typographic marker below, so they do not&lt;br /&gt;
 * need a separate hue to be distinguishable. */&lt;br /&gt;
a.external,&lt;br /&gt;
a.extiw,&lt;br /&gt;
.mw-body a.external,&lt;br /&gt;
.mw-body a.extiw,&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
/* NOT display:flex. Template:Box emits inline content — bare text, &amp;lt;b&amp;gt;,&lt;br /&gt;
 * &amp;lt;code&amp;gt; — and under flex every one of those becomes its own flex item, so&lt;br /&gt;
 * the note renders as a row of fragments instead of a paragraph. The marker&lt;br /&gt;
 * is positioned instead, and the box keeps normal inline flow. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em 0.85em 2.5em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 1em;&lt;br /&gt;
	top: 0.85em;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Thumbnails / figures ---&lt;br /&gt;
 * MediaWiki core paints thumbnail frames #f8f9fa with a #eaecf0 border, on&lt;br /&gt;
 * both `figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;]` (modern parser output) and the older&lt;br /&gt;
 * `.thumbinner`. On a dark ground that is a light slab carrying our light&lt;br /&gt;
 * caption text — it was the single root cause behind every remaining&lt;br /&gt;
 * low-contrast element on the imported Wikipedia page, including the red links&lt;br /&gt;
 * inside captions.&lt;br /&gt;
 *&lt;br /&gt;
 * Not skin-scoped: figures are article content and appear under any skin. */&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Thumb&amp;quot; ],&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Frame&amp;quot; ],&lt;br /&gt;
.mw-parser-output .thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The caption and the older div.thumb wrapper keep a #f8f9fa fill from&lt;br /&gt;
 * somewhere in the core/skin cascade that outranks a plain&lt;br /&gt;
 * `.mw-parser-output figcaption` rule. I could not identify the winning&lt;br /&gt;
 * selector — the stylesheets were not readable through the CSSOM from this&lt;br /&gt;
 * page — so this is forced rather than out-specified. If the source is ever&lt;br /&gt;
 * found, drop the !important and match its specificity instead.&lt;br /&gt;
 *&lt;br /&gt;
 * Verified after the change: 0 low-contrast elements in light, dark and&lt;br /&gt;
 * unstamped, and no light surfaces left inside the article. */&lt;br /&gt;
.mw-parser-output figcaption,&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output div.thumb,&lt;br /&gt;
.mw-parser-output div.thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 ) !important;&lt;br /&gt;
	color: var( --lz-ink-2 ) !important;&lt;br /&gt;
	border-color: var( --lz-line ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The magnify/enlarge affordance on older thumb markup. */&lt;br /&gt;
.mw-parser-output .magnify a {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Networking&amp;diff=807</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Networking&amp;diff=807"/>
		<updated>2026-08-09T21:57:37Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Add the two router howtos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Networking notes — routers, switches, DNS, TLS and the things that only break&lt;br /&gt;
once a year.&lt;br /&gt;
&lt;br /&gt;
== Linux router ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Linux router with WAN, LAN and DMZ|desc=IP forwarding on and off, interfaces in systemd-networkd, and a default-deny iptables policy publishing a mail and a web server from the DMZ.|cmd=net.ipv4.ip_forward=1}}&lt;br /&gt;
{{Card|page=DHCP and NTP for the LAN with systemd-networkd|title=DHCP and NTP for the LAN|desc=Serve addresses from the router and push it as the LAN&#039;s NTP source.|cmd=EmitNTP=yes}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cisco ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=SYS-4-CONFIG RESOLVE FAILURE|title=SYS-4-CONFIG_RESOLVE_FAILURE|desc=What the log message means and how to stop it.|cmd=no ip domain-lookup}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Self-Signed CA|desc=Run your own CA with mkcert and get every box on the LAN to trust it.|cmd=mkcert -install}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=DHCP_and_NTP_for_the_LAN_with_systemd-networkd&amp;diff=806</id>
		<title>DHCP and NTP for the LAN with systemd-networkd</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=DHCP_and_NTP_for_the_LAN_with_systemd-networkd&amp;diff=806"/>
		<updated>2026-08-09T21:57:37Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: New howto: networkd DHCP server pushing NTP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Handing out addresses on the LAN from the router itself, using the DHCP server&lt;br /&gt;
built into systemd-networkd, and pushing the router as the NTP source.&lt;br /&gt;
&lt;br /&gt;
Continues from [[Linux router with WAN, LAN and DMZ]]: &#039;&#039;&#039;eth1&#039;&#039;&#039; is the LAN at&lt;br /&gt;
&amp;lt;code&amp;gt;10.0.1.0/24&amp;lt;/code&amp;gt; and the router holds &amp;lt;code&amp;gt;10.0.1.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== The DHCP server ==&lt;br /&gt;
No extra package — &amp;lt;code&amp;gt;systemd-networkd&amp;lt;/code&amp;gt; already has one. Extend the LAN&lt;br /&gt;
file, &amp;lt;code&amp;gt;/etc/systemd/network/20-lan.network&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth1&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.0.1.1/24&lt;br /&gt;
DHCPServer=yes&lt;br /&gt;
ConfigureWithoutCarrier=yes&lt;br /&gt;
&lt;br /&gt;
[DHCPServer]&lt;br /&gt;
# Pool starts at the subnet base + offset, so 10.0.1.100 - 10.0.1.199&lt;br /&gt;
PoolOffset=100&lt;br /&gt;
PoolSize=100&lt;br /&gt;
&lt;br /&gt;
DefaultLeaseTimeSec=1h&lt;br /&gt;
MaxLeaseTimeSec=12h&lt;br /&gt;
&lt;br /&gt;
# Gateway. Defaults to this interface&#039;s address, so it is only worth&lt;br /&gt;
# stating explicitly if the LAN&#039;s router is some other box.&lt;br /&gt;
EmitRouter=yes&lt;br /&gt;
&lt;br /&gt;
# DNS&lt;br /&gt;
EmitDNS=yes&lt;br /&gt;
DNS=10.0.1.1&lt;br /&gt;
&lt;br /&gt;
# NTP - the point of the exercise&lt;br /&gt;
EmitNTP=yes&lt;br /&gt;
NTP=10.0.1.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apply:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
networkctl reload&lt;br /&gt;
networkctl status eth1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box|1=&amp;lt;code&amp;gt;PoolOffset=&amp;lt;/code&amp;gt; counts from the base of the subnet, not from the router&#039;s address. With &amp;lt;code&amp;gt;10.0.1.0/24&amp;lt;/code&amp;gt; an offset of 100 starts the pool at &amp;lt;code&amp;gt;10.0.1.100&amp;lt;/code&amp;gt;. Keep the pool clear of anything statically addressed.}}&lt;br /&gt;
&lt;br /&gt;
== Fixed addresses ==&lt;br /&gt;
One section per host, in the same &amp;lt;code&amp;gt;.network&amp;lt;/code&amp;gt; file (systemd 249 and&lt;br /&gt;
later):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[DHCPServerStaticLease]&lt;br /&gt;
MACAddress=aa:bb:cc:dd:ee:01&lt;br /&gt;
Address=10.0.1.10&lt;br /&gt;
&lt;br /&gt;
[DHCPServerStaticLease]&lt;br /&gt;
MACAddress=aa:bb:cc:dd:ee:02&lt;br /&gt;
Address=10.0.1.11&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Static leases should sit outside the dynamic pool — below &amp;lt;code&amp;gt;10.0.1.100&amp;lt;/code&amp;gt;&lt;br /&gt;
with the pool above, so the two can never collide.&lt;br /&gt;
&lt;br /&gt;
== Serve NTP as well as advertise it ==&lt;br /&gt;
&amp;lt;code&amp;gt;NTP=10.0.1.1&amp;lt;/code&amp;gt; only tells clients where to look. The router has to&lt;br /&gt;
actually answer, which it does not do by default.&lt;br /&gt;
&lt;br /&gt;
With chrony, in &amp;lt;code&amp;gt;/etc/chrony/chrony.conf&amp;lt;/code&amp;gt; (Debian) or&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/chrony.conf&amp;lt;/code&amp;gt; (RHEL):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Upstream sources&lt;br /&gt;
pool 2.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
# Answer the LAN&lt;br /&gt;
allow 10.0.1.0/24&lt;br /&gt;
&lt;br /&gt;
# Serve local time even while upstream is unreachable, so the LAN does not&lt;br /&gt;
# lose its time source when the WAN goes down&lt;br /&gt;
local stratum 10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now chronyd    # chrony on Debian/Ubuntu&lt;br /&gt;
chronyc sources -v&lt;br /&gt;
chronyc clients&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The router&#039;s own firewall has to let NTP in. The rule is already in the&lt;br /&gt;
[[Linux router with WAN, LAN and DMZ#Services on the router itself|baseline&lt;br /&gt;
policy]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -A INPUT -i eth1 -p udp --dport 123 -j ACCEPT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box|type=warning|1=Never &amp;lt;code&amp;gt;allow&amp;lt;/code&amp;gt; a network reachable from the WAN. An NTP server open to the internet is a reflection-amplification tool, and it will be found and used.}}&lt;br /&gt;
&lt;br /&gt;
== Verify ==&lt;br /&gt;
On the router:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Leases the server has handed out&lt;br /&gt;
networkctl status eth1&lt;br /&gt;
resolvectl status eth1&lt;br /&gt;
&lt;br /&gt;
# Clients currently talking NTP to us&lt;br /&gt;
chronyc clients&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On a LAN client:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Did the NTP option arrive?&lt;br /&gt;
resolvectl status            # systemd-resolved: DNS servers&lt;br /&gt;
timedatectl show-timesync    # ServerAddress should be 10.0.1.1&lt;br /&gt;
timedatectl timesync-status&lt;br /&gt;
&lt;br /&gt;
# Raw lease, if the client runs networkd&lt;br /&gt;
networkctl status &amp;lt;iface&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A client that ignores the pushed NTP server almost always has one configured&lt;br /&gt;
statically — check &amp;lt;code&amp;gt;NTP=&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;/etc/systemd/timesyncd.conf&amp;lt;/code&amp;gt;,&lt;br /&gt;
which takes precedence over anything DHCP supplies.&lt;br /&gt;
&lt;br /&gt;
== If you outgrow it ==&lt;br /&gt;
The networkd server is deliberately small: one pool per interface, no relay, no&lt;br /&gt;
option-82, no failover, no dynamic DNS updates. Reach for &#039;&#039;&#039;Kea&#039;&#039;&#039; (the ISC&lt;br /&gt;
successor to &amp;lt;code&amp;gt;dhcpd&amp;lt;/code&amp;gt;) or &#039;&#039;&#039;dnsmasq&#039;&#039;&#039; when you need any of those.&lt;br /&gt;
dnsmasq is the shorter jump — it does DHCP, DNS forwarding and TFTP in one&lt;br /&gt;
process, which suits a small router.&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Linux_router_with_WAN,_LAN_and_DMZ&amp;diff=805</id>
		<title>Linux router with WAN, LAN and DMZ</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Linux_router_with_WAN,_LAN_and_DMZ&amp;diff=805"/>
		<updated>2026-08-09T21:57:35Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: New howto: router forwarding, networkd interfaces, minimal iptables with DMZ DNAT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Turning a Linux box into a router: enabling IP forwarding, addressing the three&lt;br /&gt;
interfaces with systemd-networkd, and a minimal iptables policy that publishes a&lt;br /&gt;
mail server and a web server from the DMZ.&lt;br /&gt;
&lt;br /&gt;
{{Box|1=Interfaces and addresses used throughout: &#039;&#039;&#039;eth0&#039;&#039;&#039; WAN, &#039;&#039;&#039;eth1&#039;&#039;&#039; LAN &amp;lt;code&amp;gt;10.0.1.0/24&amp;lt;/code&amp;gt;, &#039;&#039;&#039;eth2&#039;&#039;&#039; DMZ &amp;lt;code&amp;gt;10.0.0.0/24&amp;lt;/code&amp;gt;. The router holds the &amp;lt;code&amp;gt;.1&amp;lt;/code&amp;gt; in each subnet — &amp;lt;code&amp;gt;10.0.1.1&amp;lt;/code&amp;gt; on the LAN, &amp;lt;code&amp;gt;10.0.0.1&amp;lt;/code&amp;gt; on the DMZ.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Role !! Interface !! Address&lt;br /&gt;
|-&lt;br /&gt;
| Router, WAN || eth0 || from the ISP (DHCP or static)&lt;br /&gt;
|-&lt;br /&gt;
| Router, LAN || eth1 || &amp;lt;code&amp;gt;10.0.1.1/24&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Router, DMZ || eth2 || &amp;lt;code&amp;gt;10.0.0.1/24&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mail server || — || &amp;lt;code&amp;gt;10.0.0.10&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Web server || — || &amp;lt;code&amp;gt;10.0.0.20&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Enable IP forwarding ==&lt;br /&gt;
Without this the kernel drops anything not addressed to itself, and no amount of&lt;br /&gt;
firewall rules will make traffic cross between interfaces.&lt;br /&gt;
&lt;br /&gt;
Immediately, until reboot:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permanently:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat &amp;gt;/etc/sysctl.d/99-router.conf &amp;lt;&amp;lt;&#039;EOF&#039;&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
# Uncomment if the router also routes IPv6:&lt;br /&gt;
# net.ipv6.conf.all.forwarding = 1&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
sysctl --system&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check the value in force:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sysctl net.ipv4.ip_forward&lt;br /&gt;
cat /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable it again ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make that stick, set the value to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; in&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/sysctl.d/99-router.conf&amp;lt;/code&amp;gt; and run &amp;lt;code&amp;gt;sysctl --system&amp;lt;/code&amp;gt;&lt;br /&gt;
— deleting the file only reverts to the kernel default, which is also&lt;br /&gt;
&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, but leaves nothing documenting the intent.&lt;br /&gt;
&lt;br /&gt;
Turning forwarding off stops routing but leaves the NAT and filter rules loaded.&lt;br /&gt;
To stand the router down completely, flush them as well — see&lt;br /&gt;
[[#Tearing it down|Tearing it down]].&lt;br /&gt;
&lt;br /&gt;
{{Box|1=systemd-networkd can set forwarding itself, but the option was renamed: &amp;lt;code&amp;gt;IPForward=&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;[Network]&amp;lt;/code&amp;gt; is deprecated from systemd 256 in favour of &amp;lt;code&amp;gt;IPv4Forwarding=&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;IPv6Forwarding=&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;sysctl&amp;lt;/code&amp;gt; behaves the same on every version, so the examples above use it.}}&lt;br /&gt;
&lt;br /&gt;
== Interfaces with systemd-networkd ==&lt;br /&gt;
One file per interface in &amp;lt;code&amp;gt;/etc/systemd/network/&amp;lt;/code&amp;gt;. The numeric prefix&lt;br /&gt;
only controls the order the files are read.&lt;br /&gt;
&lt;br /&gt;
WAN — &amp;lt;code&amp;gt;/etc/systemd/network/10-wan.network&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
# Static instead? Drop DHCP= and use:&lt;br /&gt;
# Address=203.0.113.10/24&lt;br /&gt;
# Gateway=203.0.113.1&lt;br /&gt;
# DNS=1.1.1.1&lt;br /&gt;
&lt;br /&gt;
[DHCPv4]&lt;br /&gt;
UseDNS=yes&lt;br /&gt;
UseNTP=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
LAN — &amp;lt;code&amp;gt;/etc/systemd/network/20-lan.network&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth1&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.0.1.1/24&lt;br /&gt;
ConfigureWithoutCarrier=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DMZ — &amp;lt;code&amp;gt;/etc/systemd/network/30-dmz.network&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eth2&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.0.0.1/24&lt;br /&gt;
ConfigureWithoutCarrier=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apply and inspect:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl enable --now systemd-networkd&lt;br /&gt;
networkctl reload&lt;br /&gt;
networkctl status eth1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Handing out addresses on the LAN is a separate job — see&lt;br /&gt;
[[DHCP and NTP for the LAN with systemd-networkd]].&lt;br /&gt;
&lt;br /&gt;
== Minimal firewall ==&lt;br /&gt;
Default deny inbound and forwarded, allow outbound, and let conntrack carry&lt;br /&gt;
return traffic. Everything published from the DMZ is opened explicitly.&lt;br /&gt;
&lt;br /&gt;
=== Policies and baseline ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Start from a clean slate&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -t nat -F&lt;br /&gt;
iptables -X&lt;br /&gt;
&lt;br /&gt;
iptables -P INPUT   DROP&lt;br /&gt;
iptables -P FORWARD DROP&lt;br /&gt;
iptables -P OUTPUT  ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Loopback, and anything conntrack already knows about&lt;br /&gt;
iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Services on the router itself ===&lt;br /&gt;
Only from the LAN. Nothing on the router listens to the WAN.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -A INPUT -i eth1 -p tcp --dport 22  -j ACCEPT   # ssh&lt;br /&gt;
iptables -A INPUT -i eth1 -p udp --dport 67  -j ACCEPT   # dhcp server&lt;br /&gt;
iptables -A INPUT -i eth1 -p udp --dport 123 -j ACCEPT   # ntp server&lt;br /&gt;
iptables -A INPUT -i eth1 -p udp --dport 53  -j ACCEPT   # dns, if the router resolves&lt;br /&gt;
iptables -A INPUT -i eth1 -p tcp --dport 53  -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ping, rate limited, from anywhere&lt;br /&gt;
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Publish the DMZ servers (DNAT) ===&lt;br /&gt;
&amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt; is plain SMTP with STARTTLS, &amp;lt;code&amp;gt;587&amp;lt;/code&amp;gt; is the submission&lt;br /&gt;
port (also STARTTLS) and &amp;lt;code&amp;gt;465&amp;lt;/code&amp;gt; is implicit TLS submission. Drop&lt;br /&gt;
whichever of the two submission ports your mail server does not offer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Mail -&amp;gt; 10.0.0.10&lt;br /&gt;
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport \&lt;br /&gt;
         --dports 25,465,587,993 -j DNAT --to-destination 10.0.0.10&lt;br /&gt;
&lt;br /&gt;
# Web -&amp;gt; 10.0.0.20&lt;br /&gt;
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport \&lt;br /&gt;
         --dports 80,443 -j DNAT --to-destination 10.0.0.20&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DNAT only rewrites the destination. The packet still has to survive&lt;br /&gt;
&amp;lt;code&amp;gt;FORWARD&amp;lt;/code&amp;gt;, which is where the matching accepts belong:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP&lt;br /&gt;
&lt;br /&gt;
iptables -A FORWARD -i eth0 -o eth2 -d 10.0.0.10 -p tcp -m multiport \&lt;br /&gt;
         --dports 25,465,587,993 -j ACCEPT&lt;br /&gt;
iptables -A FORWARD -i eth0 -o eth2 -d 10.0.0.20 -p tcp -m multiport \&lt;br /&gt;
         --dports 80,443 -j ACCEPT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Egress and inter-zone policy ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT   # LAN  -&amp;gt; internet&lt;br /&gt;
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT   # DMZ  -&amp;gt; internet (updates, outbound mail)&lt;br /&gt;
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT   # LAN  -&amp;gt; DMZ (administration)&lt;br /&gt;
&lt;br /&gt;
# DMZ -&amp;gt; LAN is deliberately absent. That asymmetry is the whole point of a&lt;br /&gt;
# DMZ: if a published server is compromised it must not reach the LAN.&lt;br /&gt;
# Return traffic for LAN-initiated connections is already covered by the&lt;br /&gt;
# ESTABLISHED,RELATED rule above.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Source NAT ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MASQUERADE&amp;lt;/code&amp;gt; takes the WAN address as it finds it, which is what you&lt;br /&gt;
want on a dynamic ISP address. On a static WAN address &amp;lt;code&amp;gt;SNAT&amp;lt;/code&amp;gt; is&lt;br /&gt;
marginally cheaper because it does not look the address up per connection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reaching the servers from the LAN ===&lt;br /&gt;
A LAN client resolving the public name gets the WAN address, sends the packet to&lt;br /&gt;
the router, and the reply comes back from &amp;lt;code&amp;gt;10.0.0.10&amp;lt;/code&amp;gt; directly —&lt;br /&gt;
so the connection never completes. Either give the LAN a split-horizon DNS view&lt;br /&gt;
that answers with the internal address, or add hairpin NAT:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -d 10.0.0.10 -p tcp -m multiport \&lt;br /&gt;
         --dports 25,465,587,993 -j MASQUERADE&lt;br /&gt;
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -d 10.0.0.20 -p tcp -m multiport \&lt;br /&gt;
         --dports 80,443 -j MASQUERADE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Split-horizon DNS is the tidier of the two — hairpin NAT hides the client&#039;s real&lt;br /&gt;
address from the server, so its logs show the router for every internal visitor.&lt;br /&gt;
&lt;br /&gt;
== Make the rules survive a reboot ==&lt;br /&gt;
Debian and Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt install iptables-persistent&lt;br /&gt;
iptables-save &amp;gt; /etc/iptables/rules.v4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RHEL, CentOS, Rocky:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dnf install iptables-services&lt;br /&gt;
systemctl enable --now iptables&lt;br /&gt;
iptables-save &amp;gt; /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box|type=warning|1=Save only after you have confirmed you can still reach the box. A default-DROP &amp;lt;code&amp;gt;INPUT&amp;lt;/code&amp;gt; policy saved with no working ssh rule locks you out until you get physical or console access.}}&lt;br /&gt;
&lt;br /&gt;
== Verify ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Rules, with counters, as they are actually loaded&lt;br /&gt;
iptables -L -v -n --line-numbers&lt;br /&gt;
iptables -t nat -L -v -n&lt;br /&gt;
&lt;br /&gt;
# Watch a DNAT entry appear while testing from outside&lt;br /&gt;
conntrack -L -d 10.0.0.20&lt;br /&gt;
&lt;br /&gt;
# From an external host&lt;br /&gt;
nc -vz &amp;lt;wan-address&amp;gt; 443&lt;br /&gt;
nc -vz &amp;lt;wan-address&amp;gt; 993&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a published port does not answer, check the &amp;lt;code&amp;gt;FORWARD&amp;lt;/code&amp;gt; counters&lt;br /&gt;
first. Traffic that was DNATed but has no matching &amp;lt;code&amp;gt;FORWARD&amp;lt;/code&amp;gt; accept is&lt;br /&gt;
the usual cause, and it shows up as a rising policy-drop count rather than an&lt;br /&gt;
error anywhere.&lt;br /&gt;
&lt;br /&gt;
== Tearing it down ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sysctl -w net.ipv4.ip_forward=0&lt;br /&gt;
&lt;br /&gt;
iptables -P INPUT   ACCEPT&lt;br /&gt;
iptables -P FORWARD ACCEPT&lt;br /&gt;
iptables -P OUTPUT  ACCEPT&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -t nat -F&lt;br /&gt;
iptables -X&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Box|1=On current distributions &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; is usually a front end to nftables (&amp;lt;code&amp;gt;iptables-nft&amp;lt;/code&amp;gt;). The syntax above is unchanged; &amp;lt;code&amp;gt;iptables -V&amp;lt;/code&amp;gt; reports which backend is in use, and rules created this way are visible with &amp;lt;code&amp;gt;nft list ruleset&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Main_Page&amp;diff=804</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Main_Page&amp;diff=804"/>
		<updated>2026-08-09T21:48:46Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Drop deleted Linux Distros/Gaming cards; add Networking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-hero&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;We are small but growing fast!&amp;lt;/h1&amp;gt;&lt;br /&gt;
Notes on Linux administration, networking and the homelab — virtualization,&lt;br /&gt;
and short procedures that have actually been run.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Useful howtos|desc=Short, tested procedures for NGINX, DNS caches, sudo, mail and Cisco.|cmd=11 howtos}}&lt;br /&gt;
{{Card|page=Virtualization|desc=ESXi and VMware from the CLI, plus KVM and QEMU with virsh.|cmd=7 guides}}&lt;br /&gt;
{{Card|page=Networking|desc=Switches, routers, DNS and TLS — including running your own CA.|cmd=2 guides}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-footnote&amp;quot;&amp;gt;&lt;br /&gt;
Want to contribute? Drop an email to &#039;&#039;&#039;wiki at linuxize.net&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Networking&amp;diff=803</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Networking&amp;diff=803"/>
		<updated>2026-08-09T21:48:30Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Create Networking hub page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Networking notes — switches, routers, DNS, TLS and the things that only break&lt;br /&gt;
once a year.&lt;br /&gt;
&lt;br /&gt;
== Cisco ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=SYS-4-CONFIG RESOLVE FAILURE|title=SYS-4-CONFIG_RESOLVE_FAILURE|desc=What the log message means and how to stop it.|cmd=no ip domain-lookup}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Certificates ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Self-Signed CA|desc=Run your own CA with mkcert and get every box on the LAN to trust it.|cmd=mkcert -install}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=802</id>
		<title>Virtualization</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=802"/>
		<updated>2026-08-09T21:43:22Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Convert to card grids, matching Useful howtos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Running and managing virtual machines from the command line — VMware ESXi via&lt;br /&gt;
&amp;lt;code&amp;gt;esxcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vim-cmd&amp;lt;/code&amp;gt;, KVM and QEMU via &amp;lt;code&amp;gt;virsh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== VMware and ESXi ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Esxcli vm process list|title=List VM processes|desc=Find a VM&#039;s process World ID.|cmd=esxcli vm process list}}&lt;br /&gt;
{{Card|page=Manage ESXi VM Processes with CLI|title=Manage VM processes|desc=Kill an unresponsive VM — soft, then hard, then force.|cmd=esxcli vm process kill}}&lt;br /&gt;
{{Card|page=Power on a virtual machine from ESXi cli|title=Power on, off or reboot a VM|desc=Look up the vmid, check power state, then change it.|cmd=vim-cmd vmsvc/power.on}}&lt;br /&gt;
{{Card|page=Shutdown ESXi cli|title=Shut down or reboot the host|desc=From the ESX service console, and what each command does to running VMs.|cmd=poweroff}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KVM and QEMU ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;lz-cardgrid&amp;quot;&amp;gt;&lt;br /&gt;
{{Card|page=Virsh|title=Using virsh|desc=Listing, editing, starting, stopping and undefining guests.|cmd=virsh list --all}}&lt;br /&gt;
{{Card|page=Share folder between guest and host|desc=Pass a host directory into a guest with virtiofs by editing the VM&#039;s XML.|cmd=virsh edit}}&lt;br /&gt;
{{Card|page=Cloned VM has the same dhcp ip address|title=Cloned VM gets the same DHCP address|desc=The clone kept its machine-id. Regenerate it.|cmd=systemd-machine-id-setup}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ESXi]]&lt;br /&gt;
[[Category:Virtualization]]&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Libvirt]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=801</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=801"/>
		<updated>2026-08-09T21:37:43Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Chrome visited links use the accent; restore in-content categories under 1100px&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important appears in&lt;br /&gt;
 * exactly two places, both deliberate: the prefers-reduced-motion block, and&lt;br /&gt;
 * the thumbnail caption fill in section 11 (see the note there).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Visited links in chrome ---&lt;br /&gt;
 * `.mw-body a:visited` only covers article content, so every link outside it —&lt;br /&gt;
 * both sidebars, the Categories box, the tab strip, the footer — fell back to&lt;br /&gt;
 * MediaWiki&#039;s default visited blue, against a warm amber palette.&lt;br /&gt;
 *&lt;br /&gt;
 * Chrome links are given NO visited state rather than a palette-correct one.&lt;br /&gt;
 * Every reader has clicked &amp;quot;Main page&amp;quot; and &amp;quot;Recent changes&amp;quot;; colouring those&lt;br /&gt;
 * as visited turns the sidebar a second colour and tells you nothing. Visited&lt;br /&gt;
 * styling stays where it earns its place: article content. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation a:visited,&lt;br /&gt;
body.skin-timeless #mw-related-navigation a:visited,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar a:visited,&lt;br /&gt;
body.skin-timeless .sidebar-chunk a:visited,&lt;br /&gt;
body.skin-timeless #mw-header-container a:visited,&lt;br /&gt;
body.skin-timeless #mw-page-header-links a:visited,&lt;br /&gt;
body.skin-timeless #mw-footer a:visited,&lt;br /&gt;
body.skin-timeless .catlinks a:visited {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-site-navigation a:visited:hover,&lt;br /&gt;
body.skin-timeless #mw-related-navigation a:visited:hover,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar a:visited:hover,&lt;br /&gt;
body.skin-timeless .sidebar-chunk a:visited:hover,&lt;br /&gt;
body.skin-timeless .catlinks a:visited:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Categories below the sidebar breakpoint ---&lt;br /&gt;
 * Timeless shows categories in the right sidebar and hides the standard&lt;br /&gt;
 * in-content bar (#catlinks in #content-bottom-stuff). Below 1100px it&lt;br /&gt;
 * collapses BOTH sidebars into header dropdowns, so categories end up behind&lt;br /&gt;
 * a click exactly on the screens with least room.&lt;br /&gt;
 *&lt;br /&gt;
 * Rather than pin the sidebar box open — which fights the skin&#039;s layout and&lt;br /&gt;
 * pushes the article down the page — the in-content bar is restored at those&lt;br /&gt;
 * widths. It sits at the foot of the article, which is where MediaWiki puts it&lt;br /&gt;
 * anyway, and it inherits the .catlinks styling in section 2. */&lt;br /&gt;
@media screen and ( max-width: 1099px ) {&lt;br /&gt;
	body.skin-timeless #catlinks {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External and interwiki links. MediaWiki core colours these #36c / #3377aa,&lt;br /&gt;
 * with a specificity that beats the generic `a` rule above — so without this&lt;br /&gt;
 * every outbound link on the wiki renders in MediaWiki blue against a warm&lt;br /&gt;
 * amber palette. They already get a typographic marker below, so they do not&lt;br /&gt;
 * need a separate hue to be distinguishable. */&lt;br /&gt;
a.external,&lt;br /&gt;
a.extiw,&lt;br /&gt;
.mw-body a.external,&lt;br /&gt;
.mw-body a.extiw,&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Thumbnails / figures ---&lt;br /&gt;
 * MediaWiki core paints thumbnail frames #f8f9fa with a #eaecf0 border, on&lt;br /&gt;
 * both `figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;]` (modern parser output) and the older&lt;br /&gt;
 * `.thumbinner`. On a dark ground that is a light slab carrying our light&lt;br /&gt;
 * caption text — it was the single root cause behind every remaining&lt;br /&gt;
 * low-contrast element on the imported Wikipedia page, including the red links&lt;br /&gt;
 * inside captions.&lt;br /&gt;
 *&lt;br /&gt;
 * Not skin-scoped: figures are article content and appear under any skin. */&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Thumb&amp;quot; ],&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Frame&amp;quot; ],&lt;br /&gt;
.mw-parser-output .thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The caption and the older div.thumb wrapper keep a #f8f9fa fill from&lt;br /&gt;
 * somewhere in the core/skin cascade that outranks a plain&lt;br /&gt;
 * `.mw-parser-output figcaption` rule. I could not identify the winning&lt;br /&gt;
 * selector — the stylesheets were not readable through the CSSOM from this&lt;br /&gt;
 * page — so this is forced rather than out-specified. If the source is ever&lt;br /&gt;
 * found, drop the !important and match its specificity instead.&lt;br /&gt;
 *&lt;br /&gt;
 * Verified after the change: 0 low-contrast elements in light, dark and&lt;br /&gt;
 * unstamped, and no light surfaces left inside the article. */&lt;br /&gt;
.mw-parser-output figcaption,&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output div.thumb,&lt;br /&gt;
.mw-parser-output div.thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 ) !important;&lt;br /&gt;
	color: var( --lz-ink-2 ) !important;&lt;br /&gt;
	border-color: var( --lz-line ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The magnify/enlarge affordance on older thumb markup. */&lt;br /&gt;
.mw-parser-output .magnify a {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=800</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=800"/>
		<updated>2026-08-09T21:30:45Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: External/interwiki links: use the site accent, not MediaWiki blue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important appears in&lt;br /&gt;
 * exactly two places, both deliberate: the prefers-reduced-motion block, and&lt;br /&gt;
 * the thumbnail caption fill in section 11 (see the note there).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External and interwiki links. MediaWiki core colours these #36c / #3377aa,&lt;br /&gt;
 * with a specificity that beats the generic `a` rule above — so without this&lt;br /&gt;
 * every outbound link on the wiki renders in MediaWiki blue against a warm&lt;br /&gt;
 * amber palette. They already get a typographic marker below, so they do not&lt;br /&gt;
 * need a separate hue to be distinguishable. */&lt;br /&gt;
a.external,&lt;br /&gt;
a.extiw,&lt;br /&gt;
.mw-body a.external,&lt;br /&gt;
.mw-body a.extiw,&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Thumbnails / figures ---&lt;br /&gt;
 * MediaWiki core paints thumbnail frames #f8f9fa with a #eaecf0 border, on&lt;br /&gt;
 * both `figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;]` (modern parser output) and the older&lt;br /&gt;
 * `.thumbinner`. On a dark ground that is a light slab carrying our light&lt;br /&gt;
 * caption text — it was the single root cause behind every remaining&lt;br /&gt;
 * low-contrast element on the imported Wikipedia page, including the red links&lt;br /&gt;
 * inside captions.&lt;br /&gt;
 *&lt;br /&gt;
 * Not skin-scoped: figures are article content and appear under any skin. */&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Thumb&amp;quot; ],&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Frame&amp;quot; ],&lt;br /&gt;
.mw-parser-output .thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The caption and the older div.thumb wrapper keep a #f8f9fa fill from&lt;br /&gt;
 * somewhere in the core/skin cascade that outranks a plain&lt;br /&gt;
 * `.mw-parser-output figcaption` rule. I could not identify the winning&lt;br /&gt;
 * selector — the stylesheets were not readable through the CSSOM from this&lt;br /&gt;
 * page — so this is forced rather than out-specified. If the source is ever&lt;br /&gt;
 * found, drop the !important and match its specificity instead.&lt;br /&gt;
 *&lt;br /&gt;
 * Verified after the change: 0 low-contrast elements in light, dark and&lt;br /&gt;
 * unstamped, and no light surfaces left inside the article. */&lt;br /&gt;
.mw-parser-output figcaption,&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output div.thumb,&lt;br /&gt;
.mw-parser-output div.thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 ) !important;&lt;br /&gt;
	color: var( --lz-ink-2 ) !important;&lt;br /&gt;
	border-color: var( --lz-line ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The magnify/enlarge affordance on older thumb markup. */&lt;br /&gt;
.mw-parser-output .magnify a {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=799</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=799"/>
		<updated>2026-08-09T21:28:45Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Force thumbnail caption/thumb fill onto site tokens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important appears in&lt;br /&gt;
 * exactly two places, both deliberate: the prefers-reduced-motion block, and&lt;br /&gt;
 * the thumbnail caption fill in section 11 (see the note there).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Thumbnails / figures ---&lt;br /&gt;
 * MediaWiki core paints thumbnail frames #f8f9fa with a #eaecf0 border, on&lt;br /&gt;
 * both `figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;]` (modern parser output) and the older&lt;br /&gt;
 * `.thumbinner`. On a dark ground that is a light slab carrying our light&lt;br /&gt;
 * caption text — it was the single root cause behind every remaining&lt;br /&gt;
 * low-contrast element on the imported Wikipedia page, including the red links&lt;br /&gt;
 * inside captions.&lt;br /&gt;
 *&lt;br /&gt;
 * Not skin-scoped: figures are article content and appear under any skin. */&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Thumb&amp;quot; ],&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Frame&amp;quot; ],&lt;br /&gt;
.mw-parser-output .thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The caption and the older div.thumb wrapper keep a #f8f9fa fill from&lt;br /&gt;
 * somewhere in the core/skin cascade that outranks a plain&lt;br /&gt;
 * `.mw-parser-output figcaption` rule. I could not identify the winning&lt;br /&gt;
 * selector — the stylesheets were not readable through the CSSOM from this&lt;br /&gt;
 * page — so this is forced rather than out-specified. If the source is ever&lt;br /&gt;
 * found, drop the !important and match its specificity instead.&lt;br /&gt;
 *&lt;br /&gt;
 * Verified after the change: 0 low-contrast elements in light, dark and&lt;br /&gt;
 * unstamped, and no light surfaces left inside the article. */&lt;br /&gt;
.mw-parser-output figcaption,&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output div.thumb,&lt;br /&gt;
.mw-parser-output div.thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 ) !important;&lt;br /&gt;
	color: var( --lz-ink-2 ) !important;&lt;br /&gt;
	border-color: var( --lz-line ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The magnify/enlarge affordance on older thumb markup. */&lt;br /&gt;
.mw-parser-output .magnify a {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=798</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=798"/>
		<updated>2026-08-09T21:23:44Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Theme thumbnail figures (MediaWiki core paints them #f8f9fa)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. The only !important left&lt;br /&gt;
 * in the file is in the prefers-reduced-motion block, where it is correct.&lt;br /&gt;
 * (Section 9 used to need it to cancel an inline style pasted into every&lt;br /&gt;
 * article; that markup was removed from the articles on 2026-08-09.)&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Thumbnails / figures ---&lt;br /&gt;
 * MediaWiki core paints thumbnail frames #f8f9fa with a #eaecf0 border, on&lt;br /&gt;
 * both `figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;]` (modern parser output) and the older&lt;br /&gt;
 * `.thumbinner`. On a dark ground that is a light slab carrying our light&lt;br /&gt;
 * caption text — it was the single root cause behind every remaining&lt;br /&gt;
 * low-contrast element on the imported Wikipedia page, including the red links&lt;br /&gt;
 * inside captions.&lt;br /&gt;
 *&lt;br /&gt;
 * Not skin-scoped: figures are article content and appear under any skin. */&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Thumb&amp;quot; ],&lt;br /&gt;
.mw-parser-output figure[ typeof~=&amp;quot;mw:File/Frame&amp;quot; ],&lt;br /&gt;
.mw-parser-output .thumbinner {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output figcaption,&lt;br /&gt;
.mw-parser-output .thumbcaption {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The magnify/enlarge affordance on older thumb markup. */&lt;br /&gt;
.mw-parser-output .magnify a {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=797</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=797"/>
		<updated>2026-08-09T21:22:06Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Theme imported Wikipedia TemplateStyles boxes (ambox, CS1, hatnotes)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. The only !important left&lt;br /&gt;
 * in the file is in the prefers-reduced-motion block, where it is correct.&lt;br /&gt;
 * (Section 9 used to need it to cancel an inline style pasted into every&lt;br /&gt;
 * article; that markup was removed from the articles on 2026-08-09.)&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 *  11.  Imported Wikipedia templates (TemplateStyles overrides)&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 11. IMPORTED WIKIPEDIA TEMPLATES (TemplateStyles)&lt;br /&gt;
 *&lt;br /&gt;
 * Pages imported from Wikipedia — e.g. &amp;quot;Cinnamon (desktop environment)&amp;quot; —&lt;br /&gt;
 * drag in Module:Message box, CS1 citations and hatnotes. Those ship their own&lt;br /&gt;
 * CSS through TemplateStyles, which MediaWiki injects as a &amp;lt;style&amp;gt; block&lt;br /&gt;
 * INSIDE the page body. It therefore always lands after site.styles and wins&lt;br /&gt;
 * every tie on equal specificity.&lt;br /&gt;
 *&lt;br /&gt;
 * That is why every selector here starts with `body`: it raises specificity to&lt;br /&gt;
 * (0,2,1) against TemplateStyles&#039; (0,2,0), which beats it regardless of&lt;br /&gt;
 * document order. Without that, these rules silently do nothing.&lt;br /&gt;
 *&lt;br /&gt;
 * The imported palette is Wikipedia&#039;s: #fbfbfb fill, #a2a9b1 borders, and a&lt;br /&gt;
 * blue/orange/yellow/red/purple severity ramp. The fill was the real problem —&lt;br /&gt;
 * on a dark ground it rendered a near-white slab carrying our light text: 17&lt;br /&gt;
 * elements below 3:1, several at 1.21:1.&lt;br /&gt;
 *&lt;br /&gt;
 * The severity stripe is kept, because it carries meaning, but collapsed onto&lt;br /&gt;
 * our own tokens: critical -&amp;gt; red, needs-work -&amp;gt; accent, informational -&amp;gt;&lt;br /&gt;
 * neutral rule.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body .mw-parser-output .ambox {&lt;br /&gt;
	background-color: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-left: 6px solid var( --lz-line-strong );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text,&lt;br /&gt;
body .mw-parser-output .ambox .mbox-text-span,&lt;br /&gt;
body .mw-parser-output .ambox b {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox .hide-when-compact,&lt;br /&gt;
body .mw-parser-output .ambox .plainlinks {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Severity ramp, mapped onto the site palette. */&lt;br /&gt;
body .mw-parser-output .ambox-speedy,&lt;br /&gt;
body .mw-parser-output .ambox-delete {&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-content,&lt;br /&gt;
body .mw-parser-output .ambox-style {&lt;br /&gt;
	border-left-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-notice,&lt;br /&gt;
body .mw-parser-output .ambox-move,&lt;br /&gt;
body .mw-parser-output .ambox-protection {&lt;br /&gt;
	border-left-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .ambox-speedy {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hatnotes (&amp;quot;See also…&amp;quot;) sit above the article body. */&lt;br /&gt;
body .mw-parser-output .hatnote {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CS1 citation machinery. */&lt;br /&gt;
body .mw-parser-output .cs1-visible-error,&lt;br /&gt;
body .mw-parser-output .cs1-hidden-error {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .cs1-maint {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .citation:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Reference list and the [1] superscripts. */&lt;br /&gt;
body .mw-parser-output .mw-references-wrap,&lt;br /&gt;
body .mw-parser-output .reflist {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body .mw-parser-output .mw-references-wrap li:target {&lt;br /&gt;
	background-color: var( --lz-accent-tint );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=File:Linuxizenet-logo.svg&amp;diff=796</id>
		<title>File:Linuxizenet-logo.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=File:Linuxizenet-logo.svg&amp;diff=796"/>
		<updated>2026-08-09T21:10:33Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Site logo, cropped to artwork (was an A4 canvas 99% empty)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Site logo for [[MediaWiki:Common.css]] / $wgLogos. Cropped viewBox; see assets/README.md in the skin repo.&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Template:Box&amp;diff=795</id>
		<title>Template:Box</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Template:Box&amp;diff=795"/>
		<updated>2026-08-09T21:05:27Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Fix class concatenation: #ifeq strips whitespace, so lz-warn fused with lz-note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;lz-note {{#ifeq:{{{type|}}}|warning|lz-warn|}}&amp;quot;&amp;gt;{{{1|{{{text|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template:Box ==&lt;br /&gt;
&lt;br /&gt;
A callout for a note or a warning. Renders the &amp;lt;code&amp;gt;lz-note&amp;lt;/code&amp;gt; style&lt;br /&gt;
defined in [[MediaWiki:Common.css]].&lt;br /&gt;
&lt;br /&gt;
This replaced the old hand-pasted&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; wrapper, which was&lt;br /&gt;
removed from all 22 articles on 2026-08-09. That wrapper enclosed the whole&lt;br /&gt;
article body and had been rendered invisible by the site CSS; this template is&lt;br /&gt;
for actual callouts instead.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Required !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;) || yes || The note text. Positional works for plain prose.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; || no || &amp;lt;code&amp;gt;warning&amp;lt;/code&amp;gt; gives the red treatment. Anything else, or omitted, gives the default amber note.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Box|Keep rootCA-key.pem on the CA host only.}}&lt;br /&gt;
&lt;br /&gt;
{{Box|type=warning|Any process running as this user can take root without a challenge.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A caveat worth knowing ===&lt;br /&gt;
&lt;br /&gt;
Template parameters treat &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; as syntax. Text&lt;br /&gt;
containing either — which is common here, e.g. &amp;lt;code&amp;gt;on | off&amp;lt;/code&amp;gt; or&lt;br /&gt;
&amp;lt;code&amp;gt;ALL=(ALL)&amp;lt;/code&amp;gt; — must be escaped:&lt;br /&gt;
&lt;br /&gt;
* use &amp;lt;code&amp;gt;&amp;amp;amp;#124;&amp;lt;/code&amp;gt; in place of a literal &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;&lt;br /&gt;
* use &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; to name the first parameter when the text contains &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Box|1=Set underscores_in_headers on &amp;amp;#124; off; the default is off.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is precisely why article bodies were never wrapped in this template — a&lt;br /&gt;
whole page of shell commands passed through a parameter would break in dozens&lt;br /&gt;
of places. Keep &amp;lt;code&amp;gt;Box&amp;lt;/code&amp;gt; for short callouts.&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Template:Box&amp;diff=794</id>
		<title>Template:Box</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Template:Box&amp;diff=794"/>
		<updated>2026-08-09T21:04:32Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Callout template replacing the removed inline #ae8c55 wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;lz-note{{#ifeq:{{{type|}}}|warning| lz-warn|}}&amp;quot;&amp;gt;{{{1|{{{text|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template:Box ==&lt;br /&gt;
&lt;br /&gt;
A callout for a note or a warning. Renders the &amp;lt;code&amp;gt;lz-note&amp;lt;/code&amp;gt; style&lt;br /&gt;
defined in [[MediaWiki:Common.css]].&lt;br /&gt;
&lt;br /&gt;
This replaced the old hand-pasted&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; wrapper, which was&lt;br /&gt;
removed from all 22 articles on 2026-08-09. That wrapper enclosed the whole&lt;br /&gt;
article body and had been rendered invisible by the site CSS; this template is&lt;br /&gt;
for actual callouts instead.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Required !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;) || yes || The note text. Positional works for plain prose.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; || no || &amp;lt;code&amp;gt;warning&amp;lt;/code&amp;gt; gives the red treatment. Anything else, or omitted, gives the default amber note.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Box|Keep rootCA-key.pem on the CA host only.}}&lt;br /&gt;
&lt;br /&gt;
{{Box|type=warning|Any process running as this user can take root without a challenge.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A caveat worth knowing ===&lt;br /&gt;
&lt;br /&gt;
Template parameters treat &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; as syntax. Text&lt;br /&gt;
containing either — which is common here, e.g. &amp;lt;code&amp;gt;on | off&amp;lt;/code&amp;gt; or&lt;br /&gt;
&amp;lt;code&amp;gt;ALL=(ALL)&amp;lt;/code&amp;gt; — must be escaped:&lt;br /&gt;
&lt;br /&gt;
* use &amp;lt;code&amp;gt;&amp;amp;amp;#124;&amp;lt;/code&amp;gt; in place of a literal &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;&lt;br /&gt;
* use &amp;lt;code&amp;gt;1=&amp;lt;/code&amp;gt; to name the first parameter when the text contains &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Box|1=Set underscores_in_headers on &amp;amp;#124; off; the default is off.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is precisely why article bodies were never wrapped in this template — a&lt;br /&gt;
whole page of shell commands passed through a parameter would break in dozens&lt;br /&gt;
of places. Keep &amp;lt;code&amp;gt;Box&amp;lt;/code&amp;gt; for short callouts.&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=793</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=793"/>
		<updated>2026-08-09T21:04:31Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Retire the #ae8c55 neutraliser; section 9 is now just the Box callout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. The only !important left&lt;br /&gt;
 * in the file is in the prefers-reduced-motion block, where it is correct.&lt;br /&gt;
 * (Section 9 used to need it to cancel an inline style pasted into every&lt;br /&gt;
 * article; that markup was removed from the articles on 2026-08-09.)&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Callouts (Template:Box)&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. CALLOUTS  (Template:Box)&lt;br /&gt;
 *&lt;br /&gt;
 * The neutraliser that used to live here is gone. It cancelled a hand-pasted&lt;br /&gt;
 * `&amp;lt;div style=&amp;quot;border:3px solid #ae8c55…&amp;quot;&amp;gt;` wrapper that had been copied into&lt;br /&gt;
 * every article; that markup was stripped from all 22 pages on 2026-08-09, so&lt;br /&gt;
 * there is nothing left to neutralise.&lt;br /&gt;
 *&lt;br /&gt;
 * What remains is the real callout, used by Template:Box.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Self-Signed_CA&amp;diff=792</id>
		<title>Self-Signed CA</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Self-Signed_CA&amp;diff=792"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
== Home Lab: mkcert &amp;amp; System Trust ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Install mkcert &amp;amp; Root CA (Main Server Only) ===&lt;br /&gt;
Run these commands on the machine that will act as your Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install libnss3-tools -y&lt;br /&gt;
wget -O mkcert &amp;quot;https://dl.filippo.io/mkcert/latest?for=linux/amd64&amp;quot;&lt;br /&gt;
chmod +x mkcert&lt;br /&gt;
sudo mv mkcert /usr/local/bin/&lt;br /&gt;
mkcert -install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Generate the Domain Certificate ===&lt;br /&gt;
Generate the wildcard certificate and private key for your domain. You will upload the resulting .pem files to your reverse proxy (e.g., Nginx Proxy Manager).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkcert &amp;quot;*.example.com&amp;quot; &amp;quot;example.com&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Distribute the Root CA ===&lt;br /&gt;
Copy the rootCA.pem from your main server to the target machines so they can trust your new proxy certificates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Run on Main Server to push to target&lt;br /&gt;
scp $(mkcert -CAROOT)/rootCA.pem &amp;lt;user&amp;gt;@&amp;lt;remote-ip&amp;gt;:/tmp/rootCA.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Trust the CA: Debian / Ubuntu / Proxmox ===&lt;br /&gt;
Run these commands on headless Debian-based consoles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /tmp/rootCA.pem /usr/local/share/ca-certificates/example-ca.crt&lt;br /&gt;
sudo update-ca-certificates&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. Trust the CA: Fedora / RHEL / CentOS / Rocky ===&lt;br /&gt;
Run these commands on headless Fedora-based consoles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /tmp/rootCA.pem /etc/pki/ca-trust/source/anchors/example-ca.pem&lt;br /&gt;
sudo update-ca-trust&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. Verification ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -I https://host.example.com&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:NGINX]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Mac OS]]&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Perl_Warnings&amp;diff=791</id>
		<title>Perl Warnings</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Perl_Warnings&amp;diff=791"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
=== Perl Warninga ===&lt;br /&gt;
&lt;br /&gt;
perl: warning: Setting locale failed.&lt;br /&gt;
&lt;br /&gt;
perl: warning: Please check that your locale settings:&lt;br /&gt;
        LANGUAGE = (unset),&lt;br /&gt;
        LC_ALL = (unset),&lt;br /&gt;
        LC_ADDRESS = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_NAME = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_MONETARY = &amp;quot;bg_BG.UTF-8&amp;quot;,&lt;br /&gt;
        LC_PAPER = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_IDENTIFICATION = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_TELEPHONE = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_MEASUREMENT = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LC_TIME = &amp;quot;bg_BG.UTF-8&amp;quot;,&lt;br /&gt;
        LC_NUMERIC = &amp;quot;en_US.UTF-8&amp;quot;,&lt;br /&gt;
        LANG = &amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
    are supported and installed on your system.&lt;br /&gt;
    perl: warning: Falling back to a fallback locale (&amp;quot;en_US.UTF-8&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Add to .bashrc&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
export LC_CTYPE=en_US.UTF-8&lt;br /&gt;
export LC_ALL=en_US.UTF-8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Linux]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=SYS-4-CONFIG_RESOLVE_FAILURE&amp;diff=790</id>
		<title>SYS-4-CONFIG RESOLVE FAILURE</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=SYS-4-CONFIG_RESOLVE_FAILURE&amp;diff=790"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
=== Console Error Message ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
%Error opening tftp://255.255.255.255/swc-core-confg (Timed out)&lt;br /&gt;
*Mar  2 04:30:52.244: %SYS-4-CONFIG_RESOLVE_FAILURE: System config parse from (tftp://255.255.255.255/swc-core-confg) failed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Resolution==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
! Obtain privilege mode &lt;br /&gt;
swc-core#enable&lt;br /&gt;
! Enter config mode&lt;br /&gt;
swc-core#conf t&lt;br /&gt;
! Disable config service&lt;br /&gt;
swc-core(config)#no service config&lt;br /&gt;
! Exit config mode and write to memory your configuration.&lt;br /&gt;
swc-core#write mem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Cisco]]&lt;br /&gt;
[[Category: Networking]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Share_folder_between_guest_and_host&amp;diff=789</id>
		<title>Share folder between guest and host</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Share_folder_between_guest_and_host&amp;diff=789"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
==Share Folder Between Guest and Host in virt-manager (KVM/Qemu/libvirt)==&lt;br /&gt;
This article explains how to share a folder using virsh-edit from host machine into a guest&lt;br /&gt;
===Host directory===&lt;br /&gt;
 mkdir /path/to/directory/of/host/machine&lt;br /&gt;
===Edit VM&#039;s XML===&lt;br /&gt;
&lt;br /&gt;
 virsh destroy &amp;lt;guest&amp;gt;&amp;lt;ref&amp;gt;Stops VM&amp;lt;/ref&amp;gt;&lt;br /&gt;
 virsh edit &amp;lt;guest&amp;gt;&amp;lt;ref&amp;gt;Edit VM&#039;s configuration XML File&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;filesystem type=&amp;quot;mount&amp;quot; accessmode=&amp;quot;passthrough&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;driver type=&amp;quot;virtiofs&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;binary path=&amp;quot;/usr/libexec/virtiofsd&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;source dir=&amp;quot;/path/to/directory/of/host/machine&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;target dir=&amp;quot;user_frendly_name_goes_here&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;alias name=&amp;quot;fs1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;address type=&amp;quot;pci&amp;quot; domain=&amp;quot;0x0000&amp;quot; bus=&amp;quot;0x08&amp;quot; slot=&amp;quot;0x00&amp;quot; function=&amp;quot;0x0&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/filesystem&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Mount shared folder into guest machine===&lt;br /&gt;
 virsh start &amp;lt;guest&amp;gt;&lt;br /&gt;
 mkdir /path/to/shared/folder/to/bo/mount&lt;br /&gt;
 mount -t virtiofs user_frendly_name_goes_here /path/to/shared/folder/to/bo/mount&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
All those commands should be run by user root, or using sudo&lt;br /&gt;
&lt;br /&gt;
[[Category:Virtualization]]&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:libvirt]]&lt;br /&gt;
[[Category:Linux]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Sudo_nopasswd&amp;diff=788</id>
		<title>Sudo nopasswd</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Sudo_nopasswd&amp;diff=788"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
=== sudo without password authentication ===&lt;br /&gt;
&lt;br /&gt;
Edit sudoers with:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
visudo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changes==&lt;br /&gt;
For user:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;user&amp;gt; ALL=(ALL) NOPASSWD: ALL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For groups:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
%group_name ALL=(ALL) NOPASSWD: ALL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category: Linux]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Spamassasin_Manual_Learning&amp;diff=787</id>
		<title>Spamassasin Manual Learning</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Spamassasin_Manual_Learning&amp;diff=787"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
;Training with Maildir format&lt;br /&gt;
&lt;br /&gt;
Maildir format is a bit different -- it stores each message in a seperate file within one of three subdirectories (&#039;cur&#039;, &#039;new&#039;, and &#039;tmp&#039;). Instead of pointing sa-learn at a specific mbox or mbx file, you point sa-learn at the directories and it looks at all the files inside:&lt;br /&gt;
&lt;br /&gt;
    sa-learn --no-sync [--spam or --ham] [folder/{cur,new}]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
    sa-learn --no-sync --spam ~/Maildir/.INBOX.Spam/{cur,new}&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
    sa-learn --no-sync --ham ~/Maildir/.INBOX/{cur,new}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Postfix]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=NGINX_underscores_in_headers&amp;diff=786</id>
		<title>NGINX underscores in headers</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=NGINX_underscores_in_headers&amp;diff=786"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
Headers with underscore in name are disabled by NGINX. To enable them, add underscores_in_headers in NGINX server or http context.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot; &amp;gt;&lt;br /&gt;
Syntax:   underscores_in_headers on | off;&lt;br /&gt;
Default:  underscores_in_headers off;&lt;br /&gt;
Context:  http, server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For more information you can check [https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers This Document]&lt;br /&gt;
[[Category: NGINX]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Virsh&amp;diff=785</id>
		<title>Virsh</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Virsh&amp;diff=785"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
== Virsh commands ==&lt;br /&gt;
===Preview===&lt;br /&gt;
 virsh list&lt;br /&gt;
 virsh list --all&amp;lt;ref&amp;gt;Shows stopped VMs as well&amp;lt;/ref&amp;gt;&lt;br /&gt;
 virsh list --autostart&amp;lt;ref&amp;gt;Show VMs with autostart flag&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Edit===&lt;br /&gt;
 virsh edit&lt;br /&gt;
===Create===&lt;br /&gt;
&lt;br /&gt;
===Remove===&lt;br /&gt;
 virsh undefine&lt;br /&gt;
===Stop===&lt;br /&gt;
 virsh destroy&lt;br /&gt;
===Start===&lt;br /&gt;
 virsh start&lt;br /&gt;
&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Libvirt]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=784</id>
		<title>Virtualization</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=784"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
== VMWare and ESXi ==&lt;br /&gt;
Useful commands and howtos&lt;br /&gt;
===CLI commands===&lt;br /&gt;
 [[Esxcli vm process list]]&lt;br /&gt;
 [[Manage ESXi VM Processes with CLI]]&lt;br /&gt;
 [[Power on a virtual machine from ESXi cli]]&lt;br /&gt;
 [[Shutdown ESXi cli]]&lt;br /&gt;
== KVM and QEMU ==&lt;br /&gt;
Useful commands and howtos&lt;br /&gt;
===CLI commands===&lt;br /&gt;
 [[Virsh|Using virsh]]&lt;br /&gt;
 [[Share folder between guest and host|Share folder between guest and host]]&lt;br /&gt;
===Networking===&lt;br /&gt;
 [[Cloned VM has the same dhcp ip address]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ESXi]]&lt;br /&gt;
[[Category:Virtualization]]&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Libvirt]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Shutdown_ESXi_cli&amp;diff=783</id>
		<title>Shutdown ESXi cli</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Shutdown_ESXi_cli&amp;diff=783"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
Log in to the ESX service console and perform one of these steps from the service console to shut down or reboot ESX 4.x hosts:&lt;br /&gt;
&lt;br /&gt;
 Run the shutdown –r now command to reboot the system.&lt;br /&gt;
Note: This command shuts down the virtual machines running on the ESX 4.0 hosts.&lt;br /&gt;
 Run the reboot command to reboot the system.&lt;br /&gt;
 Run the poweroff command to shut down ESX. &lt;br /&gt;
&lt;br /&gt;
After the shutdown, a message indicates that it is safe to power off your system. Press the power button until the machine powers off. &lt;br /&gt;
You can then manually reboot the system.&lt;br /&gt;
&lt;br /&gt;
See also [[Manage ESXi VM Processes with CLI]]&lt;br /&gt;
[[Category:ESXi]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Power_on_a_virtual_machine_from_ESXi_cli&amp;diff=782</id>
		<title>Power on a virtual machine from ESXi cli</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Power_on_a_virtual_machine_from_ESXi_cli&amp;diff=782"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
To power on, shutdown or reboot a virtual machine from the command line:&lt;br /&gt;
&lt;br /&gt;
List the inventory ID of the virtual machine with the command&lt;br /&gt;
&lt;br /&gt;
    vim-cmd vmsvc/getallvms |grep &amp;lt;vm name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The first column of the output shows the vmid.&lt;br /&gt;
&lt;br /&gt;
Check the power state of the virtual machine with the command&lt;br /&gt;
&lt;br /&gt;
    vim-cmd vmsvc/power.getstate &amp;lt;vmid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Power-on the virtual machine with the command&lt;br /&gt;
&lt;br /&gt;
    vim-cmd vmsvc/power.on &amp;lt;vmid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related Commands:&lt;br /&gt;
&lt;br /&gt;
Power-off the virtual machine with the command&lt;br /&gt;
&lt;br /&gt;
    vim-cmd vmsvc/power.off &amp;lt;vmid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot the virtual machine with the command&lt;br /&gt;
&lt;br /&gt;
    vim-cmd vmsvc/power.reboot &amp;lt;vmid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Manage ESXi VM Processes with CLI ]]&lt;br /&gt;
[[Category:ESXi]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Clean_Linux_DNS_cache&amp;diff=781</id>
		<title>Clean Linux DNS cache</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Clean_Linux_DNS_cache&amp;diff=781"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
In order to clean systemd-resolved cashe:&lt;br /&gt;
* Run the following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo resolvectl flush-caches&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Clean_Windows_DNS_cache&amp;diff=780</id>
		<title>Clean Windows DNS cache</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Clean_Windows_DNS_cache&amp;diff=780"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
* ctrl+r.&lt;br /&gt;
* cmd&lt;br /&gt;
* Run the following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
ipconfig /flushdns&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If the command succeeds, the system does not return any output.&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Cloned_VM_has_the_same_dhcp_ip_address&amp;diff=779</id>
		<title>Cloned VM has the same dhcp ip address</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Cloned_VM_has_the_same_dhcp_ip_address&amp;diff=779"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
After cloning a VM from another VM, or from a template the DHCP address is the same. The problem is that machine-id remains.&lt;br /&gt;
&lt;br /&gt;
This is how to fix it.&lt;br /&gt;
 sudo rm /etc/machine-id&lt;br /&gt;
 sudo systemd-machine-id-setup&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
[[Virtualization]]&lt;br /&gt;
[[Category:Virtualization]]&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Libvirt]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Linux-6.8.0&amp;diff=778</id>
		<title>Linux-6.8.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Linux-6.8.0&amp;diff=778"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Linux 6.8==&lt;br /&gt;
From: [[Linus Torvalds]]&lt;br /&gt;
&lt;br /&gt;
Date: Sun Mar 10 2024 - 17:07:07 EST &lt;br /&gt;
&lt;br /&gt;
 So it took a bit longer for the commit counts to come down this&lt;br /&gt;
 release than I tend to prefer, but a lot of that seemed to be about&lt;br /&gt;
 various selftest updates (networking in particular) rather than any&lt;br /&gt;
 actual real sign of problems. And the last two weeks have been pretty&lt;br /&gt;
 quiet, so I feel there&#039;s no real reason to delay 6.8. We always have&lt;br /&gt;
 some straggling work, and we&#039;ll end up having some of it pushed to&lt;br /&gt;
 stable rather than hold up the new code. Nothing worrisome enough to&lt;br /&gt;
 keep the regular release schedule from happening.&lt;br /&gt;
 &lt;br /&gt;
 As usual, the shortlog below is just for the last week since rc7, the&lt;br /&gt;
 overall changes in 6.8 are obviously much much bigger. This is not the&lt;br /&gt;
 historically big release that 6.7 was - we seem to be back to a fairly&lt;br /&gt;
 average release size for the last few years. You can see it in the&lt;br /&gt;
 overall diffstats too - this looks like an average release in pretty&lt;br /&gt;
 much all respects, and we don&#039;t have (for example) any obvious big new&lt;br /&gt;
 filesystems or architectures. I think the biggest single new thing in&lt;br /&gt;
 6.8 is probably the new Xe drm driver, but honestly, the big bulk of&lt;br /&gt;
 changes are just various random updates and fixes all over.&lt;br /&gt;
 &lt;br /&gt;
 Just as it should be.&lt;br /&gt;
 &lt;br /&gt;
 In a sea of normality, one thing that stands out is a bit of random&lt;br /&gt;
 git numerology. This is the last mainline kernel to have less than&lt;br /&gt;
 ten million git objects. In fact, we&#039;re at 9.996 million objects, so&lt;br /&gt;
 we got really close to crossing that not-milestone if it hadn&#039;t been&lt;br /&gt;
 for the nice calming down in the last couple of weeks. Other trees -&lt;br /&gt;
 notably linux-next - obviously are already comfortably over that&lt;br /&gt;
 limit.&lt;br /&gt;
 &lt;br /&gt;
 Of course, there is absolutely nothing special about it apart from a&lt;br /&gt;
 nice round number. Git doesn&#039;t care.&lt;br /&gt;
 &lt;br /&gt;
 Anyway, this all obviously means that tomorrow the merge window for&lt;br /&gt;
 6.9 opens, and I already have several pull requests pending. Thanks to&lt;br /&gt;
 everybody who sent in early pull requests, you know who you are. But&lt;br /&gt;
 before that excitement commences, please do spend a bit of time with&lt;br /&gt;
 the now boring old status quo and give 6.8 a good test, ok?&lt;br /&gt;
 &lt;br /&gt;
 Linus&lt;br /&gt;
&lt;br /&gt;
 ---&lt;br /&gt;
&lt;br /&gt;
==Kernel 6.8.0 Builds==&lt;br /&gt;
===Kernel Manual Build===&lt;br /&gt;
[[Kernel Manual Build]]&lt;br /&gt;
===Ubuntu and Debian build===&lt;br /&gt;
====Download build 6.8.0-4====&lt;br /&gt;
====Installation====&lt;br /&gt;
===Other Builds===&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Kernel]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Linux_subsystem_in_Windows_OS&amp;diff=777</id>
		<title>Linux subsystem in Windows OS</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Linux_subsystem_in_Windows_OS&amp;diff=777"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
==How to enable [[Linux]] in a [[Windows]] OS==&lt;br /&gt;
You can run a [[Linux]] distribution in your [[Windows]] system installing Windows Subsystem for Linux. It is very useful for development purposes and some testing.&lt;br /&gt;
[[File:WinLogo.jpg|200px|right|thumb]]&lt;br /&gt;
==Open Windows Powers hell as an Administrator==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powershell&amp;quot; &amp;gt;&lt;br /&gt;
wsl -l -o&lt;br /&gt;
PS C:\Windows\system32&amp;gt; wsl -l -o&lt;br /&gt;
The following is a list of valid distributions that can be installed.&lt;br /&gt;
Install using &#039;wsl.exe --install -d &amp;lt;Distro&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
NAME                                   FRIENDLY NAME&lt;br /&gt;
Ubuntu                                 Ubuntu&lt;br /&gt;
Debian                                 Debian GNU/Linux&lt;br /&gt;
kali-linux                             Kali Linux Rolling&lt;br /&gt;
Ubuntu-18.04                           Ubuntu 18.04 LTS&lt;br /&gt;
Ubuntu-20.04                           Ubuntu 20.04 LTS&lt;br /&gt;
Ubuntu-22.04                           Ubuntu 22.04 LTS&lt;br /&gt;
OracleLinux_7_9                        Oracle Linux 7.9&lt;br /&gt;
OracleLinux_8_7                        Oracle Linux 8.7&lt;br /&gt;
OracleLinux_9_1                        Oracle Linux 9.1&lt;br /&gt;
openSUSE-Leap-15.5                     openSUSE Leap 15.5&lt;br /&gt;
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4&lt;br /&gt;
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5&lt;br /&gt;
openSUSE-Tumbleweed                    openSUSE Tumbleweed&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Choose your [[Linux]] Distribution and install==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powershell&amp;quot; &amp;gt;&lt;br /&gt;
wsl --install -d Ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Reboot [[Windows]]==&lt;br /&gt;
Reboot your [[Windows]] system.&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category: Linux]]&lt;br /&gt;
[[Category: Windows]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Downgrading_Ansible_Engine_on_CentOS_7&amp;diff=776</id>
		<title>Downgrading Ansible Engine on CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Downgrading_Ansible_Engine_on_CentOS_7&amp;diff=776"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
;First check current Ansible version:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[root@ansible-server ~]# ansible --version&lt;br /&gt;
ansible 2.8.0&lt;br /&gt;
...&lt;br /&gt;
[root@ansible-server ~]#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Downgrade using PIP&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    [root@ansible-server ~]# pip install ansible==2.7.10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:CentOS7]]&lt;br /&gt;
[[Category:Automation]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Clean_MAC_DNS_cache&amp;diff=775</id>
		<title>Clean MAC DNS cache</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Clean_MAC_DNS_cache&amp;diff=775"/>
		<updated>2026-08-09T21:02:38Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
* Click Applications.&lt;br /&gt;
* Click Utilities.&lt;br /&gt;
* Double-click Terminal.&lt;br /&gt;
* Run the following command:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dscacheutil -flushcache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If the command succeeds, the system does not return any output.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mac OS]]&lt;br /&gt;
[[Category:Howto]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Manage_ESXi_VM_Processes_with_CLI&amp;diff=774</id>
		<title>Manage ESXi VM Processes with CLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Manage_ESXi_VM_Processes_with_CLI&amp;diff=774"/>
		<updated>2026-08-09T21:02:37Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
Get World ID of VM&lt;br /&gt;
&lt;br /&gt;
    esxcli vm process list | grep -A 2 &amp;lt;VM Name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To kill unresponsive VM&lt;br /&gt;
&lt;br /&gt;
    esxcli vm process kill --type=soft --wordld-id=&amp;lt;WorldID&amp;gt;&lt;br /&gt;
If this does not help:&lt;br /&gt;
    esxcli vm process kill --type=hard --wordld-id=&amp;lt;WorldID&amp;gt;&lt;br /&gt;
If all os so bad then as a last resort:&lt;br /&gt;
    esxcli vm process kill --type=force --wordld-id=&amp;lt;WorldID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Power on a virtual machine from ESXi cli]]&lt;br /&gt;
[[Category:ESXi]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Esxcli_vm_process_list&amp;diff=773</id>
		<title>Esxcli vm process list</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Esxcli_vm_process_list&amp;diff=773"/>
		<updated>2026-08-09T21:02:37Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove inert legacy #ae8c55 wrapper (superseded by site CSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{clear}}&lt;br /&gt;
To list vm process world id&lt;br /&gt;
&lt;br /&gt;
    esxcli vm process list | grep -A 2 &amp;lt;VM Name&amp;gt;&lt;br /&gt;
See also Manage [[ESXi VM Processes with CLI]]&lt;br /&gt;
[[Category:ESXi]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=770</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=770"/>
		<updated>2026-08-09T20:52:21Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Header: space and align the theme toggle; mask the dropdown caret&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	/* 38px, not the container&#039;s 42px: the Echo badges next door sit 2px above&lt;br /&gt;
	 * the box centre, so centring on 42px left the button visibly low. */&lt;br /&gt;
	height: 38px;&lt;br /&gt;
	/* Left margin matters — the slot is the first child of #user-tools and&lt;br /&gt;
	 * would otherwise butt straight against the end of the search bar. */&lt;br /&gt;
	margin: 0 0.75em 0 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The dropdown caret on the same &amp;lt;h2&amp;gt;. Timeless uses arrow-down-grey.svg,&lt;br /&gt;
 * which disappears on a dark ground for the same reason as the user glyph —&lt;br /&gt;
 * and again cannot be filtered, because the element carries the label text.&lt;br /&gt;
 * Same masked-token treatment. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2::after {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M5%208h10l-5%206z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / 10px 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=769</id>
		<title>Virtualization</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=Virtualization&amp;diff=769"/>
		<updated>2026-08-09T20:46:18Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Fix unbalanced div nesting: stray &amp;lt;/div&amp;gt; and unclosed wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style = &amp;quot;line-height: 1.2&amp;quot;&amp;gt;&lt;br /&gt;
{{clear}}&amp;lt;/div&amp;gt;&amp;lt;div style = &amp;quot;margin-top: 1.5em; border: 3px solid #ae8c55; border-radius: .5em; padding: 1em 1.5em; font-size: 1.2em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
== VMWare and ESXi ==&lt;br /&gt;
Useful commands and howtos&lt;br /&gt;
===CLI commands===&lt;br /&gt;
 [[Esxcli vm process list]]&lt;br /&gt;
 [[Manage ESXi VM Processes with CLI]]&lt;br /&gt;
 [[Power on a virtual machine from ESXi cli]]&lt;br /&gt;
 [[Shutdown ESXi cli]]&lt;br /&gt;
== KVM and QEMU ==&lt;br /&gt;
Useful commands and howtos&lt;br /&gt;
===CLI commands===&lt;br /&gt;
 [[Virsh|Using virsh]]&lt;br /&gt;
 [[Share folder between guest and host|Share folder between guest and host]]&lt;br /&gt;
===Networking===&lt;br /&gt;
 [[Cloned VM has the same dhcp ip address]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:ESXi]]&lt;br /&gt;
[[Category:Virtualization]]&lt;br /&gt;
[[Category:QEMU]]&lt;br /&gt;
[[Category:Libvirt]]&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.js&amp;diff=768</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.js&amp;diff=768"/>
		<updated>2026-08-09T20:44:15Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Mount theme toggle in #user-tools so anonymous readers can see it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.js — wiki.linuxize.net&lt;br /&gt;
 *&lt;br /&gt;
 * Three jobs, in priority order:&lt;br /&gt;
 *   1. Patch the viewport meta so the responsive CSS in Common.css can fire.&lt;br /&gt;
 *      This is a workaround. The correct fix is $wgVectorResponsive = true;&lt;br /&gt;
 *      in LocalSettings.php — delete section 1 once that is set.&lt;br /&gt;
 *   2. Add a language chip + copy button to every SyntaxHighlight block.&lt;br /&gt;
 *   3. Add a light/dark toggle that persists and matches the CSS tokens.&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 1. Viewport — PERMANENT. Do not delete.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy emits &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;,&lt;br /&gt;
	 * which makes phones render a zoomed-out desktop page and prevents&lt;br /&gt;
	 * every max-width media query from ever matching.&lt;br /&gt;
	 *&lt;br /&gt;
	 * $wgVectorResponsive does NOT fix this. Tested 2026-08-08 on&lt;br /&gt;
	 * MediaWiki 1.41.5 with Vector 1.0.0: with the setting enabled and&lt;br /&gt;
	 * placed after wfLoadSkin( &#039;Vector&#039; ), ?useskin=vector still returns&lt;br /&gt;
	 * width=1000, while vector-2022, timeless, monobook and minerva all&lt;br /&gt;
	 * return width=device-width. The config does not affect the legacy&lt;br /&gt;
	 * skin in this version.&lt;br /&gt;
	 *&lt;br /&gt;
	 * So this patch is the only thing making the site usable on a phone&lt;br /&gt;
	 * while the default skin is Vector legacy. It can only be removed by&lt;br /&gt;
	 * switching the default skin — and that also means reworking the&lt;br /&gt;
	 * chrome selectors in Common.css section 2 and 3, which target the&lt;br /&gt;
	 * legacy DOM.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Runs at parse time rather than on DOM ready, to minimise the&lt;br /&gt;
	 * reflow flash.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	var viewport = document.querySelector( &#039;meta[name=&amp;quot;viewport&amp;quot;]&#039; );&lt;br /&gt;
&lt;br /&gt;
	if ( viewport ) {&lt;br /&gt;
		viewport.setAttribute( &#039;content&#039;, &#039;width=device-width, initial-scale=1&#039; );&lt;br /&gt;
	} else {&lt;br /&gt;
		viewport = document.createElement( &#039;meta&#039; );&lt;br /&gt;
		viewport.name = &#039;viewport&#039;;&lt;br /&gt;
		viewport.content = &#039;width=device-width, initial-scale=1&#039;;&lt;br /&gt;
		document.head.appendChild( viewport );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 2. Theme&lt;br /&gt;
	 * Applied before first paint so there is no light flash on a dark&lt;br /&gt;
	 * device. &#039;auto&#039; stores nothing and lets prefers-color-scheme win.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	var STORAGE_KEY = &#039;lz-theme&#039;;&lt;br /&gt;
&lt;br /&gt;
	function readTheme() {&lt;br /&gt;
		try {&lt;br /&gt;
			return window.localStorage.getItem( STORAGE_KEY );&lt;br /&gt;
		} catch ( e ) {&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function applyTheme( theme ) {&lt;br /&gt;
		if ( theme === &#039;dark&#039; || theme === &#039;light&#039; ) {&lt;br /&gt;
			document.documentElement.setAttribute( &#039;data-theme&#039;, theme );&lt;br /&gt;
		} else {&lt;br /&gt;
			document.documentElement.removeAttribute( &#039;data-theme&#039; );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	applyTheme( readTheme() );&lt;br /&gt;
&lt;br /&gt;
	function currentTheme() {&lt;br /&gt;
		var stamped = document.documentElement.getAttribute( &#039;data-theme&#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( stamped ) {&lt;br /&gt;
			return stamped;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return window.matchMedia( &#039;(prefers-color-scheme: dark)&#039; ).matches ? &#039;dark&#039; : &#039;light&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function buildThemeToggle() {&lt;br /&gt;
		/* Mount points differ per skin.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Timeless: #user-tools. It is the only header element present for&lt;br /&gt;
		 * BOTH anonymous and logged-in visitors. #personal-extra only exists&lt;br /&gt;
		 * when logged in (it carries the Echo badges), and #p-personal&#039;s list&lt;br /&gt;
		 * lives inside the &amp;quot;Anonymous&amp;quot; / username dropdown — mounting there&lt;br /&gt;
		 * hid the toggle behind a click for every anonymous reader, which is&lt;br /&gt;
		 * to say for almost everyone.&lt;br /&gt;
		 *&lt;br /&gt;
		 * Vector legacy: the personal links row. */&lt;br /&gt;
		var timelessHost = document.querySelector( &#039;#user-tools&#039; );&lt;br /&gt;
		var vectorHost = document.querySelector( &#039;#p-personal .vector-menu-content-list&#039; );&lt;br /&gt;
		var host = timelessHost || vectorHost;&lt;br /&gt;
		var wrap;&lt;br /&gt;
&lt;br /&gt;
		if ( !host || host.querySelector( &#039;.lz-theme-toggle&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		wrap = document.createElement( timelessHost ? &#039;div&#039; : &#039;li&#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( timelessHost ) {&lt;br /&gt;
			wrap.className = &#039;lz-theme-slot&#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
&lt;br /&gt;
		btn.type = &#039;button&#039;;&lt;br /&gt;
		btn.className = &#039;lz-theme-toggle&#039;;&lt;br /&gt;
		btn.setAttribute( &#039;aria-live&#039;, &#039;polite&#039; );&lt;br /&gt;
&lt;br /&gt;
		function label() {&lt;br /&gt;
			btn.textContent = currentTheme() === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;;&lt;br /&gt;
			btn.setAttribute( &#039;aria-label&#039;, &#039;Switch to &#039; + btn.textContent + &#039; theme&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		label();&lt;br /&gt;
&lt;br /&gt;
		btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
			var next = currentTheme() === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;;&lt;br /&gt;
&lt;br /&gt;
			applyTheme( next );&lt;br /&gt;
&lt;br /&gt;
			try {&lt;br /&gt;
				window.localStorage.setItem( STORAGE_KEY, next );&lt;br /&gt;
			} catch ( e ) {&lt;br /&gt;
				/* private browsing — the choice just will not persist */&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			label();&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		wrap.appendChild( btn );&lt;br /&gt;
&lt;br /&gt;
		if ( timelessHost ) {&lt;br /&gt;
			/* First child so it sits left of the badges and the user menu,&lt;br /&gt;
			 * both of which float within #user-tools. */&lt;br /&gt;
			host.insertBefore( wrap, host.firstChild );&lt;br /&gt;
		} else {&lt;br /&gt;
			host.appendChild( wrap );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 3. Code block chrome&lt;br /&gt;
	 * SyntaxHighlight emits:&lt;br /&gt;
	 *   &amp;lt;div class=&amp;quot;mw-highlight mw-highlight-lang-bash&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;…&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
	 * so the language is recoverable from the class name.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	function buildCodeChrome() {&lt;br /&gt;
		var blocks = document.querySelectorAll( &#039;#mw-content-text .mw-highlight&#039; );&lt;br /&gt;
&lt;br /&gt;
		Array.prototype.forEach.call( blocks, function ( block ) {&lt;br /&gt;
			if ( block.querySelector( &#039;.lz-chead&#039; ) ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var pre = block.querySelector( &#039;pre&#039; );&lt;br /&gt;
&lt;br /&gt;
			if ( !pre ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var match = /mw-highlight-lang-([a-z0-9+#-]+)/i.exec( block.className );&lt;br /&gt;
			var head = document.createElement( &#039;div&#039; );&lt;br /&gt;
			var lang = document.createElement( &#039;span&#039; );&lt;br /&gt;
			var copy = document.createElement( &#039;button&#039; );&lt;br /&gt;
&lt;br /&gt;
			head.className = &#039;lz-chead&#039;;&lt;br /&gt;
&lt;br /&gt;
			lang.className = &#039;lz-lang&#039;;&lt;br /&gt;
			lang.textContent = match ? match[ 1 ] : &#039;text&#039;;&lt;br /&gt;
&lt;br /&gt;
			copy.type = &#039;button&#039;;&lt;br /&gt;
			copy.className = &#039;lz-copy&#039;;&lt;br /&gt;
			copy.textContent = &#039;Copy&#039;;&lt;br /&gt;
&lt;br /&gt;
			copy.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
				var text = pre.innerText;&lt;br /&gt;
&lt;br /&gt;
				function done() {&lt;br /&gt;
					copy.textContent = &#039;Copied&#039;;&lt;br /&gt;
					copy.classList.add( &#039;lz-done&#039; );&lt;br /&gt;
					window.setTimeout( function () {&lt;br /&gt;
						copy.textContent = &#039;Copy&#039;;&lt;br /&gt;
						copy.classList.remove( &#039;lz-done&#039; );&lt;br /&gt;
					}, 1600 );&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( navigator.clipboard &amp;amp;&amp;amp; window.isSecureContext ) {&lt;br /&gt;
					navigator.clipboard.writeText( text ).then( done, function () {&lt;br /&gt;
						copy.textContent = &#039;Failed&#039;;&lt;br /&gt;
					} );&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// Fallback for non-secure contexts.&lt;br /&gt;
				var ta = document.createElement( &#039;textarea&#039; );&lt;br /&gt;
&lt;br /&gt;
				ta.value = text;&lt;br /&gt;
				ta.setAttribute( &#039;readonly&#039;, &#039;&#039; );&lt;br /&gt;
				ta.style.position = &#039;absolute&#039;;&lt;br /&gt;
				ta.style.left = &#039;-9999px&#039;;&lt;br /&gt;
				document.body.appendChild( ta );&lt;br /&gt;
				ta.select();&lt;br /&gt;
&lt;br /&gt;
				try {&lt;br /&gt;
					document.execCommand( &#039;copy&#039; );&lt;br /&gt;
					done();&lt;br /&gt;
				} catch ( e ) {&lt;br /&gt;
					copy.textContent = &#039;Failed&#039;;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				document.body.removeChild( ta );&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			head.appendChild( lang );&lt;br /&gt;
			head.appendChild( copy );&lt;br /&gt;
			block.insertBefore( head, pre );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------- */&lt;br /&gt;
	if ( window.mw &amp;amp;&amp;amp; mw.hook ) {&lt;br /&gt;
		mw.hook( &#039;wikipage.content&#039; ).add( buildCodeChrome );&lt;br /&gt;
		$( buildThemeToggle );&lt;br /&gt;
	} else {&lt;br /&gt;
		document.addEventListener( &#039;DOMContentLoaded&#039;, function () {&lt;br /&gt;
			buildCodeChrome();&lt;br /&gt;
			buildThemeToggle();&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=767</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=767"/>
		<updated>2026-08-09T20:44:15Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Timeless: toggle slot for anon users; masked user glyph instead of filter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into #user-tools by Common.js — the one header element&lt;br /&gt;
 * that exists for anonymous and logged-in visitors alike. #personal-extra and&lt;br /&gt;
 * the user dropdown do not. */&lt;br /&gt;
body.skin-timeless .lz-theme-slot {&lt;br /&gt;
	float: left;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	height: 42px;&lt;br /&gt;
	margin-right: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The user glyph beside &amp;quot;Datanasov&amp;quot; / &amp;quot;Anonymous&amp;quot;.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless paints it as a background-image on the &amp;lt;h2&amp;gt; that also holds the&lt;br /&gt;
 * label, so it is a dark grey SVG that disappears on a dark ground — and it&lt;br /&gt;
 * cannot be fixed with --lz-icon-filter, because filtering that element would&lt;br /&gt;
 * invert the label text with it. Replaced with a masked pseudo-element&lt;br /&gt;
 * instead: `mask` + `background-color` lets the glyph take a token colour&lt;br /&gt;
 * directly, so it is correct in both themes with no filter at all. */&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-header-container h2::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	top: 50%;&lt;br /&gt;
	width: 17px;&lt;br /&gt;
	height: 17px;&lt;br /&gt;
	transform: translateY( -50% );&lt;br /&gt;
	background-color: var( --lz-ink-2 );&lt;br /&gt;
	-webkit-mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
	mask: url( &amp;quot;data:image/svg+xml,%3Csvg%20xmlns=&#039;http://www.w3.org/2000/svg&#039;%20viewBox=&#039;0%200%2020%2020&#039;%3E%3Cpath%20d=&#039;M10%2010a4%204%200%20100-8%204%204%200%20000%208Zm0%201.6c-4.2%200-7%202.1-7%204.6V18h14v-1.8c0-2.5-2.8-4.6-7-4.6Z&#039;/%3E%3C/svg%3E&amp;quot; ) no-repeat center / contain;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=766</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=766"/>
		<updated>2026-08-09T20:34:00Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Restrict icon invert to icon-only elements; stop double-treating search button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons.&lt;br /&gt;
 *&lt;br /&gt;
 * Only elements that are PURELY an icon may go in this list. A filter applies&lt;br /&gt;
 * to an element&#039;s text as well as its background image, so filtering anything&lt;br /&gt;
 * that renders a label inverts the label too — and because the computed&lt;br /&gt;
 * `color` is unchanged, a contrast scan reports it as fine while it looks&lt;br /&gt;
 * wrong on screen. That is how #mw-header-container h2 (&amp;quot;Datanasov&amp;quot; plus an&lt;br /&gt;
 * avatar glyph) slipped through once. Check filtered elements by eye.&lt;br /&gt;
 *&lt;br /&gt;
 * Excluded on purpose: #searchButton (re-grounded above — filtering it as&lt;br /&gt;
 * well flipped it back to light), and the footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot;&lt;br /&gt;
 * badge, which is a real logo. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into the header by Common.js. */&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0 0.35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=765</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=765"/>
		<updated>2026-08-09T20:32:20Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Timeless dark: header and tab link colours (Timeless hardcodes #000)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput,&lt;br /&gt;
body.skin-timeless #searchButton {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Timeless hardcodes color:#000 on the header region and on the page-header&lt;br /&gt;
 * tab links. `body { color }` cannot reach either, so on a dark ground they&lt;br /&gt;
 * rendered black-on-near-black at 1.18:1. */&lt;br /&gt;
body.skin-timeless #mw-header-container,&lt;br /&gt;
body.skin-timeless #p-banner,&lt;br /&gt;
body.skin-timeless #p-banner a,&lt;br /&gt;
body.skin-timeless #user-tools,&lt;br /&gt;
body.skin-timeless #personal,&lt;br /&gt;
body.skin-timeless #personal-extra {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links a {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-page-header-links li.selected a {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons. The footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot; badge is a real&lt;br /&gt;
 * logo and is deliberately excluded. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton,&lt;br /&gt;
body.skin-timeless #searchButton,&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into the header by Common.js. */&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0 0.35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=764</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=764"/>
		<updated>2026-08-09T20:30:39Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Timeless dark: fix user dropdown surface and invert monochrome skin icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	/* Skin icons are monochrome dark SVG data-URIs, so they vanish on a dark&lt;br /&gt;
	 * ground. Flipping them via a token keeps this theme-driven instead of&lt;br /&gt;
	 * duplicating selectors inside each dark block. */&lt;br /&gt;
	--lz-icon-filter: none;&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-icon-filter: invert( 0.82 );&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput,&lt;br /&gt;
body.skin-timeless #searchButton {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface.&lt;br /&gt;
 * #personal-inner must be matched by ID — Timeless styles it with an ID&lt;br /&gt;
 * selector, which outranks any class selector we could write here. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless #personal-inner,&lt;br /&gt;
body.skin-timeless #p-variants-desktop .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #p-personal-label,&lt;br /&gt;
body.skin-timeless #personal-inner h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Monochrome skin icons. The footer&#039;s &amp;quot;Powered by MediaWiki&amp;quot; badge is a real&lt;br /&gt;
 * logo and is deliberately excluded. */&lt;br /&gt;
body.skin-timeless .mw-echo-notifications-badge,&lt;br /&gt;
body.skin-timeless #mw-searchButton,&lt;br /&gt;
body.skin-timeless #searchButton,&lt;br /&gt;
body.skin-timeless #mw-header-container h2 {&lt;br /&gt;
	filter: var( --lz-icon-filter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into the header by Common.js. */&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0 0.35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.js&amp;diff=763</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.js&amp;diff=763"/>
		<updated>2026-08-09T20:28:46Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Mount the theme toggle in Timeless&amp;#039;s header (#personal-extra)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.js — wiki.linuxize.net&lt;br /&gt;
 *&lt;br /&gt;
 * Three jobs, in priority order:&lt;br /&gt;
 *   1. Patch the viewport meta so the responsive CSS in Common.css can fire.&lt;br /&gt;
 *      This is a workaround. The correct fix is $wgVectorResponsive = true;&lt;br /&gt;
 *      in LocalSettings.php — delete section 1 once that is set.&lt;br /&gt;
 *   2. Add a language chip + copy button to every SyntaxHighlight block.&lt;br /&gt;
 *   3. Add a light/dark toggle that persists and matches the CSS tokens.&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 1. Viewport — PERMANENT. Do not delete.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy emits &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;,&lt;br /&gt;
	 * which makes phones render a zoomed-out desktop page and prevents&lt;br /&gt;
	 * every max-width media query from ever matching.&lt;br /&gt;
	 *&lt;br /&gt;
	 * $wgVectorResponsive does NOT fix this. Tested 2026-08-08 on&lt;br /&gt;
	 * MediaWiki 1.41.5 with Vector 1.0.0: with the setting enabled and&lt;br /&gt;
	 * placed after wfLoadSkin( &#039;Vector&#039; ), ?useskin=vector still returns&lt;br /&gt;
	 * width=1000, while vector-2022, timeless, monobook and minerva all&lt;br /&gt;
	 * return width=device-width. The config does not affect the legacy&lt;br /&gt;
	 * skin in this version.&lt;br /&gt;
	 *&lt;br /&gt;
	 * So this patch is the only thing making the site usable on a phone&lt;br /&gt;
	 * while the default skin is Vector legacy. It can only be removed by&lt;br /&gt;
	 * switching the default skin — and that also means reworking the&lt;br /&gt;
	 * chrome selectors in Common.css section 2 and 3, which target the&lt;br /&gt;
	 * legacy DOM.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Runs at parse time rather than on DOM ready, to minimise the&lt;br /&gt;
	 * reflow flash.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	var viewport = document.querySelector( &#039;meta[name=&amp;quot;viewport&amp;quot;]&#039; );&lt;br /&gt;
&lt;br /&gt;
	if ( viewport ) {&lt;br /&gt;
		viewport.setAttribute( &#039;content&#039;, &#039;width=device-width, initial-scale=1&#039; );&lt;br /&gt;
	} else {&lt;br /&gt;
		viewport = document.createElement( &#039;meta&#039; );&lt;br /&gt;
		viewport.name = &#039;viewport&#039;;&lt;br /&gt;
		viewport.content = &#039;width=device-width, initial-scale=1&#039;;&lt;br /&gt;
		document.head.appendChild( viewport );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 2. Theme&lt;br /&gt;
	 * Applied before first paint so there is no light flash on a dark&lt;br /&gt;
	 * device. &#039;auto&#039; stores nothing and lets prefers-color-scheme win.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	var STORAGE_KEY = &#039;lz-theme&#039;;&lt;br /&gt;
&lt;br /&gt;
	function readTheme() {&lt;br /&gt;
		try {&lt;br /&gt;
			return window.localStorage.getItem( STORAGE_KEY );&lt;br /&gt;
		} catch ( e ) {&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function applyTheme( theme ) {&lt;br /&gt;
		if ( theme === &#039;dark&#039; || theme === &#039;light&#039; ) {&lt;br /&gt;
			document.documentElement.setAttribute( &#039;data-theme&#039;, theme );&lt;br /&gt;
		} else {&lt;br /&gt;
			document.documentElement.removeAttribute( &#039;data-theme&#039; );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	applyTheme( readTheme() );&lt;br /&gt;
&lt;br /&gt;
	function currentTheme() {&lt;br /&gt;
		var stamped = document.documentElement.getAttribute( &#039;data-theme&#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( stamped ) {&lt;br /&gt;
			return stamped;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return window.matchMedia( &#039;(prefers-color-scheme: dark)&#039; ).matches ? &#039;dark&#039; : &#039;light&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function buildThemeToggle() {&lt;br /&gt;
		/* Mount points differ per skin, in preference order:&lt;br /&gt;
		 *   - Timeless: #personal-extra is the small icon strip in the header,&lt;br /&gt;
		 *     always visible. #p-personal&#039;s list is inside the user dropdown,&lt;br /&gt;
		 *     so a toggle there would be hidden behind a click.&lt;br /&gt;
		 *   - Vector legacy: the personal links row.&lt;br /&gt;
		 * Until this existed, the toggle simply never rendered under Timeless&lt;br /&gt;
		 * and dark mode was reachable only via prefers-color-scheme. */&lt;br /&gt;
		var host = document.querySelector( &#039;#personal-extra ul&#039; ) ||&lt;br /&gt;
			document.querySelector( &#039;#p-personal .vector-menu-content-list&#039; ) ||&lt;br /&gt;
			document.querySelector( &#039;#p-personal ul&#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( !host || host.querySelector( &#039;.lz-theme-toggle&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var li = document.createElement( &#039;li&#039; );&lt;br /&gt;
		var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
&lt;br /&gt;
		btn.type = &#039;button&#039;;&lt;br /&gt;
		btn.className = &#039;lz-theme-toggle&#039;;&lt;br /&gt;
		btn.setAttribute( &#039;aria-live&#039;, &#039;polite&#039; );&lt;br /&gt;
&lt;br /&gt;
		function label() {&lt;br /&gt;
			btn.textContent = currentTheme() === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;;&lt;br /&gt;
			btn.setAttribute( &#039;aria-label&#039;, &#039;Switch to &#039; + btn.textContent + &#039; theme&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		label();&lt;br /&gt;
&lt;br /&gt;
		btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
			var next = currentTheme() === &#039;dark&#039; ? &#039;light&#039; : &#039;dark&#039;;&lt;br /&gt;
&lt;br /&gt;
			applyTheme( next );&lt;br /&gt;
&lt;br /&gt;
			try {&lt;br /&gt;
				window.localStorage.setItem( STORAGE_KEY, next );&lt;br /&gt;
			} catch ( e ) {&lt;br /&gt;
				/* private browsing — the choice just will not persist */&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			label();&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		li.appendChild( btn );&lt;br /&gt;
		host.appendChild( li );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ---------------------------------------------------------------&lt;br /&gt;
	 * 3. Code block chrome&lt;br /&gt;
	 * SyntaxHighlight emits:&lt;br /&gt;
	 *   &amp;lt;div class=&amp;quot;mw-highlight mw-highlight-lang-bash&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;…&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
	 * so the language is recoverable from the class name.&lt;br /&gt;
	 * ------------------------------------------------------------- */&lt;br /&gt;
	function buildCodeChrome() {&lt;br /&gt;
		var blocks = document.querySelectorAll( &#039;#mw-content-text .mw-highlight&#039; );&lt;br /&gt;
&lt;br /&gt;
		Array.prototype.forEach.call( blocks, function ( block ) {&lt;br /&gt;
			if ( block.querySelector( &#039;.lz-chead&#039; ) ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var pre = block.querySelector( &#039;pre&#039; );&lt;br /&gt;
&lt;br /&gt;
			if ( !pre ) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			var match = /mw-highlight-lang-([a-z0-9+#-]+)/i.exec( block.className );&lt;br /&gt;
			var head = document.createElement( &#039;div&#039; );&lt;br /&gt;
			var lang = document.createElement( &#039;span&#039; );&lt;br /&gt;
			var copy = document.createElement( &#039;button&#039; );&lt;br /&gt;
&lt;br /&gt;
			head.className = &#039;lz-chead&#039;;&lt;br /&gt;
&lt;br /&gt;
			lang.className = &#039;lz-lang&#039;;&lt;br /&gt;
			lang.textContent = match ? match[ 1 ] : &#039;text&#039;;&lt;br /&gt;
&lt;br /&gt;
			copy.type = &#039;button&#039;;&lt;br /&gt;
			copy.className = &#039;lz-copy&#039;;&lt;br /&gt;
			copy.textContent = &#039;Copy&#039;;&lt;br /&gt;
&lt;br /&gt;
			copy.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
				var text = pre.innerText;&lt;br /&gt;
&lt;br /&gt;
				function done() {&lt;br /&gt;
					copy.textContent = &#039;Copied&#039;;&lt;br /&gt;
					copy.classList.add( &#039;lz-done&#039; );&lt;br /&gt;
					window.setTimeout( function () {&lt;br /&gt;
						copy.textContent = &#039;Copy&#039;;&lt;br /&gt;
						copy.classList.remove( &#039;lz-done&#039; );&lt;br /&gt;
					}, 1600 );&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ( navigator.clipboard &amp;amp;&amp;amp; window.isSecureContext ) {&lt;br /&gt;
					navigator.clipboard.writeText( text ).then( done, function () {&lt;br /&gt;
						copy.textContent = &#039;Failed&#039;;&lt;br /&gt;
					} );&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				// Fallback for non-secure contexts.&lt;br /&gt;
				var ta = document.createElement( &#039;textarea&#039; );&lt;br /&gt;
&lt;br /&gt;
				ta.value = text;&lt;br /&gt;
				ta.setAttribute( &#039;readonly&#039;, &#039;&#039; );&lt;br /&gt;
				ta.style.position = &#039;absolute&#039;;&lt;br /&gt;
				ta.style.left = &#039;-9999px&#039;;&lt;br /&gt;
				document.body.appendChild( ta );&lt;br /&gt;
				ta.select();&lt;br /&gt;
&lt;br /&gt;
				try {&lt;br /&gt;
					document.execCommand( &#039;copy&#039; );&lt;br /&gt;
					done();&lt;br /&gt;
				} catch ( e ) {&lt;br /&gt;
					copy.textContent = &#039;Failed&#039;;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				document.body.removeChild( ta );&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			head.appendChild( lang );&lt;br /&gt;
			head.appendChild( copy );&lt;br /&gt;
			block.insertBefore( head, pre );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------- */&lt;br /&gt;
	if ( window.mw &amp;amp;&amp;amp; mw.hook ) {&lt;br /&gt;
		mw.hook( &#039;wikipage.content&#039; ).add( buildCodeChrome );&lt;br /&gt;
		$( buildThemeToggle );&lt;br /&gt;
	} else {&lt;br /&gt;
		document.addEventListener( &#039;DOMContentLoaded&#039;, function () {&lt;br /&gt;
			buildCodeChrome();&lt;br /&gt;
			buildThemeToggle();&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=762</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=762"/>
		<updated>2026-08-09T20:28:45Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Remove Timeless light-lock: dark chrome now exists&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in THREE places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block. There is a parity check for this in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput,&lt;br /&gt;
body.skin-timeless #searchButton {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into the header by Common.js. */&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0 0.35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=761</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=761"/>
		<updated>2026-08-09T20:27:50Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Timeless: repoint chrome surfaces at site tokens (warms light, enables dark)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   1b. TEMPORARY light-lock for Timeless (delete when dark chrome exists)&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in FOUR places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block, and the Timeless light-lock in 1b. There is a parity check for this&lt;br /&gt;
 * in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1b. TEMPORARY: force the light palette under Timeless.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless&#039;s chrome (header bar, tab strip, both sidebars, portlet headings)&lt;br /&gt;
 * carries its own hardcoded light palette. The dark tokens above only ever&lt;br /&gt;
 * covered content and the footer, so under Timeless dark mode produced 32&lt;br /&gt;
 * elements below 3:1 — measured 2026-08-09, several at 1.18:1.&lt;br /&gt;
 *&lt;br /&gt;
 * That is not opt-in: the theme toggle in Common.js attaches to a Vector-only&lt;br /&gt;
 * element and never renders under Timeless, so dark was reachable ONLY via&lt;br /&gt;
 * prefers-color-scheme — automatic, and with no way for a visitor to escape it.&lt;br /&gt;
 *&lt;br /&gt;
 * Custom properties inherit, so redeclaring them on &amp;lt;body&amp;gt; beats the :root&lt;br /&gt;
 * definitions for everything inside. Vector keeps working dark.&lt;br /&gt;
 *&lt;br /&gt;
 * DELETE THIS BLOCK once the Timeless dark chrome is written.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body.skin-timeless {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless chrome surfaces ---&lt;br /&gt;
 * Timeless paints its chrome from its own cool grey ramp: #eaecf0 page ground,&lt;br /&gt;
 * #f8f9fa sidebar boxes, #ffffff header and content, #c8ccd1 input borders.&lt;br /&gt;
 * Repointing those at our tokens does two jobs at once — it warms the chrome&lt;br /&gt;
 * to match the palette in light mode, and it is what makes dark mode possible&lt;br /&gt;
 * at all. These eight surfaces were exactly the ones that stayed light and&lt;br /&gt;
 * produced the 32 low-contrast elements measured on 2026-08-09.&lt;br /&gt;
 *&lt;br /&gt;
 * Deliberately NOT wrapped in a dark-only guard: the warm surfaces are an&lt;br /&gt;
 * improvement in light mode too. */&lt;br /&gt;
body.skin-timeless #mw-header-container {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	background: var( --lz-ground );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content,&lt;br /&gt;
body.skin-timeless #site-navigation,&lt;br /&gt;
body.skin-timeless #site-tools,&lt;br /&gt;
body.skin-timeless #page-tools,&lt;br /&gt;
body.skin-timeless #catlinks-sidebar,&lt;br /&gt;
body.skin-timeless .sidebar-chunk {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #simpleSearch,&lt;br /&gt;
body.skin-timeless #searchInput,&lt;br /&gt;
body.skin-timeless #searchButton {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings in both sidebars. */&lt;br /&gt;
body.skin-timeless #mw-site-navigation h3,&lt;br /&gt;
body.skin-timeless #mw-related-navigation h3,&lt;br /&gt;
body.skin-timeless .sidebar-chunk h3 {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-bottom-color: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Dropdowns (user menu, &amp;quot;More&amp;quot;) float above the page on their own surface. */&lt;br /&gt;
body.skin-timeless .dropdown,&lt;br /&gt;
body.skin-timeless .mw-portlet .dropdown {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border-color: var( --lz-line );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Theme toggle, mounted into the header by Common.js. */&lt;br /&gt;
body.skin-timeless .lz-theme-toggle {&lt;br /&gt;
	margin: 0 0.35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=760</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=760"/>
		<updated>2026-08-09T20:25:34Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Timeless: recolour tricolour band and footer rule to the site palette&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   1b. TEMPORARY light-lock for Timeless (delete when dark chrome exists)&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in FOUR places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block, and the Timeless light-lock in 1b. There is a parity check for this&lt;br /&gt;
 * in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Timeless draws a red/blue/green tricolour under the header and a teal&lt;br /&gt;
	 * rule above the footer. Recoloured here into a warm ramp from the site&lt;br /&gt;
	 * palette — the device is kept, the clashing hues are not. */&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		--lz-band-1: #e0b45e;&lt;br /&gt;
		--lz-band-2: #b78a35;&lt;br /&gt;
		--lz-band-3: #7d5f22;&lt;br /&gt;
		--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	--lz-band-1: #e0b45e;&lt;br /&gt;
	--lz-band-2: #b78a35;&lt;br /&gt;
	--lz-band-3: #7d5f22;&lt;br /&gt;
	--lz-band-rule: #b78a35;&lt;br /&gt;
&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1b. TEMPORARY: force the light palette under Timeless.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless&#039;s chrome (header bar, tab strip, both sidebars, portlet headings)&lt;br /&gt;
 * carries its own hardcoded light palette. The dark tokens above only ever&lt;br /&gt;
 * covered content and the footer, so under Timeless dark mode produced 32&lt;br /&gt;
 * elements below 3:1 — measured 2026-08-09, several at 1.18:1.&lt;br /&gt;
 *&lt;br /&gt;
 * That is not opt-in: the theme toggle in Common.js attaches to a Vector-only&lt;br /&gt;
 * element and never renders under Timeless, so dark was reachable ONLY via&lt;br /&gt;
 * prefers-color-scheme — automatic, and with no way for a visitor to escape it.&lt;br /&gt;
 *&lt;br /&gt;
 * Custom properties inherit, so redeclaring them on &amp;lt;body&amp;gt; beats the :root&lt;br /&gt;
 * definitions for everything inside. Vector keeps working dark.&lt;br /&gt;
 *&lt;br /&gt;
 * DELETE THIS BLOCK once the Timeless dark chrome is written.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body.skin-timeless {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-band-1: #7a4e0e;&lt;br /&gt;
	--lz-band-2: #a9752a;&lt;br /&gt;
	--lz-band-3: #c9a45c;&lt;br /&gt;
	--lz-band-rule: #a9752a;&lt;br /&gt;
&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless accent bands ---&lt;br /&gt;
 * Timeless ships a red / blue / green tricolour strip under the header&lt;br /&gt;
 * (three stacked divs inside #mw-header-hack and .color-bar) and a teal rule&lt;br /&gt;
 * above the footer on #mw-content-container. Against a warm amber palette&lt;br /&gt;
 * those three hues read as someone else&#039;s brand. Recoloured into a warm ramp,&lt;br /&gt;
 * deep to light, left to right: the structural device survives, the clash&lt;br /&gt;
 * does not.&lt;br /&gt;
 *&lt;br /&gt;
 * Only border-*-color is set on the tab underline, never border-width, so the&lt;br /&gt;
 * broad `li.selected` selector cannot accidentally draw a border on a list&lt;br /&gt;
 * item in article content. */&lt;br /&gt;
body.skin-timeless .color-left {&lt;br /&gt;
	background-color: var( --lz-band-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-middle {&lt;br /&gt;
	background-color: var( --lz-band-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless .color-right {&lt;br /&gt;
	background-color: var( --lz-band-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-content-container {&lt;br /&gt;
	border-bottom-color: var( --lz-band-rule );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless li.selected {&lt;br /&gt;
	border-bottom-color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=759</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=759"/>
		<updated>2026-08-09T20:07:42Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Update file header: Timeless is default, code palette is theme-aware&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * MediaWiki 1.41.5. Default skin: Timeless (since 2026-08-09).&lt;br /&gt;
 * Vector legacy is still selectable, so its rules are kept and scoped to&lt;br /&gt;
 * `body.skin-vector`.&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, after the skin&#039;s own styles, so&lt;br /&gt;
 * equal-specificity selectors win without !important. !important is used only&lt;br /&gt;
 * where it overrides an inline style attribute in page wikitext (section 9).&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1.  Tokens&lt;br /&gt;
 *   1b. TEMPORARY light-lock for Timeless (delete when dark chrome exists)&lt;br /&gt;
 *   2.  Vector legacy chrome            &amp;lt;- inert under Timeless&lt;br /&gt;
 *   3.  Vector legacy responsive layout &amp;lt;- scoped to body.skin-vector&lt;br /&gt;
 *   4.  Content typography&lt;br /&gt;
 *   5.  Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6.  TOC&lt;br /&gt;
 *   7.  Tables&lt;br /&gt;
 *   8.  Card grids (index pages)&lt;br /&gt;
 *   9.  Legacy inline-style box neutraliser&lt;br /&gt;
 *  10.  Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; the two dark blocks redefine tokens only.&lt;br /&gt;
 *&lt;br /&gt;
 * Any change to a colour here must be applied in FOUR places or the themes&lt;br /&gt;
 * drift apart: :root, the prefers-color-scheme block, the [data-theme=&amp;quot;dark&amp;quot;]&lt;br /&gt;
 * block, and the Timeless light-lock in 1b. There is a parity check for this&lt;br /&gt;
 * in the README.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1b. TEMPORARY: force the light palette under Timeless.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless&#039;s chrome (header bar, tab strip, both sidebars, portlet headings)&lt;br /&gt;
 * carries its own hardcoded light palette. The dark tokens above only ever&lt;br /&gt;
 * covered content and the footer, so under Timeless dark mode produced 32&lt;br /&gt;
 * elements below 3:1 — measured 2026-08-09, several at 1.18:1.&lt;br /&gt;
 *&lt;br /&gt;
 * That is not opt-in: the theme toggle in Common.js attaches to a Vector-only&lt;br /&gt;
 * element and never renders under Timeless, so dark was reachable ONLY via&lt;br /&gt;
 * prefers-color-scheme — automatic, and with no way for a visitor to escape it.&lt;br /&gt;
 *&lt;br /&gt;
 * Custom properties inherit, so redeclaring them on &amp;lt;body&amp;gt; beats the :root&lt;br /&gt;
 * definitions for everything inside. Vector keeps working dark.&lt;br /&gt;
 *&lt;br /&gt;
 * DELETE THIS BLOCK once the Timeless dark chrome is written.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body.skin-timeless {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=758</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=758"/>
		<updated>2026-08-09T20:06:08Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Darken code chrome label for AA on the header strip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * Target: MediaWiki 1.41.5, skin Vector legacy (vector-2010)&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, AFTER skins.vector.styles.legacy,&lt;br /&gt;
 * so equal-specificity selectors win without !important. !important is used&lt;br /&gt;
 * only where it overrides an inline style attribute in page wikitext.&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1. Tokens&lt;br /&gt;
 *   2. Vector legacy chrome overrides&lt;br /&gt;
 *   3. Responsive layout          &amp;lt;- inert until the viewport meta is fixed&lt;br /&gt;
 *   4. Content typography&lt;br /&gt;
 *   5. Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6. TOC&lt;br /&gt;
 *   7. Tables&lt;br /&gt;
 *   8. Card grids (index pages)&lt;br /&gt;
 *   9. Legacy inline-style box neutraliser&lt;br /&gt;
 *  10. Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; dark redefines tokens only. Code panels stay dark in&lt;br /&gt;
 * both themes, so the Pygments palette below is theme-independent.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1b. TEMPORARY: force the light palette under Timeless.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless&#039;s chrome (header bar, tab strip, both sidebars, portlet headings)&lt;br /&gt;
 * carries its own hardcoded light palette. The dark tokens above only ever&lt;br /&gt;
 * covered content and the footer, so under Timeless dark mode produced 32&lt;br /&gt;
 * elements below 3:1 — measured 2026-08-09, several at 1.18:1.&lt;br /&gt;
 *&lt;br /&gt;
 * That is not opt-in: the theme toggle in Common.js attaches to a Vector-only&lt;br /&gt;
 * element and never renders under Timeless, so dark was reachable ONLY via&lt;br /&gt;
 * prefers-color-scheme — automatic, and with no way for a visitor to escape it.&lt;br /&gt;
 *&lt;br /&gt;
 * Custom properties inherit, so redeclaring them on &amp;lt;body&amp;gt; beats the :root&lt;br /&gt;
 * definitions for everything inside. Vector keeps working dark.&lt;br /&gt;
 *&lt;br /&gt;
 * DELETE THIS BLOCK once the Timeless dark chrome is written.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body.skin-timeless {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #665d4d;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
	<entry>
		<id>https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=757</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxize.net/index.php?title=MediaWiki:Common.css&amp;diff=757"/>
		<updated>2026-08-09T20:05:25Z</updated>

		<summary type="html">&lt;p&gt;Datanasov: Light-theme code panels: warm tint instead of near-black; syntax inks now theme-aware&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================================&lt;br /&gt;
 * MediaWiki:Common.css  —  wiki.linuxize.net&lt;br /&gt;
 * Target: MediaWiki 1.41.5, skin Vector legacy (vector-2010)&lt;br /&gt;
 *&lt;br /&gt;
 * Loads via the `site.styles` module, AFTER skins.vector.styles.legacy,&lt;br /&gt;
 * so equal-specificity selectors win without !important. !important is used&lt;br /&gt;
 * only where it overrides an inline style attribute in page wikitext.&lt;br /&gt;
 *&lt;br /&gt;
 * Sections:&lt;br /&gt;
 *   1. Tokens&lt;br /&gt;
 *   2. Vector legacy chrome overrides&lt;br /&gt;
 *   3. Responsive layout          &amp;lt;- inert until the viewport meta is fixed&lt;br /&gt;
 *   4. Content typography&lt;br /&gt;
 *   5. Code blocks (SyntaxHighlight / Pygments)&lt;br /&gt;
 *   6. TOC&lt;br /&gt;
 *   7. Tables&lt;br /&gt;
 *   8. Card grids (index pages)&lt;br /&gt;
 *   9. Legacy inline-style box neutraliser&lt;br /&gt;
 *  10. Print&lt;br /&gt;
 * ========================================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1. TOKENS&lt;br /&gt;
 * Light is the base; dark redefines tokens only. Code panels stay dark in&lt;br /&gt;
 * both themes, so the Pygments palette below is theme-independent.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
:root {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	/* Code panel — a warm tint that belongs to the page, not a black slab&lt;br /&gt;
	 * dropped onto it. Sits just below the white content surface so the panel&lt;br /&gt;
	 * reads as inset without fighting the cream ground. */&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #7d7263;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	/* Syntax inks. Dark on light here; the dark blocks below invert them.&lt;br /&gt;
	 * Contrast against --lz-code-bg is measured in the browser after any&lt;br /&gt;
	 * change to these — see the note above section 5. */&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
&lt;br /&gt;
	--lz-mono: ui-monospace, &amp;quot;SF Mono&amp;quot;, SFMono-Regular, &amp;quot;JetBrains Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace;&lt;br /&gt;
	--lz-sans: ui-sans-serif, system-ui, -apple-system, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-color-scheme: dark ) {&lt;br /&gt;
	:root:not( [ data-theme=&amp;quot;light&amp;quot; ] ) {&lt;br /&gt;
		--lz-ground:      #14110c;&lt;br /&gt;
		--lz-surface:     #1b1711;&lt;br /&gt;
		--lz-surface-2:   #231e16;&lt;br /&gt;
		--lz-ink:         #ece5d8;&lt;br /&gt;
		--lz-ink-2:       #b3a894;&lt;br /&gt;
		--lz-ink-3:       #877c6a;&lt;br /&gt;
		--lz-line:        #322b21;&lt;br /&gt;
		--lz-line-strong: #4a4133;&lt;br /&gt;
		--lz-accent:      #dda94d;&lt;br /&gt;
		--lz-accent-hov:  #f0c273;&lt;br /&gt;
		--lz-accent-tint: #2c2417;&lt;br /&gt;
		--lz-visited:     #c3a0d4;&lt;br /&gt;
		--lz-red:         #e08585;&lt;br /&gt;
		--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
&lt;br /&gt;
		/* The code panel sinks BELOW the surface here. Two dark surfaces this&lt;br /&gt;
		 * close together only separate by ~1.1:1, so the border and the&lt;br /&gt;
		 * header strip carry the delineation, not the fill.&lt;br /&gt;
		 * Keep every value here identical to the [data-theme=&amp;quot;dark&amp;quot;] block&lt;br /&gt;
		 * below — a viewer on system-dark never stamps the attribute. */&lt;br /&gt;
		--lz-code-bg:      #0c0a06;&lt;br /&gt;
		--lz-code-bg-2:    #171208;&lt;br /&gt;
		--lz-code-ink:     #e9e1d2;&lt;br /&gt;
		--lz-code-line:    #3d3323;&lt;br /&gt;
		--lz-code-chrome:  #9c8f79;&lt;br /&gt;
		--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
		--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
		--lz-code-ok:      #b8c98a;&lt;br /&gt;
		--lz-code-ok-line: #4d5a35;&lt;br /&gt;
		--lz-code-link:       #e6bd6d;&lt;br /&gt;
		--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
		--lz-syn-comment: #7d7263;&lt;br /&gt;
		--lz-syn-keyword: #dda94d;&lt;br /&gt;
		--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
		--lz-syn-var:     #8fc0d6;&lt;br /&gt;
		--lz-syn-string:  #b8c98a;&lt;br /&gt;
		--lz-syn-op:      #d98e5a;&lt;br /&gt;
		--lz-syn-punct:   #a2947e;&lt;br /&gt;
		--lz-syn-num:     #d98e5a;&lt;br /&gt;
		--lz-syn-err:     #e08585;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Explicit choice, set by the toggle in Common.js. Wins over the OS in both&lt;br /&gt;
 * directions because it is stamped on &amp;lt;html&amp;gt; and matches on attribute. */&lt;br /&gt;
:root[ data-theme=&amp;quot;dark&amp;quot; ] {&lt;br /&gt;
	--lz-ground:      #14110c;&lt;br /&gt;
	--lz-surface:     #1b1711;&lt;br /&gt;
	--lz-surface-2:   #231e16;&lt;br /&gt;
	--lz-ink:         #ece5d8;&lt;br /&gt;
	--lz-ink-2:       #b3a894;&lt;br /&gt;
	--lz-ink-3:       #877c6a;&lt;br /&gt;
	--lz-line:        #322b21;&lt;br /&gt;
	--lz-line-strong: #4a4133;&lt;br /&gt;
	--lz-accent:      #dda94d;&lt;br /&gt;
	--lz-accent-hov:  #f0c273;&lt;br /&gt;
	--lz-accent-tint: #2c2417;&lt;br /&gt;
	--lz-visited:     #c3a0d4;&lt;br /&gt;
	--lz-red:         #e08585;&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 0, 0, 0, 0.4 ), 0 8px 24px -12px rgba( 0, 0, 0, 0.7 );&lt;br /&gt;
	/* Must stay identical to the prefers-color-scheme block above. */&lt;br /&gt;
	--lz-code-bg:      #0c0a06;&lt;br /&gt;
	--lz-code-bg-2:    #171208;&lt;br /&gt;
	--lz-code-ink:     #e9e1d2;&lt;br /&gt;
	--lz-code-line:    #3d3323;&lt;br /&gt;
	--lz-code-chrome:  #9c8f79;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #2e281d;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #e9e1d2;&lt;br /&gt;
	--lz-code-ok:      #b8c98a;&lt;br /&gt;
	--lz-code-ok-line: #4d5a35;&lt;br /&gt;
	--lz-code-link:       #e6bd6d;&lt;br /&gt;
	--lz-code-link-hover: #f5d79b;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #7d7263;&lt;br /&gt;
	--lz-syn-keyword: #dda94d;&lt;br /&gt;
	--lz-syn-builtin: #e6bd6d;&lt;br /&gt;
	--lz-syn-var:     #8fc0d6;&lt;br /&gt;
	--lz-syn-string:  #b8c98a;&lt;br /&gt;
	--lz-syn-op:      #d98e5a;&lt;br /&gt;
	--lz-syn-punct:   #a2947e;&lt;br /&gt;
	--lz-syn-num:     #d98e5a;&lt;br /&gt;
	--lz-syn-err:     #e08585;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 1b. TEMPORARY: force the light palette under Timeless.&lt;br /&gt;
 *&lt;br /&gt;
 * Timeless&#039;s chrome (header bar, tab strip, both sidebars, portlet headings)&lt;br /&gt;
 * carries its own hardcoded light palette. The dark tokens above only ever&lt;br /&gt;
 * covered content and the footer, so under Timeless dark mode produced 32&lt;br /&gt;
 * elements below 3:1 — measured 2026-08-09, several at 1.18:1.&lt;br /&gt;
 *&lt;br /&gt;
 * That is not opt-in: the theme toggle in Common.js attaches to a Vector-only&lt;br /&gt;
 * element and never renders under Timeless, so dark was reachable ONLY via&lt;br /&gt;
 * prefers-color-scheme — automatic, and with no way for a visitor to escape it.&lt;br /&gt;
 *&lt;br /&gt;
 * Custom properties inherit, so redeclaring them on &amp;lt;body&amp;gt; beats the :root&lt;br /&gt;
 * definitions for everything inside. Vector keeps working dark.&lt;br /&gt;
 *&lt;br /&gt;
 * DELETE THIS BLOCK once the Timeless dark chrome is written.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body.skin-timeless {&lt;br /&gt;
	--lz-ground:      #faf7f1;&lt;br /&gt;
	--lz-surface:     #ffffff;&lt;br /&gt;
	--lz-surface-2:   #f2ebdf;&lt;br /&gt;
	--lz-ink:         #201b14;&lt;br /&gt;
	--lz-ink-2:       #574d40;&lt;br /&gt;
	--lz-ink-3:       #8b7f6d;&lt;br /&gt;
	--lz-line:        #e4dbc9;&lt;br /&gt;
	--lz-line-strong: #cfc2aa;&lt;br /&gt;
	--lz-accent:      #8a5b12;&lt;br /&gt;
	--lz-accent-hov:  #6d4709;&lt;br /&gt;
	--lz-accent-tint: #f3e7ce;&lt;br /&gt;
	--lz-visited:     #6b4a7a;&lt;br /&gt;
	--lz-red:         #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-code-bg:      #f6f0e5;&lt;br /&gt;
	--lz-code-bg-2:    #ebe1cd;&lt;br /&gt;
	--lz-code-ink:     #2a2318;&lt;br /&gt;
	--lz-code-line:    #e0d5be;&lt;br /&gt;
	--lz-code-chrome:  #7d7263;&lt;br /&gt;
	--lz-code-chrome-hover-bg:  #e3d8c2;&lt;br /&gt;
	--lz-code-chrome-hover-ink: #2a2318;&lt;br /&gt;
	--lz-code-ok:      #4a6a1f;&lt;br /&gt;
	--lz-code-ok-line: #8fa565;&lt;br /&gt;
	--lz-code-link:       #8a5b12;&lt;br /&gt;
	--lz-code-link-hover: #6d4709;&lt;br /&gt;
&lt;br /&gt;
	--lz-syn-comment: #6f6552;&lt;br /&gt;
	--lz-syn-keyword: #96540a;&lt;br /&gt;
	--lz-syn-builtin: #7a520f;&lt;br /&gt;
	--lz-syn-var:     #1a5570;&lt;br /&gt;
	--lz-syn-string:  #46661d;&lt;br /&gt;
	--lz-syn-op:      #a04a18;&lt;br /&gt;
	--lz-syn-punct:   #6b6152;&lt;br /&gt;
	--lz-syn-num:     #a04a18;&lt;br /&gt;
	--lz-syn-err:     #a12f2f;&lt;br /&gt;
&lt;br /&gt;
	--lz-shadow: 0 1px 2px rgba( 32, 27, 20, 0.05 ), 0 8px 24px -12px rgba( 32, 27, 20, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 2. VECTOR LEGACY CHROME&lt;br /&gt;
 * Vector 2010 hardcodes a blue/grey palette and positions #mw-panel&lt;br /&gt;
 * absolutely at 10em. Re-ground it, then unpick the fixed widths in §3.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
body {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-sans );&lt;br /&gt;
	font-size: 0.9375rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The gradient strip behind the tab row. */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --lz-ground );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	height: 3.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Main content column — colours only, safe under any skin. */&lt;br /&gt;
#content.mw-body {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout below is Vector-legacy-specific and must stay scoped to it.&lt;br /&gt;
 * Vector legacy pins #content at margin-left:10em and lets it run to the&lt;br /&gt;
 * viewport edge, so code blocks stretch past 1400px on a wide monitor; the&lt;br /&gt;
 * max() caps the measure and centres it without encroaching on the sidebar&lt;br /&gt;
 * rail. Timeless lays out its own content container, so applying this there&lt;br /&gt;
 * nests a second bordered box inside the first and double-indents it. */&lt;br /&gt;
body.skin-vector #content.mw-body {&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.5rem;&lt;br /&gt;
	padding: 1.75em 2em 2em;&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-vector #footer {&lt;br /&gt;
	margin-left: max( 10em, calc( ( 100% - 64rem ) / 2 ) );&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	max-width: 64rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Timeless footer ---&lt;br /&gt;
 * Timeless paints its footer as white text on its own dark ground. The `body`&lt;br /&gt;
 * background token above replaces that ground with cream, which left white on&lt;br /&gt;
 * cream at 1.07:1 — invisible. Repaint the whole footer from our tokens.&lt;br /&gt;
 * Measured after the fix: body text 6.98:1, links 4.94:1 — both pass AA.&lt;br /&gt;
 * (Provisional — the proper Timeless port lands with the rest of the chrome.) */&lt;br /&gt;
body.skin-timeless #mw-footer,&lt;br /&gt;
body.skin-timeless #mw-footer-container {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-info li,&lt;br /&gt;
body.skin-timeless #mw-footer #footer-places li {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body.skin-timeless #mw-footer a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a,&lt;br /&gt;
.mw-body a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration-color: rgba( 138, 91, 18, 0.35 );&lt;br /&gt;
	text-underline-offset: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:hover,&lt;br /&gt;
.mw-body a:hover {&lt;br /&gt;
	color: var( --lz-accent-hov );&lt;br /&gt;
	text-decoration-color: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a:visited {&lt;br /&gt;
	color: var( --lz-visited );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body a.new,&lt;br /&gt;
a.new {&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.external,&lt;br /&gt;
.mw-body a.external {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* External links get a typographic marker instead of the sprite, which does&lt;br /&gt;
 * not exist in a dark palette. */&lt;br /&gt;
.mw-parser-output a.external::after {&lt;br /&gt;
	content: &amp;quot; \2197&amp;quot;;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --lz-accent );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- left sidebar --- */&lt;br /&gt;
#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
	padding-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a {&lt;br /&gt;
	display: block;&lt;br /&gt;
	padding: 0.25em 0.6em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 0.8125rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:hover {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .vector-menu-portal .vector-menu-content-list li a:visited {&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- top tabs (Page / Discussion / Read / Edit / History) --- */&lt;br /&gt;
/* Vector legacy draws these with a sprite; replace with flat shapes so they&lt;br /&gt;
 * survive a dark ground. */&lt;br /&gt;
#mw-head .vector-menu-tabs,&lt;br /&gt;
#mw-head .vector-menu-tabs ul,&lt;br /&gt;
#mw-head .vector-menu-tabs li,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.75rem;&lt;br /&gt;
	letter-spacing: 0.02em;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	padding: 0 0.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a,&lt;br /&gt;
#mw-head .vector-menu-tabs li.selected a:visited {&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal .vector-menu-content-list li a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- search --- */&lt;br /&gt;
#p-search .vector-search-box-inner input,&lt;br /&gt;
#simpleSearch #searchInput {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.35rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	padding: 0.35em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch #searchInput::placeholder {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- theme toggle, injected by Common.js --- */&lt;br /&gt;
.lz-theme-toggle {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.35em;&lt;br /&gt;
	padding: 0.15em 0.55em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.3rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-theme-toggle:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- footer --- */&lt;br /&gt;
#footer {&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	padding-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer li,&lt;br /&gt;
#footer a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#footer #footer-icons {&lt;br /&gt;
	filter: grayscale( 1 ) opacity( 0.6 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- category links --- */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.4rem;&lt;br /&gt;
	padding: 0.6em 0.9em;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.catlinks a {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 3. RESPONSIVE LAYOUT&lt;br /&gt;
 *&lt;br /&gt;
 * NOTE: these queries do nothing on phones until the skin stops emitting&lt;br /&gt;
 * &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=1000&amp;quot;&amp;gt;. Fix that with either&lt;br /&gt;
 *   $wgVectorResponsive = true;   in LocalSettings.php   (preferred), or&lt;br /&gt;
 *   the viewport patch at the top of Common.js            (no server access).&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media screen and ( max-width: 850px ) {&lt;br /&gt;
	/* SCOPED TO VECTOR LEGACY. Timeless is responsive on its own; turning its&lt;br /&gt;
	 * &amp;lt;body&amp;gt; into a flex column and reassigning order to every child would&lt;br /&gt;
	 * wreck its layout. Selectors below that exist only in Vector legacy&lt;br /&gt;
	 * (#mw-navigation, #mw-panel, #mw-head, #mw-page-base, #left-navigation,&lt;br /&gt;
	 * #right-navigation) are inert under Timeless and left unscoped; the ones&lt;br /&gt;
	 * that also match in Timeless are scoped explicitly.&lt;br /&gt;
	 *&lt;br /&gt;
	 * Vector legacy&#039;s source order is #content, then #mw-navigation, then&lt;br /&gt;
	 * #footer, and it positions the nav absolutely on top. Unpinning alone&lt;br /&gt;
	 * drops the whole navigation below the article and leaves #p-personal&lt;br /&gt;
	 * overlapping the page title. Make &amp;lt;body&amp;gt; a flex column instead and&lt;br /&gt;
	 * reorder, which is the only way to get nav above content without&lt;br /&gt;
	 * touching the skin&#039;s HTML. */&lt;br /&gt;
	body.skin-vector {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector &amp;gt; * {&lt;br /&gt;
		order: 5;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Decorative strips that only exist to sit behind the absolute header. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Unpin the header and the personal bar.&lt;br /&gt;
	 * flow-root is load-bearing: #left-navigation and #right-navigation are&lt;br /&gt;
	 * floats, and #mw-panel below becomes a flex container — i.e. a new block&lt;br /&gt;
	 * formatting context — so it shifts sideways to dodge those floats unless&lt;br /&gt;
	 * #mw-head contains them. Without this the whole sidebar renders inset&lt;br /&gt;
	 * about 235px from the left. */&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flow-root;&lt;br /&gt;
		margin: 0.5em 0 0;&lt;br /&gt;
		padding: 0 0.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.9em;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-personal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #p-search {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #simpleSearch,&lt;br /&gt;
	body.skin-vector #p-search .vector-search-box-inner input {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Sidebar collapses to one compact row of links under the header.&lt;br /&gt;
	 * At 375px tall the full desktop sidebar pushed the article entirely&lt;br /&gt;
	 * below the fold, so Tools is dropped here — it is editor plumbing&lt;br /&gt;
	 * (What links here, Upload file, Cite this page), not reader navigation,&lt;br /&gt;
	 * and it stays available on desktop. */&lt;br /&gt;
	#mw-panel.vector-legacy-sidebar {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		gap: 0 1rem;&lt;br /&gt;
		margin: 0.4em 0 0;&lt;br /&gt;
		padding: 0.5em 0.75em 0.6em;&lt;br /&gt;
		border-top: 1px solid var( --lz-line );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel #p-tb {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		flex: 0 1 auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-heading {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-content-list {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
		gap: 0 0.25rem;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-panel .vector-menu-portal .vector-menu-content-list li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The 160px Tux is a desktop luxury; keep a small mark as the home link. */&lt;br /&gt;
	#mw-panel #p-logo,&lt;br /&gt;
	#mw-panel #p-logo a {&lt;br /&gt;
		width: 2rem;&lt;br /&gt;
		height: 2rem;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		background-size: contain;&lt;br /&gt;
		background-repeat: no-repeat;&lt;br /&gt;
		background-position: left center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	body.skin-vector #content.mw-body,&lt;br /&gt;
	body.skin-vector #footer {&lt;br /&gt;
		margin-left: 0.75em;&lt;br /&gt;
		margin-right: 0.75em;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		border-radius: 0.5rem;&lt;br /&gt;
		padding: 1.25em 1.1em 1.75em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* Long unbreakable paths and commands must not widen the page. */&lt;br /&gt;
	.mw-parser-output {&lt;br /&gt;
		overflow-wrap: break-word;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and ( max-width: 550px ) {&lt;br /&gt;
	#content.mw-body {&lt;br /&gt;
		padding: 1em 0.85em 1.5em;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		font-size: 0.75rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 4. CONTENT TYPOGRAPHY&lt;br /&gt;
 * Monospace for headings — this wiki&#039;s subject matter is commands, and the&lt;br /&gt;
 * mono display voice ties the page to the code blocks it is wrapped around.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-body h1,&lt;br /&gt;
.mw-body h2,&lt;br /&gt;
.mw-body h3,&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.015em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	font-size: clamp( 1.6rem, 1.2rem + 1.6vw, 2.2rem );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector legacy puts the tagline directly under the title. */&lt;br /&gt;
#siteSub {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	font-size: 1.3rem;&lt;br /&gt;
	margin-top: 2.2em;&lt;br /&gt;
	padding-bottom: 0.3em;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h3 {&lt;br /&gt;
	font-size: 1.06rem;&lt;br /&gt;
	margin-top: 1.9em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body h4 {&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	margin-top: 1.6em;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Headings need to clear the sticky-ish header when jumped to from the TOC. */&lt;br /&gt;
.mw-parser-output :is( h2, h3, h4 )[ id ],&lt;br /&gt;
.mw-parser-output .mw-headline {&lt;br /&gt;
	scroll-margin-top: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-editsection a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hold running prose near a 68ch measure. Code, tables and card grids opt&lt;br /&gt;
 * out below so they can use the full column. */&lt;br /&gt;
.mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-parser-output &amp;gt; dl {&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
	margin: 0.85em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li {&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output li::marker {&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output hr {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	margin: 2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output blockquote {&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	padding: 0.1em 0 0.1em 1em;&lt;br /&gt;
	border-left: 3px solid var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline code — distinct from the dark block panels. */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt,&lt;br /&gt;
.mw-parser-output kbd,&lt;br /&gt;
.mw-parser-output samp {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	padding: 0.12em 0.35em;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 5. CODE BLOCKS — SyntaxHighlight (Pygments) is already installed, so the&lt;br /&gt;
 * token spans below already exist in the rendered HTML.&lt;br /&gt;
 * Panels are dark in both themes; commands are the most scannable thing on&lt;br /&gt;
 * the page and the palette does not have to be maintained twice.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .mw-highlight {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .mw-highlight pre {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	tab-size: 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Language chip + copy button are injected by Common.js. */&lt;br /&gt;
.mw-parser-output .mw-highlight .lz-chead {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	padding: 0.35em 0.4em 0.35em 0.8em;&lt;br /&gt;
	background: var( --lz-code-bg-2 );&lt;br /&gt;
	border-bottom: 1px solid var( --lz-code-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-lang {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy {&lt;br /&gt;
	padding: 0.2em 0.6em;&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.25rem;&lt;br /&gt;
	color: var( --lz-code-chrome );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy:hover {&lt;br /&gt;
	background: var( --lz-code-chrome-hover-bg );&lt;br /&gt;
	border-color: var( --lz-line-strong );&lt;br /&gt;
	color: var( --lz-code-chrome-hover-ink );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.lz-copy.lz-done {&lt;br /&gt;
	color: var( --lz-code-ok );&lt;br /&gt;
	border-color: var( --lz-code-ok-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pygments token palette — warm-dominant, one cool hue for variables.&lt;br /&gt;
 * Theme-aware: these were hardcoded for a dark ground back when the panel was&lt;br /&gt;
 * dark in both themes. Now the light theme uses a warm tint that belongs to&lt;br /&gt;
 * the page, so the inks invert with it. Measured contrast against the panel&lt;br /&gt;
 * ground is recorded in the README; re-measure after changing any of them. */&lt;br /&gt;
.mw-highlight .c,&lt;br /&gt;
.mw-highlight .c1,&lt;br /&gt;
.mw-highlight .cm,&lt;br /&gt;
.mw-highlight .cp {&lt;br /&gt;
	color: var( --lz-syn-comment );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .k,&lt;br /&gt;
.mw-highlight .kd,&lt;br /&gt;
.mw-highlight .kn,&lt;br /&gt;
.mw-highlight .kt {&lt;br /&gt;
	color: var( --lz-syn-keyword );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nb,&lt;br /&gt;
.mw-highlight .nf,&lt;br /&gt;
.mw-highlight .nc {&lt;br /&gt;
	color: var( --lz-syn-builtin );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .nv,&lt;br /&gt;
.mw-highlight .vi,&lt;br /&gt;
.mw-highlight .na {&lt;br /&gt;
	color: var( --lz-syn-var );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .s,&lt;br /&gt;
.mw-highlight .s1,&lt;br /&gt;
.mw-highlight .s2,&lt;br /&gt;
.mw-highlight .sb,&lt;br /&gt;
.mw-highlight .se {&lt;br /&gt;
	color: var( --lz-syn-string );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .o,&lt;br /&gt;
.mw-highlight .ow {&lt;br /&gt;
	color: var( --lz-syn-op );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .p {&lt;br /&gt;
	color: var( --lz-syn-punct );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .m,&lt;br /&gt;
.mw-highlight .mi,&lt;br /&gt;
.mw-highlight .mf {&lt;br /&gt;
	color: var( --lz-syn-num );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .w {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-highlight .err {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
	background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Unhighlighted &amp;lt;pre&amp;gt; (no lang= given, or a leading-space block in wikitext)&lt;br /&gt;
 * gets the same panel treatment. Deliberately a descendant selector, not a&lt;br /&gt;
 * child one — several pages nest these inside a wrapper div. The&lt;br /&gt;
 * .mw-parser-output .mw-highlight pre rule above is more specific, so&lt;br /&gt;
 * highlighted blocks keep their transparent inner background. */&lt;br /&gt;
.mw-parser-output pre {&lt;br /&gt;
	background: var( --lz-code-bg );&lt;br /&gt;
	border: 1px solid var( --lz-code-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	color: var( --lz-code-ink );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	line-height: 1.65;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Some index pages use a leading-space block as a link container, so links&lt;br /&gt;
 * have to stay legible against the dark panel in both themes. */&lt;br /&gt;
.mw-parser-output pre a,&lt;br /&gt;
.mw-parser-output pre a:visited {&lt;br /&gt;
	color: var( --lz-code-link );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a:hover {&lt;br /&gt;
	color: var( --lz-code-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output pre a.new {&lt;br /&gt;
	color: var( --lz-syn-err );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 6. TOC&lt;br /&gt;
 * The floating bordered box becomes a quiet block with mono numbering.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output #toc,&lt;br /&gt;
.mw-parser-output .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	padding: 0.9em 1.1em;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .toctitle h2,&lt;br /&gt;
.mw-parser-output #toc h2 {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.7rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	margin: 0 0 0.5em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc ul ul {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc li {&lt;br /&gt;
	margin-bottom: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc a:hover {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output #toc .tocnumber {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	margin-right: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 7. TABLES&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-collapse: collapse;&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
	margin: 1.2em 0;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	font-variant-numeric: tabular-nums;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
	padding: 0.5em 0.85em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background: var( --lz-surface-2 );&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:last-child &amp;gt; td {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Wide tables scroll inside their own container, never the page body.&lt;br /&gt;
 * Wrap the table in &amp;lt;div class=&amp;quot;lz-scroll&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; in wikitext. */&lt;br /&gt;
.lz-scroll {&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 8. CARD GRIDS — index pages&lt;br /&gt;
 *&lt;br /&gt;
 * Two levels of adoption:&lt;br /&gt;
 *   (a) Template:Card  -&amp;gt;  .lz-card with a description and a command chip.&lt;br /&gt;
 *   (b) Zero content edits: add  class=&amp;quot;lz-cards&amp;quot;  to an existing bullet list&lt;br /&gt;
 *       and each &amp;lt;li&amp;gt; becomes a title-only card.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output .lz-cardgrid,&lt;br /&gt;
.mw-parser-output ul.lz-cards {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fill, minmax( 15rem, 1fr ) );&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 1em 0 2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul.lz-cards li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.3rem;&lt;br /&gt;
	padding: 0.8rem 0.95rem;&lt;br /&gt;
	background: var( --lz-surface );&lt;br /&gt;
	border: 1px solid var( --lz-line );&lt;br /&gt;
	border-radius: 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover {&lt;br /&gt;
	border-color: var( --lz-accent );&lt;br /&gt;
	box-shadow: var( --lz-shadow );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li &amp;gt; a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	font-size: 0.93rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	color: var( --lz-ink );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card:hover a,&lt;br /&gt;
.mw-parser-output ul.lz-cards &amp;gt; li:hover &amp;gt; a {&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-desc {&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-card-cmd {&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: 0.74rem;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Template:Card always emits both slots; collapse the unused ones so the&lt;br /&gt;
 * flex gap does not leave a hole. Avoids needing ParserFunctions #if. */&lt;br /&gt;
.mw-parser-output .lz-card-desc:empty,&lt;br /&gt;
.mw-parser-output .lz-card-cmd:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Main Page hero ---&lt;br /&gt;
 * &amp;quot;Main Page&amp;quot; is a useless &amp;lt;h1&amp;gt;, so it is hidden and the hero carries its own&lt;br /&gt;
 * real &amp;lt;h1&amp;gt; instead — hiding the skin&#039;s title without replacing it would leave&lt;br /&gt;
 * the document with no top-level heading. */&lt;br /&gt;
body.page-Main_Page #firstHeading,&lt;br /&gt;
body.page-Main_Page #siteSub {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero {&lt;br /&gt;
	margin: 0 0 2.25rem;&lt;br /&gt;
	padding: 0 0 1.5rem;&lt;br /&gt;
	border-bottom: 1px solid var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero h1 {&lt;br /&gt;
	margin: 0 0 0.5rem;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-size: clamp( 1.5rem, 1.1rem + 1.7vw, 2.2rem );&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	text-wrap: balance;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-hero p {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
	font-size: 1.02rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet footnote block — the contribute line at the foot of the Main Page. */&lt;br /&gt;
.mw-parser-output .lz-footnote {&lt;br /&gt;
	max-width: 62ch;&lt;br /&gt;
	margin: 2.5rem 0 0;&lt;br /&gt;
	padding-top: 1.25rem;&lt;br /&gt;
	border-top: 1px solid var( --lz-line );&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-footnote p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section rules above each card group. */&lt;br /&gt;
.mw-parser-output h2.lz-section {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.7rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --lz-ink-3 );&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
	padding-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2.lz-section::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	flex: 1;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	background: var( --lz-line );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 9. LEGACY INLINE-STYLE BOX&lt;br /&gt;
 *&lt;br /&gt;
 * Every article&#039;s wikitext currently hardcodes:&lt;br /&gt;
 *   &amp;lt;div style=&amp;quot;margin-top:1.5em; border:3px solid #ae8c55; border-radius:.5em;&lt;br /&gt;
 *               padding:1em 1.5em; font-size:1.2em&amp;quot;&amp;gt;&lt;br /&gt;
 * Inline styles outrank the cascade, so !important is required here. This is&lt;br /&gt;
 * a bridge — the real fix is migrating those pages to Template:Box, after&lt;br /&gt;
 * which this block can be deleted.&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#ae8c55&amp;quot; ] {&lt;br /&gt;
	margin-top: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	font-size: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The Copperplate banner on Main Page. */&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;#936c29&amp;quot; ] {&lt;br /&gt;
	color: var( --lz-ink ) !important;&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
	font-size: 1.75rem !important;&lt;br /&gt;
	letter-spacing: -0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output div[ style*=&amp;quot;Copperplate&amp;quot; ] span,&lt;br /&gt;
.mw-parser-output span[ style*=&amp;quot;Copperplate&amp;quot; ] {&lt;br /&gt;
	font-family: var( --lz-mono ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Intended replacement, once Template:Box exists. */&lt;br /&gt;
.mw-parser-output .lz-note {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
	max-width: 68ch;&lt;br /&gt;
	margin: 1.3em 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
	background: var( --lz-accent-tint );&lt;br /&gt;
	border-left: 3px solid var( --lz-accent );&lt;br /&gt;
	border-radius: 0 0.35rem 0.35rem 0;&lt;br /&gt;
	font-size: 0.94rem;&lt;br /&gt;
	color: var( --lz-ink-2 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note::before {&lt;br /&gt;
	content: &amp;quot;!&amp;quot;;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	font-family: var( --lz-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --lz-accent );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn {&lt;br /&gt;
	background: rgba( 161, 47, 47, 0.08 );&lt;br /&gt;
	border-left-color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .lz-note.lz-warn::before {&lt;br /&gt;
	content: &amp;quot;\26A0&amp;quot;;&lt;br /&gt;
	color: var( --lz-red );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------&lt;br /&gt;
 * 10. PRINT &amp;amp; MOTION&lt;br /&gt;
 * ------------------------------------------------------------------------ */&lt;br /&gt;
@media print {&lt;br /&gt;
	.mw-parser-output .mw-highlight,&lt;br /&gt;
	.mw-parser-output &amp;gt; pre {&lt;br /&gt;
		background: #fff;&lt;br /&gt;
		border: 1px solid #999;&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.mw-parser-output .mw-highlight pre {&lt;br /&gt;
		color: #000;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.lz-chead,&lt;br /&gt;
	.lz-theme-toggle {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	* {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
		animation: none !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Datanasov</name></author>
	</entry>
</feed>