<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://edfieldmanual.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EDFM+Site+Maintenance</id>
	<title>Elite Dangerous Field Manual - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://edfieldmanual.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EDFM+Site+Maintenance"/>
	<link rel="alternate" type="text/html" href="https://edfieldmanual.com/wiki/Special:Contributions/EDFM_Site_Maintenance"/>
	<updated>2026-08-25T10:08:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=967</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=967"/>
		<updated>2026-08-19T22:25:04Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Give edfm-panel-review the same compact/centred width as edfm-panel-draft (rail width guarantee override)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* mw-json content model (Module:Data/* pages, e.g. Module:Data/Engineers/*)&lt;br /&gt;
   -- MediaWiki core&#039;s JSON page view (resources/src/mediawiki.content.json.less)&lt;br /&gt;
   styles itself from Codex design tokens, which this site&#039;s dark theme never&lt;br /&gt;
   touches, so these tables rendered in MediaWiki&#039;s stock light colours&lt;br /&gt;
   against every other dark surface on the site. Recoloured to match the&lt;br /&gt;
   table.wikitable treatment above instead of inventing a new look. */&lt;br /&gt;
table.mw-json {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json tr {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th,&lt;br /&gt;
table.mw-json td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-json-value,&lt;br /&gt;
.mw-json-single-value {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.mw-json-empty {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.wikiEditor-ui-left,&lt;br /&gt;
.wikiEditor-ui-right,&lt;br /&gt;
.editButtons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* VisualEditor&#039;s standalone &amp;quot;Edit source&amp;quot; mode (.ve-ui-surface-source, set&lt;br /&gt;
   by ve.ui.Surface when this.mode === &#039;source&#039;) ships its own white surface&lt;br /&gt;
   -- unlike visual mode, which reuses normal dark article styling since&lt;br /&gt;
   it&#039;s just contenteditable article HTML. Scoped to -source only so the&lt;br /&gt;
   visual WYSIWYG canvas is untouched. */&lt;br /&gt;
.ve-ui-surface-source,&lt;br /&gt;
.ve-init-mw-tempWikitextEditorWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-surface-source .ve-ce-surface,&lt;br /&gt;
.ve-ui-surface-source .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-surface-source .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-review,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Special:ChangeContentModel&#039;s &amp;quot;New content model&amp;quot; dropdown otherwise only&lt;br /&gt;
   gets the generic .oo-ui-inputWidget-input treatment (surface-1, no focus&lt;br /&gt;
   ring) -- match it to the same OOUI dropdown treatment used on&lt;br /&gt;
   Special:Preferences above (deeper background, inset hairline, cyan focus&lt;br /&gt;
   ring) instead of leaving it one shade lighter than the template. */&lt;br /&gt;
body.mediawiki.mw-special-ChangeContentModel #mw-input-model {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-ChangeContentModel #mw-input-model:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=966</id>
		<title>Template:EDFM style/styles.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=966"/>
		<updated>2026-08-19T22:25:04Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Give edfm-panel-review the same compact/centred width as edfm-panel-draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Shared styling for EDFM&#039;s editorial templates (Article status, Draft&lt;br /&gt;
   warning, Prerequisites, Related articles, etc. -- see each template&#039;s&lt;br /&gt;
   own page for which classes it uses). Freely uses the --edfm-* custom&lt;br /&gt;
   properties defined in MediaWiki:Common.css -- see the note there under&lt;br /&gt;
   &amp;quot;6. Panels&amp;quot; for why these classes live only in this file and not&lt;br /&gt;
   duplicated in Common.css too.&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: panels keep the accent-rail + corner-cut&lt;br /&gt;
   language from the first pass (both are explicitly the &amp;quot;hierarchy&lt;br /&gt;
   without a full border around everything&amp;quot; technique this redesign asks&lt;br /&gt;
   for) but get noticeably more padding/breathing room; the status module&lt;br /&gt;
   is rebuilt with a coloured header band and stacked label/value metadata&lt;br /&gt;
   instead of a plain left-rail box with inline &amp;quot;Label: value&amp;quot; text; and a&lt;br /&gt;
   new .edfm-related component replaces the old plain notice-style&lt;br /&gt;
   &amp;quot;Related articles&amp;quot; bar with a small tile row. */&lt;br /&gt;
&lt;br /&gt;
.edfm-box,&lt;br /&gt;
.edfm-panel {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 1.1em 1.3em;&lt;br /&gt;
	margin: 1.4em 0;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-info {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-warning,&lt;br /&gt;
.edfm-box.edfm-warning {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	background: #201a12;&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-draft,&lt;br /&gt;
.edfm-box.edfm-draft {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* Draft/maintenance notices are intentionally compact and centred; article&lt;br /&gt;
   prose/nav/tables may stretch, but these banners should not become a&lt;br /&gt;
   full-width strip across the whole rail. */&lt;br /&gt;
.edfm-panel-review:not( .edfm-status ),&lt;br /&gt;
.edfm-panel-draft:not( .edfm-status ),&lt;br /&gt;
.edfm-box.edfm-draft:not( .edfm-status ) {&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-reference {&lt;br /&gt;
	border-left-color: var( --edfm-blue );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box.edfm-disclaimer {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dl,&lt;br /&gt;
.edfm-panel dl {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dt,&lt;br /&gt;
.edfm-panel dt {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: left;&lt;br /&gt;
	margin-right: 0.5em;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dd,&lt;br /&gt;
.edfm-panel dd {&lt;br /&gt;
	margin-left: 11em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-inline-flag {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Article metadata / status module (Template:Article status) --------&lt;br /&gt;
   2026-08-08 second revision: a compact maintenance banner (RuneScape&lt;br /&gt;
   Wiki-style notice as the UX reference, not its markup/colours) rather&lt;br /&gt;
   than a small internal dashboard -- an icon, the bare status word (no&lt;br /&gt;
   mode/version appended to it), one standard sentence for that status,&lt;br /&gt;
   and a concise &amp;quot;Uncertain: ...&amp;quot; line when there&#039;s something worth&lt;br /&gt;
   flagging. The full editorial record (reviewer, mode, version, source&lt;br /&gt;
   quality, the complete uncertainty note, etc.) moves to the&lt;br /&gt;
   .edfm-status-expand collapsible below, not removed, just no longer&lt;br /&gt;
   competing with the article for attention. Semantic colouring always&lt;br /&gt;
   pairs with the visible text status/icon -- never colour alone, per the&lt;br /&gt;
   site&#039;s Verification Policy. Three colour tiers cover the seven actual&lt;br /&gt;
   status values (see Elite Dangerous Field Manual: Verification Policy):&lt;br /&gt;
   positive/confirmed (Verified, Partially verified) in cyan -- matching&lt;br /&gt;
   &amp;quot;cyan = verification information&amp;quot; from the colour system;&lt;br /&gt;
   attention-needed (Needs review, Upcoming) in orange -- matching&lt;br /&gt;
   &amp;quot;orange = important actions/emphasis&amp;quot;; and neutral (Draft, Historical,&lt;br /&gt;
   Legacy only) in a dim neutral tone -- Draft moved here from the&lt;br /&gt;
   attention tier, since &amp;quot;still being written&amp;quot; isn&#039;t the same kind of&lt;br /&gt;
   concern as &amp;quot;unchecked&amp;quot; or &amp;quot;not released yet&amp;quot;. The template sets the&lt;br /&gt;
   modifier class via #switch. */&lt;br /&gt;
.edfm-status {&lt;br /&gt;
	border-left-width: 4px;&lt;br /&gt;
	border-left-style: solid;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	margin: 1em auto !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention { border-left-color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }&lt;br /&gt;
&lt;br /&gt;
.edfm-status-banner {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-start;&lt;br /&gt;
	gap: 0.65em;&lt;br /&gt;
	padding: 0.55em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
/* Fixed-size icon swatch -- a single CSS-safe glyph (no icon font/library),&lt;br /&gt;
   never the same shape as a hard error: a checkmark for the positive&lt;br /&gt;
   tier, a plain &amp;quot;!&amp;quot; (not a red triangle) for attention, a quiet &amp;quot;i&amp;quot; for&lt;br /&gt;
   neutral. &amp;quot;Needs review&amp;quot; means not fully verified yet, not wrong. */&lt;br /&gt;
.edfm-status-icon {&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
	width: 1.45em;&lt;br /&gt;
	height: 1.45em;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-icon { background: var( --edfm-status-positive-bg ); color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-icon { background: var( --edfm-status-attention-bg ); color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-icon { background: var( --edfm-status-neutral-bg ); color: var( --edfm-text-dim ); }&lt;br /&gt;
.edfm-status-banner-body {&lt;br /&gt;
	flex: 1 1 auto;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-heading {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
	margin-bottom: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-heading { color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-heading { color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-heading { color: var( --edfm-text ); }&lt;br /&gt;
.edfm-status-message {&lt;br /&gt;
	margin: 0 0 0.2em;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-details {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );&lt;br /&gt;
	gap: 0.85em 1.25em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.2em;&lt;br /&gt;
	/* Grid items default to min-width: auto, which floors their shrink at&lt;br /&gt;
	   their content&#039;s min-content size -- a long slash-joined run like&lt;br /&gt;
	   &amp;quot;prerequisite/discovery/invitation/unlock&amp;quot; (no spaces, so no natural&lt;br /&gt;
	   break point in some engines) could floor a column wider than its&lt;br /&gt;
	   track and spill into the next one at in-between widths (2026-08-08:&lt;br /&gt;
	   found at ~820px on The Dweller). Letting the item shrink below that&lt;br /&gt;
	   floor, paired with the dd&#039;s own overflow-wrap below, keeps long&lt;br /&gt;
	   values inside their own column at every width instead. */&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dt {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	float: none;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.7em;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dd {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.98em;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 480px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Related content (Template:Related articles) -----------------------&lt;br /&gt;
   A small navigation strip instead of a generic bordered notice -- a&lt;br /&gt;
   quiet uppercase label above a row of individually-boxed link &amp;quot;tiles&amp;quot;,&lt;br /&gt;
   each with a trailing arrow. Deliberately styles the `&amp;lt;a&amp;gt;` elements&lt;br /&gt;
   directly (not container-level flexbox) so the freeform wikitext link&lt;br /&gt;
   list passed into the template (arbitrary separators/whitespace between&lt;br /&gt;
   links) can&#039;t break the layout -- every link gets its own tile&lt;br /&gt;
   regardless of what, if anything, sits between them in the source. */&lt;br /&gt;
.edfm-related {&lt;br /&gt;
	margin: 1.6em 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-label {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin-bottom: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fit, minmax( 12rem, 1fr ) );&lt;br /&gt;
	gap: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 0.65em 1.1em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-left-color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a::after {&lt;br /&gt;
	content: &#039;\2192&#039;;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- &amp;quot;View verification details&amp;quot; collapsible ---------------------------&lt;br /&gt;
   Wraps everything beyond the compact banner (Status, Last reviewed,&lt;br /&gt;
   Reviewer, Game mode, Version coverage, Source quality, the full Known&lt;br /&gt;
   uncertainty text, and the optional Legacy differences/Recent changes/&lt;br /&gt;
   Verification notes fields) behind a native mw-collapsible toggle&lt;br /&gt;
   instead of a new dependency -- jquery.makeCollapsible&lt;br /&gt;
   is core MediaWiki, loaded on every page by mediawiki.page.ready. For a&lt;br /&gt;
   plain &amp;lt;div&amp;gt; its default behaviour prepends a&lt;br /&gt;
   &amp;lt;button class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;mw-collapsible-text&amp;quot;&amp;gt;&lt;br /&gt;
   as the first child and wraps the remaining content in&lt;br /&gt;
   .mw-collapsible-content -- reset here to a plain full-width text row&lt;br /&gt;
   matching this module&#039;s mono/uppercase metadata language, instead of the&lt;br /&gt;
   browser&#039;s default button chrome, which would render as a jarring light&lt;br /&gt;
   box against this site&#039;s dark surfaces (same class of fix as the Save&lt;br /&gt;
   dialog/toolbar/#filetoc native-component passes elsewhere on this&lt;br /&gt;
   site). */&lt;br /&gt;
.edfm-status-expand {&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.45em 1em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:hover,&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand .mw-collapsible-content .edfm-status-details {&lt;br /&gt;
	padding-top: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Fact / Field Manual Recommendation callouts ------------------------&lt;br /&gt;
   Template:Fact and Template:Field manual recommendation -- a small&lt;br /&gt;
   labelled distinction between a verified fact and EDFM&#039;s own editorial&lt;br /&gt;
   judgement (see Elite Dangerous Field Manual:Engineering Architecture on&lt;br /&gt;
   why pinning/strategy guidance is treated as editorial, not database&lt;br /&gt;
   fact). Deliberately reuses the accent-rail + cyan/orange language&lt;br /&gt;
   already used everywhere else on this site (status positive/attention,&lt;br /&gt;
   infobox labels, related-link hover) instead of inventing a new callout&lt;br /&gt;
   style: cyan marks a verified fact (&amp;quot;cyan = verification information&amp;quot;),&lt;br /&gt;
   orange marks editorial guidance (&amp;quot;orange = important actions/&lt;br /&gt;
   emphasis&amp;quot;) -- see the colour rules this mirrors in this file&#039;s own&lt;br /&gt;
   .edfm-status-- modifiers above. */&lt;br /&gt;
.edfm-fact-recommendation {&lt;br /&gt;
	border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	padding: 0.5em 0.9em;&lt;br /&gt;
	margin: 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-label {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.72em;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-body {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 ARTICLE RAIL WIDTH GUARANTEE&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* TemplateStyles is loaded after site Common.css on article pages, so this is&lt;br /&gt;
   the late-cascade guard that makes ordinary article prose and section blocks&lt;br /&gt;
   use the full article rail. Only maintenance/status/draft notice components&lt;br /&gt;
   keep their intentionally compact centered width. */&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;
.mw-parser-output &amp;gt; div {&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-panel-review,&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output p,&lt;br /&gt;
.mw-parser-output li,&lt;br /&gt;
.mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-12 GUIDED ENCYCLOPEDIA COMPONENTS&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.edfm-guide-info,&lt;br /&gt;
.edfm-guide-requirements,&lt;br /&gt;
.edfm-guide-step,&lt;br /&gt;
.edfm-guide-callout,&lt;br /&gt;
.edfm-context-media,&lt;br /&gt;
.edfm-what-next {&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-info {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: linear-gradient( 135deg, rgba( 66, 199, 217, 0.1 ), rgba( 8, 13, 17, 0.94 ) );&lt;br /&gt;
	padding: 1.05rem 1.2rem;&lt;br /&gt;
	margin: 1.35rem 0;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-info-title,&lt;br /&gt;
.edfm-guide-requirements-title,&lt;br /&gt;
.edfm-what-next-title {&lt;br /&gt;
	margin: 0 0 0.75rem;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-info dl,&lt;br /&gt;
.edfm-guide-requirements dl {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: minmax( 10rem, 0.34fr ) 1fr;&lt;br /&gt;
	gap: 0.45rem 0.9rem;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-info dt,&lt;br /&gt;
.edfm-guide-requirements dt {&lt;br /&gt;
	float: none;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-info dd,&lt;br /&gt;
.edfm-guide-requirements dd {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-requirements {&lt;br /&gt;
	border-left: 4px solid var( --edfm-blue );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	padding: 1rem 1.2rem;&lt;br /&gt;
	margin: 1.35rem 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-requirements-title {&lt;br /&gt;
	color: var( --edfm-blue );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin: 1.55rem 0;&lt;br /&gt;
	padding: 1.05rem 1.15rem 1.05rem 1.35rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	background: rgba( 12, 18, 23, 0.92 );&lt;br /&gt;
	box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.04 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step-heading {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: baseline;&lt;br /&gt;
	gap: 0.6rem;&lt;br /&gt;
	margin: 0 0 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step-number {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 900;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step-title {&lt;br /&gt;
	font-size: 1.15rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step-body {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-step-body &amp;gt; :first-child,&lt;br /&gt;
.edfm-guide-callout-body &amp;gt; :first-child,&lt;br /&gt;
.edfm-context-media-body &amp;gt; :first-child,&lt;br /&gt;
.edfm-what-next-body &amp;gt; :first-child { margin-top: 0; }&lt;br /&gt;
.edfm-guide-step-body &amp;gt; :last-child,&lt;br /&gt;
.edfm-guide-callout-body &amp;gt; :last-child,&lt;br /&gt;
.edfm-context-media-body &amp;gt; :last-child,&lt;br /&gt;
.edfm-what-next-body &amp;gt; :last-child { margin-bottom: 0; }&lt;br /&gt;
.edfm-guide-callout {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	margin: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-callout--warning {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-callout--important {&lt;br /&gt;
	border-left-color: var( --edfm-blue );&lt;br /&gt;
	background: rgba( 89, 147, 255, 0.1 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-callout--tip {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-callout--field-note {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
	background: rgba( 108, 122, 130, 0.1 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-guide-callout-label {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-context-media {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: minmax( 0, 1fr ) minmax( 16rem, 0.42fr );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	align-items: start;&lt;br /&gt;
	margin: 1.25rem 0;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-context-media--left {&lt;br /&gt;
	grid-template-columns: minmax( 16rem, 0.42fr ) minmax( 0, 1fr );&lt;br /&gt;
}&lt;br /&gt;
.edfm-context-media--left .edfm-context-media-figure { order: -1; }&lt;br /&gt;
.edfm-context-media-figure {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-context-media-figure img,&lt;br /&gt;
.edfm-context-media-figure .mw-file-element {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: #05080b;&lt;br /&gt;
}&lt;br /&gt;
.edfm-context-media-caption {&lt;br /&gt;
	margin-top: 0.45rem;&lt;br /&gt;
	font-size: 0.86rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-what-next {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	padding: 1rem 1.15rem;&lt;br /&gt;
	margin: 1.6rem 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-what-next-title { color: var( --edfm-orange ); }&lt;br /&gt;
.edfm-what-next-body ul,&lt;br /&gt;
.edfm-what-next-body ol { margin-bottom: 0; }&lt;br /&gt;
@media ( max-width: 720px ) {&lt;br /&gt;
	.edfm-guide-info dl,&lt;br /&gt;
	.edfm-guide-requirements dl,&lt;br /&gt;
	.edfm-context-media,&lt;br /&gt;
	.edfm-context-media--left {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-guide-info dt,&lt;br /&gt;
	.edfm-guide-requirements dt { margin-top: 0.55rem; }&lt;br /&gt;
	.edfm-guide-info dt:first-child,&lt;br /&gt;
	.edfm-guide-requirements dt:first-child { margin-top: 0; }&lt;br /&gt;
	.edfm-guide-info dd,&lt;br /&gt;
	.edfm-guide-requirements dd { margin-top: 0.1rem; }&lt;br /&gt;
	.edfm-context-media-figure { margin-top: 0.8rem; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-guide-callout--warning .edfm-guide-callout-label { color: var( --edfm-orange ); }&lt;br /&gt;
.edfm-guide-callout--important .edfm-guide-callout-label { color: var( --edfm-blue ); }&lt;br /&gt;
.edfm-guide-callout--tip .edfm-guide-callout-label { color: var( --edfm-cyan ); }&lt;br /&gt;
.edfm-guide-callout--field-note .edfm-guide-callout-label { color: var( --edfm-text-dim ); }&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=960</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=960"/>
		<updated>2026-08-19T21:23:03Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Match Special:ChangeContentModel&amp;#039;s New content model dropdown to the Preferences dropdown template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* mw-json content model (Module:Data/* pages, e.g. Module:Data/Engineers/*)&lt;br /&gt;
   -- MediaWiki core&#039;s JSON page view (resources/src/mediawiki.content.json.less)&lt;br /&gt;
   styles itself from Codex design tokens, which this site&#039;s dark theme never&lt;br /&gt;
   touches, so these tables rendered in MediaWiki&#039;s stock light colours&lt;br /&gt;
   against every other dark surface on the site. Recoloured to match the&lt;br /&gt;
   table.wikitable treatment above instead of inventing a new look. */&lt;br /&gt;
table.mw-json {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json tr {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th,&lt;br /&gt;
table.mw-json td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-json-value,&lt;br /&gt;
.mw-json-single-value {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.mw-json-empty {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.wikiEditor-ui-left,&lt;br /&gt;
.wikiEditor-ui-right,&lt;br /&gt;
.editButtons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* VisualEditor&#039;s standalone &amp;quot;Edit source&amp;quot; mode (.ve-ui-surface-source, set&lt;br /&gt;
   by ve.ui.Surface when this.mode === &#039;source&#039;) ships its own white surface&lt;br /&gt;
   -- unlike visual mode, which reuses normal dark article styling since&lt;br /&gt;
   it&#039;s just contenteditable article HTML. Scoped to -source only so the&lt;br /&gt;
   visual WYSIWYG canvas is untouched. */&lt;br /&gt;
.ve-ui-surface-source,&lt;br /&gt;
.ve-init-mw-tempWikitextEditorWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-surface-source .ve-ce-surface,&lt;br /&gt;
.ve-ui-surface-source .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-surface-source .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Special:ChangeContentModel&#039;s &amp;quot;New content model&amp;quot; dropdown otherwise only&lt;br /&gt;
   gets the generic .oo-ui-inputWidget-input treatment (surface-1, no focus&lt;br /&gt;
   ring) -- match it to the same OOUI dropdown treatment used on&lt;br /&gt;
   Special:Preferences above (deeper background, inset hairline, cyan focus&lt;br /&gt;
   ring) instead of leaving it one shade lighter than the template. */&lt;br /&gt;
body.mediawiki.mw-special-ChangeContentModel #mw-input-model {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-ChangeContentModel #mw-input-model:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=956</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=956"/>
		<updated>2026-08-19T21:03:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Fix infobox stacking bug: floated .edfm-infobox was losing pointer events to overlapping in-flow list items in the final row&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* mw-json content model (Module:Data/* pages, e.g. Module:Data/Engineers/*)&lt;br /&gt;
   -- MediaWiki core&#039;s JSON page view (resources/src/mediawiki.content.json.less)&lt;br /&gt;
   styles itself from Codex design tokens, which this site&#039;s dark theme never&lt;br /&gt;
   touches, so these tables rendered in MediaWiki&#039;s stock light colours&lt;br /&gt;
   against every other dark surface on the site. Recoloured to match the&lt;br /&gt;
   table.wikitable treatment above instead of inventing a new look. */&lt;br /&gt;
table.mw-json {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json tr {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th,&lt;br /&gt;
table.mw-json td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-json-value,&lt;br /&gt;
.mw-json-single-value {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.mw-json-empty {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.wikiEditor-ui-left,&lt;br /&gt;
.wikiEditor-ui-right,&lt;br /&gt;
.editButtons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* VisualEditor&#039;s standalone &amp;quot;Edit source&amp;quot; mode (.ve-ui-surface-source, set&lt;br /&gt;
   by ve.ui.Surface when this.mode === &#039;source&#039;) ships its own white surface&lt;br /&gt;
   -- unlike visual mode, which reuses normal dark article styling since&lt;br /&gt;
   it&#039;s just contenteditable article HTML. Scoped to -source only so the&lt;br /&gt;
   visual WYSIWYG canvas is untouched. */&lt;br /&gt;
.ve-ui-surface-source,&lt;br /&gt;
.ve-init-mw-tempWikitextEditorWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-surface-source .ve-ce-surface,&lt;br /&gt;
.ve-ui-surface-source .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-surface-source .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=952</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=952"/>
		<updated>2026-08-19T19:58:33Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Restore edit-source dark styling in Common.css (moved off vendor-file hacks) and cover the previously-unstyled VisualEditor Edit source surface&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* mw-json content model (Module:Data/* pages, e.g. Module:Data/Engineers/*)&lt;br /&gt;
   -- MediaWiki core&#039;s JSON page view (resources/src/mediawiki.content.json.less)&lt;br /&gt;
   styles itself from Codex design tokens, which this site&#039;s dark theme never&lt;br /&gt;
   touches, so these tables rendered in MediaWiki&#039;s stock light colours&lt;br /&gt;
   against every other dark surface on the site. Recoloured to match the&lt;br /&gt;
   table.wikitable treatment above instead of inventing a new look. */&lt;br /&gt;
table.mw-json {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json tr {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th,&lt;br /&gt;
table.mw-json td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-json-value,&lt;br /&gt;
.mw-json-single-value {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.mw-json-empty {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.wikiEditor-ui-left,&lt;br /&gt;
.wikiEditor-ui-right,&lt;br /&gt;
.editButtons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* VisualEditor&#039;s standalone &amp;quot;Edit source&amp;quot; mode (.ve-ui-surface-source, set&lt;br /&gt;
   by ve.ui.Surface when this.mode === &#039;source&#039;) ships its own white surface&lt;br /&gt;
   -- unlike visual mode, which reuses normal dark article styling since&lt;br /&gt;
   it&#039;s just contenteditable article HTML. Scoped to -source only so the&lt;br /&gt;
   visual WYSIWYG canvas is untouched. */&lt;br /&gt;
.ve-ui-surface-source,&lt;br /&gt;
.ve-init-mw-tempWikitextEditorWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-surface-source .ve-ce-surface,&lt;br /&gt;
.ve-ui-surface-source .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-surface-source .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=951</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=951"/>
		<updated>2026-08-19T19:00:03Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Style mw-json tables (Module:Data/* pages) to match the dark theme instead of MediaWiki core defaults&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* mw-json content model (Module:Data/* pages, e.g. Module:Data/Engineers/*)&lt;br /&gt;
   -- MediaWiki core&#039;s JSON page view (resources/src/mediawiki.content.json.less)&lt;br /&gt;
   styles itself from Codex design tokens, which this site&#039;s dark theme never&lt;br /&gt;
   touches, so these tables rendered in MediaWiki&#039;s stock light colours&lt;br /&gt;
   against every other dark surface on the site. Recoloured to match the&lt;br /&gt;
   table.wikitable treatment above instead of inventing a new look. */&lt;br /&gt;
table.mw-json {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json tr {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th,&lt;br /&gt;
table.mw-json td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.mw-json th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-json-value,&lt;br /&gt;
.mw-json-single-value {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.mw-json-empty {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=942</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=942"/>
		<updated>2026-08-18T22:13:29Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Correct the notification-icon fix: the previous rule targeted Vector&amp;#039;s .vector-icon system, which Echo&amp;#039;s icons in legacy Vector never use. Verified via a server-side render of the real logged-in markup that the icon is a background-image on the &amp;lt;a&amp;gt; via OOUI&amp;#039;s .oo-ui-icon-bell/-tray classes; reuse the site&amp;#039;s existing OOUI dark-icon invert fix instead.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar.&lt;br /&gt;
   Confirmed by rendering the actual logged-in markup server-side: in&lt;br /&gt;
   legacy Vector these links get merged straight into the plain personal&lt;br /&gt;
   tools menu (SkinVectorLegacy::runOnSkinTemplateNavigationHooks) rather&lt;br /&gt;
   than going through Vector&#039;s own `.vector-icon` icon system (that only&lt;br /&gt;
   wraps items in the views/associated-pages menus). The icon is instead a&lt;br /&gt;
   `background-image` on the &amp;lt;a&amp;gt; itself, from OOUI&#039;s generated&lt;br /&gt;
   `.oo-ui-icon-bell` / `-tray` / `-bellOutline` classes -- a flat black SVG&lt;br /&gt;
   baked straight into the image URL, so it&#039;s not recolourable via&lt;br /&gt;
   `background-color` the way the search icon was; this is exactly the&lt;br /&gt;
   &amp;quot;dark OOUI icon invisible on our dark theme&amp;quot; problem the invert fix&lt;br /&gt;
   below already solves elsewhere, so reuse that same technique here&lt;br /&gt;
   instead of a different one. The unread-count badge itself already&lt;br /&gt;
   colours correctly on its own (Echo maps it to&lt;br /&gt;
   `@background-color-destructive` / `-progressive`, both redefined to&lt;br /&gt;
   EDFM&#039;s palette) and, being a mostly-saturated colour rather than&lt;br /&gt;
   black/white/grey, survives this filter close to unchanged. */&lt;br /&gt;
#pt-notifications-alert .oo-ui-icon-bell,&lt;br /&gt;
#pt-notifications-notice .oo-ui-icon-tray,&lt;br /&gt;
#pt-notifications .oo-ui-icon-bellOutline {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=941</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=941"/>
		<updated>2026-08-18T21:39:07Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Colour Echo&amp;#039;s notification bell/tray icons in the personal toolbar to match the site&amp;#039;s orange interactive-control convention; they render via Vector&amp;#039;s mask-image icon system (background-color: @color-base by default) with no dark-theme override, so they were invisible against the header.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Echo&#039;s alert/notification icons (bell/tray) in the personal toolbar are&lt;br /&gt;
   rendered as `.vector-icon` mask-image spans coloured via `background-color`&lt;br /&gt;
   (Vector&#039;s Icon.less / Codex&#039;s css-icon mixin), defaulting to `@color-base`&lt;br /&gt;
   -- a dark, near-black fill with no override here, so it disappeared&lt;br /&gt;
   against this toolbar&#039;s dark background. Vector already has a &amp;quot;progressive&amp;quot;&lt;br /&gt;
   variant of this exact mechanism for a couple of its own icons&lt;br /&gt;
   (`.vector-icon[class*=&#039;-progressive&#039;]`, coloured via `@color-progressive`,&lt;br /&gt;
   which this stylesheet maps to orange); match that same treatment here&lt;br /&gt;
   rather than the unrelated OOUI-icon invert fix below, since these are&lt;br /&gt;
   interactive header controls like the search button, not general body&lt;br /&gt;
   icons. The unread-count badge itself already colours correctly on its own&lt;br /&gt;
   (Echo maps it to `@background-color-destructive` / `-progressive`, both&lt;br /&gt;
   redefined to EDFM&#039;s palette), so only the icon glyph needs this. */&lt;br /&gt;
#pt-notifications-alert .vector-icon,&lt;br /&gt;
#pt-notifications-notice .vector-icon,&lt;br /&gt;
#pt-notifications .vector-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=936</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=936"/>
		<updated>2026-08-18T20:58:16Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Relabel the header UTC clock as &amp;quot;Server&amp;quot; (clearer for readers than a raw timezone abbreviation; still server-synced time, unchanged otherwise).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* EDFM: small, purely presentational enhancements. None are required&lt;br /&gt;
 * for the site to function -- all degrade gracefully with JS off -- and&lt;br /&gt;
 * none are achievable in pure CSS, which is why they exist here instead&lt;br /&gt;
 * of in MediaWiki:Common.css. Kept deliberately tiny: no framework, no&lt;br /&gt;
 * build step, vanilla DOM APIs only.&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
	/* 1. Eyebrow placement (see Template:Article header, .edfm-eyebrow in&lt;br /&gt;
	 * Common.css). MediaWiki always renders the real #firstHeading (the&lt;br /&gt;
	 * page&#039;s H1) before the article body in the DOM -- there is no&lt;br /&gt;
	 * template or CSS hook that lets wikitext content appear earlier than&lt;br /&gt;
	 * that. The eyebrow is authored as ordinary wikitext at the top of the&lt;br /&gt;
	 * article; this just moves that already-rendered, already-accessible&lt;br /&gt;
	 * element to sit visually above the title instead of below it. If this&lt;br /&gt;
	 * script doesn&#039;t run for any reason, the eyebrow still renders --&lt;br /&gt;
	 * directly under the title rather than above it -- so nothing breaks,&lt;br /&gt;
	 * this only affects placement.&lt;br /&gt;
	 */&lt;br /&gt;
	function placeEyebrow() {&lt;br /&gt;
		var eyebrow = document.querySelector( &#039;.edfm-eyebrow&#039; );&lt;br /&gt;
		var heading = document.getElementById( &#039;firstHeading&#039; );&lt;br /&gt;
		if ( eyebrow &amp;amp;&amp;amp; heading &amp;amp;&amp;amp; heading.parentNode ) {&lt;br /&gt;
			heading.parentNode.insertBefore( eyebrow, heading );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* 2. &amp;quot;You are here&amp;quot; sidebar highlighting. MediaWiki&#039;s default sidebar&lt;br /&gt;
	 * has no built-in current-page indication -- this compares each&lt;br /&gt;
	 * sidebar link&#039;s URL to the current page and flags the match so&lt;br /&gt;
	 * Common.css can style it (see .edfm-nav-current). Wrapped in try/catch&lt;br /&gt;
	 * per-link only so one malformed href can&#039;t stop the rest from being&lt;br /&gt;
	 * checked.&lt;br /&gt;
	 */&lt;br /&gt;
	function highlightCurrentNavLink() {&lt;br /&gt;
		var links = document.querySelectorAll( &#039;#mw-panel .vector-menu-content-list a[href]&#039; );&lt;br /&gt;
		/* Compare pathname *and* query string, not just pathname. Most&lt;br /&gt;
		 * content pages use clean /wiki/Page_Name URLs where pathname alone&lt;br /&gt;
		 * is unambiguous, but action views (edit, history, diff, page&lt;br /&gt;
		 * info, ...) all route through the same /index.php pathname and&lt;br /&gt;
		 * are only distinguished by their query string (?action=edit vs&lt;br /&gt;
		 * ?action=info etc.) -- comparing pathname only would wrongly&lt;br /&gt;
		 * highlight every sidebar link that happens to also point at&lt;br /&gt;
		 * /index.php, e.g. &amp;quot;Page information&amp;quot; while actually viewing the&lt;br /&gt;
		 * edit-source screen.&lt;br /&gt;
		 */&lt;br /&gt;
		var here = window.location.pathname + window.location.search;&lt;br /&gt;
		for ( var i = 0; i &amp;lt; links.length; i++ ) {&lt;br /&gt;
			var a = links[ i ];&lt;br /&gt;
			try {&lt;br /&gt;
				var target = new URL( a.href, window.location.href );&lt;br /&gt;
				if ( target.pathname + target.search === here ) {&lt;br /&gt;
					a.parentNode.classList.add( &#039;edfm-nav-current&#039; );&lt;br /&gt;
				}&lt;br /&gt;
			} catch ( e ) {&lt;br /&gt;
				/* malformed href on this one link -- skip it, not fatal */&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* 3. Jump-nav label shortening (2026-08-08, Engineer article layout&lt;br /&gt;
	 * pass). MediaWiki&#039;s native table of contents always mirrors a&lt;br /&gt;
	 * section&#039;s real ==Heading== text exactly -- there&#039;s no template or&lt;br /&gt;
	 * markup mechanism for a heading to carry a separate &amp;quot;short nav&lt;br /&gt;
	 * label&amp;quot;. Article headings stay full and descriptive (e.g. &amp;quot;How to&lt;br /&gt;
	 * Receive an Invitation&amp;quot;) since that&#039;s what reads well in the article&lt;br /&gt;
	 * body; this only shortens the *jump-nav tile* text afterwards, so the&lt;br /&gt;
	 * dense tile grid doesn&#039;t force long headings to wrap across two&lt;br /&gt;
	 * lines. Keyed by exact heading text, shared across all Engineer&lt;br /&gt;
	 * articles (same section names throughout, see Template:New engineer&lt;br /&gt;
	 * page) rather than being specific to any one page. Anything not in&lt;br /&gt;
	 * this list is left exactly as MediaWiki rendered it -- this only ever&lt;br /&gt;
	 * shortens, never invents nav text for a heading it doesn&#039;t recognise.&lt;br /&gt;
	 */&lt;br /&gt;
	var TOC_SHORT_LABELS = {&lt;br /&gt;
		&#039;How to Discover This Engineer&#039;: &#039;Discovery&#039;,&lt;br /&gt;
		&#039;How to Receive an Invitation&#039;: &#039;Invitation&#039;,&lt;br /&gt;
		&#039;How to Unlock This Engineer&#039;: &#039;Unlock&#039;,&lt;br /&gt;
		&#039;Engineer Unlock Chain&#039;: &#039;Unlock Chain&#039;,&lt;br /&gt;
		&#039;Available Engineering&#039;: &#039;Engineering&#039;,&lt;br /&gt;
		&#039;Experimental Effects&#039;: &#039;Experimentals&#039;,&lt;br /&gt;
		&#039;Increasing Engineer Reputation&#039;: &#039;Reputation&#039;,&lt;br /&gt;
		&#039;Recommended Blueprint to Pin&#039;: &#039;Blueprint Pinning&#039;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	function shortenTocLabels() {&lt;br /&gt;
		var toctexts = document.querySelectorAll( &#039;#toc .toctext, .toc .toctext&#039; );&lt;br /&gt;
		for ( var i = 0; i &amp;lt; toctexts.length; i++ ) {&lt;br /&gt;
			var el = toctexts[ i ];&lt;br /&gt;
			var full = el.textContent.trim();&lt;br /&gt;
			if ( Object.prototype.hasOwnProperty.call( TOC_SHORT_LABELS, full ) ) {&lt;br /&gt;
				el.textContent = TOC_SHORT_LABELS[ full ];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* 4. Desktop top-bar clocks. RuneScape.wiki has a compact utility strip&lt;br /&gt;
	 * in the personal-toolbar tier; EDFM only needs time readouts there.&lt;br /&gt;
	 * UTC is synced once from MediaWiki&#039;s API curtimestamp (server-side UTC)&lt;br /&gt;
	 * and then advanced locally each second; local time uses the visitor&#039;s&lt;br /&gt;
	 * browser timezone. If the API request fails, the UTC clock falls back to&lt;br /&gt;
	 * the browser clock in UTC rather than leaving a blank control.&lt;br /&gt;
	 */&lt;br /&gt;
	function initTopBarClocks() {&lt;br /&gt;
		var personal = document.getElementById( &#039;p-personal&#039; );&lt;br /&gt;
		if ( !personal || document.querySelector( &#039;.edfm-topbar-clocks&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var clocks = document.createElement( &#039;div&#039; );&lt;br /&gt;
		clocks.className = &#039;edfm-topbar-clocks&#039;;&lt;br /&gt;
		clocks.setAttribute( &#039;aria-label&#039;, &#039;Current time&#039; );&lt;br /&gt;
&lt;br /&gt;
		var utcClock = document.createElement( &#039;span&#039; );&lt;br /&gt;
		utcClock.className = &#039;edfm-topbar-clock edfm-topbar-clock-utc&#039;;&lt;br /&gt;
		utcClock.innerHTML = &#039;&amp;lt;span class=&amp;quot;edfm-topbar-clock-label&amp;quot;&amp;gt;Server&amp;lt;/span&amp;gt; &amp;lt;time&amp;gt;--:--&amp;lt;/time&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		var localClock = document.createElement( &#039;span&#039; );&lt;br /&gt;
		localClock.className = &#039;edfm-topbar-clock edfm-topbar-clock-local&#039;;&lt;br /&gt;
		localClock.innerHTML = &#039;&amp;lt;span class=&amp;quot;edfm-topbar-clock-label&amp;quot;&amp;gt;Local&amp;lt;/span&amp;gt; &amp;lt;time&amp;gt;--:--&amp;lt;/time&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		clocks.appendChild( utcClock );&lt;br /&gt;
		clocks.appendChild( localClock );&lt;br /&gt;
		personal.insertBefore( clocks, personal.firstChild );&lt;br /&gt;
&lt;br /&gt;
		var utcOffset = 0;&lt;br /&gt;
		var utcTime = utcClock.querySelector( &#039;time&#039; );&lt;br /&gt;
		var localTime = localClock.querySelector( &#039;time&#039; );&lt;br /&gt;
&lt;br /&gt;
		function twoDigits( number ) {&lt;br /&gt;
			return String( number ).padStart( 2, &#039;0&#039; );&lt;br /&gt;
		}&lt;br /&gt;
		function render() {&lt;br /&gt;
			var localNow = new Date();&lt;br /&gt;
			var utcNow = new Date( Date.now() + utcOffset );&lt;br /&gt;
			var utcText = twoDigits( utcNow.getUTCHours() ) + &#039;:&#039; + twoDigits( utcNow.getUTCMinutes() );&lt;br /&gt;
			var localText = twoDigits( localNow.getHours() ) + &#039;:&#039; + twoDigits( localNow.getMinutes() );&lt;br /&gt;
&lt;br /&gt;
			utcTime.textContent = utcText;&lt;br /&gt;
			utcTime.setAttribute( &#039;datetime&#039;, utcNow.toISOString() );&lt;br /&gt;
			utcTime.setAttribute( &#039;title&#039;, &#039;Server time (UTC): &#039; + utcNow.toUTCString() );&lt;br /&gt;
&lt;br /&gt;
			localTime.textContent = localText;&lt;br /&gt;
			localTime.setAttribute( &#039;datetime&#039;, localNow.toISOString() );&lt;br /&gt;
			localTime.setAttribute( &#039;title&#039;, &#039;Your local time: &#039; + localNow.toLocaleString() );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		function syncServerTime() {&lt;br /&gt;
			if ( !window.fetch || !window.mw || !mw.util ) {&lt;br /&gt;
				render();&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var apiUrl = mw.util.wikiScript( &#039;api&#039; ) + &#039;?action=query&amp;amp;format=json&amp;amp;curtimestamp=1&#039;;&lt;br /&gt;
			fetch( apiUrl, { credentials: &#039;same-origin&#039; } )&lt;br /&gt;
				.then( function ( response ) { return response.json(); } )&lt;br /&gt;
				.then( function ( data ) {&lt;br /&gt;
					if ( data &amp;amp;&amp;amp; data.curtimestamp ) {&lt;br /&gt;
						utcOffset = Date.parse( data.curtimestamp ) - Date.now();&lt;br /&gt;
					}&lt;br /&gt;
					render();&lt;br /&gt;
				} )&lt;br /&gt;
				.catch( render );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		syncServerTime();&lt;br /&gt;
		window.setInterval( render, 1000 );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* 6. Frontier news links. The Frontier feed uses normal MediaWiki external&lt;br /&gt;
	 * link wikitext so it remains valid when regenerated by the updater. Add&lt;br /&gt;
	 * target/rel in JS because MediaWiki wikitext does not support per-link&lt;br /&gt;
	 * target attributes without unsafe raw HTML.&lt;br /&gt;
	 */&lt;br /&gt;
	function initFrontierNewsExternalLinks() {&lt;br /&gt;
		var links = document.querySelectorAll( &#039;.edfm-frontier-news .edfm-news-title a[href]&#039; );&lt;br /&gt;
		for ( var i = 0; i &amp;lt; links.length; i++ ) {&lt;br /&gt;
			var link = links[ i ];&lt;br /&gt;
			link.target = &#039;_blank&#039;;&lt;br /&gt;
			link.rel = &#039;nofollow noopener noreferrer&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* 7. Mobile app shell. Vector legacy was built for desktop; this adds a&lt;br /&gt;
	 * small progressive-enhancement shell on phones: hamburger drawer using&lt;br /&gt;
	 * the real #mw-panel links, a search button that reveals/focuses the&lt;br /&gt;
	 * existing MediaWiki search input, ESC/scrim close behavior, and ARIA&lt;br /&gt;
	 * state updates. With JS off the CSS fallback remains the existing stacked&lt;br /&gt;
	 * Vector mobile layout.&lt;br /&gt;
	 */&lt;br /&gt;
	function initMobileChrome() {&lt;br /&gt;
		var navigation = document.getElementById( &#039;mw-navigation&#039; );&lt;br /&gt;
		var panel = document.getElementById( &#039;mw-panel&#039; );&lt;br /&gt;
		var searchInput = document.getElementById( &#039;searchInput&#039; );&lt;br /&gt;
		if ( !navigation || !panel || document.querySelector( &#039;.edfm-mobile-appbar&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var appbar = document.createElement( &#039;div&#039; );&lt;br /&gt;
		appbar.className = &#039;edfm-mobile-appbar&#039;;&lt;br /&gt;
&lt;br /&gt;
		var menuButton = document.createElement( &#039;button&#039; );&lt;br /&gt;
		menuButton.type = &#039;button&#039;;&lt;br /&gt;
		menuButton.className = &#039;edfm-mobile-menu-button&#039;;&lt;br /&gt;
		menuButton.setAttribute( &#039;aria-label&#039;, &#039;Open navigation menu&#039; );&lt;br /&gt;
		menuButton.setAttribute( &#039;aria-controls&#039;, &#039;mw-panel&#039; );&lt;br /&gt;
		menuButton.setAttribute( &#039;aria-expanded&#039;, &#039;false&#039; );&lt;br /&gt;
&lt;br /&gt;
		var brand = document.createElement( &#039;a&#039; );&lt;br /&gt;
		brand.className = &#039;edfm-mobile-brand&#039;;&lt;br /&gt;
		brand.href = mw &amp;amp;&amp;amp; mw.util ? mw.util.getUrl( &#039;Main Page&#039; ) : &#039;/wiki/Main_Page&#039;;&lt;br /&gt;
		brand.textContent = &#039;Field Manual&#039;;&lt;br /&gt;
&lt;br /&gt;
		var searchButton = document.createElement( &#039;button&#039; );&lt;br /&gt;
		searchButton.type = &#039;button&#039;;&lt;br /&gt;
		searchButton.className = &#039;edfm-mobile-search-button&#039;;&lt;br /&gt;
		searchButton.setAttribute( &#039;aria-label&#039;, &#039;Search the Field Manual&#039; );&lt;br /&gt;
		searchButton.setAttribute( &#039;aria-expanded&#039;, &#039;false&#039; );&lt;br /&gt;
&lt;br /&gt;
		appbar.appendChild( menuButton );&lt;br /&gt;
		appbar.appendChild( brand );&lt;br /&gt;
		appbar.appendChild( searchButton );&lt;br /&gt;
		navigation.insertBefore( appbar, navigation.firstChild );&lt;br /&gt;
&lt;br /&gt;
		var closeButton = document.createElement( &#039;button&#039; );&lt;br /&gt;
		closeButton.type = &#039;button&#039;;&lt;br /&gt;
		closeButton.className = &#039;edfm-mobile-close-button&#039;;&lt;br /&gt;
		closeButton.setAttribute( &#039;aria-label&#039;, &#039;Close navigation menu&#039; );&lt;br /&gt;
		panel.insertBefore( closeButton, panel.firstChild );&lt;br /&gt;
&lt;br /&gt;
		var scrim = document.createElement( &#039;button&#039; );&lt;br /&gt;
		scrim.type = &#039;button&#039;;&lt;br /&gt;
		scrim.className = &#039;edfm-mobile-scrim&#039;;&lt;br /&gt;
		scrim.setAttribute( &#039;aria-label&#039;, &#039;Close navigation menu&#039; );&lt;br /&gt;
		document.body.appendChild( scrim );&lt;br /&gt;
&lt;br /&gt;
		function setMenuOpen( open ) {&lt;br /&gt;
			document.body.classList.toggle( &#039;edfm-mobile-menu-open&#039;, open );&lt;br /&gt;
			menuButton.setAttribute( &#039;aria-expanded&#039;, open ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
		}&lt;br /&gt;
		function setSearchOpen( open ) {&lt;br /&gt;
			document.body.classList.toggle( &#039;edfm-mobile-search-open&#039;, open );&lt;br /&gt;
			searchButton.setAttribute( &#039;aria-expanded&#039;, open ? &#039;true&#039; : &#039;false&#039; );&lt;br /&gt;
			if ( open &amp;amp;&amp;amp; searchInput ) {&lt;br /&gt;
				window.setTimeout( function () { searchInput.focus(); }, 0 );&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		menuButton.addEventListener( &#039;click&#039;, function () { setMenuOpen( true ); } );&lt;br /&gt;
		closeButton.addEventListener( &#039;click&#039;, function () { setMenuOpen( false ); } );&lt;br /&gt;
		scrim.addEventListener( &#039;click&#039;, function () { setMenuOpen( false ); } );&lt;br /&gt;
		searchButton.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
			setSearchOpen( !document.body.classList.contains( &#039;edfm-mobile-search-open&#039; ) );&lt;br /&gt;
		} );&lt;br /&gt;
		panel.addEventListener( &#039;click&#039;, function ( event ) {&lt;br /&gt;
			if ( event.target &amp;amp;&amp;amp; event.target.closest &amp;amp;&amp;amp; event.target.closest( &#039;a&#039; ) ) {&lt;br /&gt;
				setMenuOpen( false );&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		document.addEventListener( &#039;keydown&#039;, function ( event ) {&lt;br /&gt;
			if ( event.key === &#039;Escape&#039; ) {&lt;br /&gt;
				setMenuOpen( false );&lt;br /&gt;
				setSearchOpen( false );&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
		document.addEventListener( &#039;DOMContentLoaded&#039;, function () {&lt;br /&gt;
			placeEyebrow();&lt;br /&gt;
			highlightCurrentNavLink();&lt;br /&gt;
			shortenTocLabels();&lt;br /&gt;
			initTopBarClocks();&lt;br /&gt;
			initFrontierNewsExternalLinks();&lt;br /&gt;
			initMobileChrome();&lt;br /&gt;
		} );&lt;br /&gt;
	} else {&lt;br /&gt;
		placeEyebrow();&lt;br /&gt;
		highlightCurrentNavLink();&lt;br /&gt;
		shortenTocLabels();&lt;br /&gt;
		initTopBarClocks();&lt;br /&gt;
		initFrontierNewsExternalLinks();&lt;br /&gt;
		initMobileChrome();&lt;br /&gt;
	}&lt;br /&gt;
}() );&lt;br /&gt;
&lt;br /&gt;
/* EDFM one-time cookie preference model migration: previous versions stored&lt;br /&gt;
 * the only optional purpose as { analytics: true/false }. Rewrite that into&lt;br /&gt;
 * the category-based model before the preference UI/GA loader runs.&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	var key = &#039;edfmCookieConsent.v1&#039;;&lt;br /&gt;
	try {&lt;br /&gt;
		var raw = JSON.parse(localStorage.getItem(key) || &#039;null&#039;);&lt;br /&gt;
		if (raw &amp;amp;&amp;amp; !raw.categories &amp;amp;&amp;amp; typeof raw.analytics === &#039;boolean&#039;) {&lt;br /&gt;
			localStorage.setItem(key, JSON.stringify({&lt;br /&gt;
				necessary: true,&lt;br /&gt;
				categories: { analytics: raw.analytics === true },&lt;br /&gt;
				analytics: raw.analytics === true,&lt;br /&gt;
				updated: new Date().toISOString(),&lt;br /&gt;
				model: &#039;purposes-v2&#039;,&lt;br /&gt;
				migratedFrom: &#039;legacy-analytics-boolean&#039;&lt;br /&gt;
			}));&lt;br /&gt;
		}&lt;br /&gt;
	} catch (e) {}&lt;br /&gt;
}());&lt;br /&gt;
&lt;br /&gt;
/* EDFM cookie preferences banner + optional GA4 loader.&lt;br /&gt;
 * Basic Google Consent Mode only: Google Analytics is never loaded while the&lt;br /&gt;
 * optional Analytics purpose is undecided or denied.&lt;br /&gt;
 */&lt;br /&gt;
(function () {&lt;br /&gt;
	&#039;use strict&#039;;&lt;br /&gt;
	var STORAGE_KEY = &#039;edfmCookieConsent.v1&#039;;&lt;br /&gt;
	var ANALYTICS_COOKIE = &#039;edfmCookieAnalytics&#039;;&lt;br /&gt;
	var MEASUREMENT_ID = &#039;G-4VJHJ06777&#039;;&lt;br /&gt;
	var loadedMeasurementId = null;&lt;br /&gt;
	var gaDisabledKey = &#039;ga-disable-&#039; + MEASUREMENT_ID;&lt;br /&gt;
&lt;br /&gt;
	function normalizeChoice(raw) {&lt;br /&gt;
		if (!raw || typeof raw !== &#039;object&#039;) { return null; }&lt;br /&gt;
		var analytics;&lt;br /&gt;
		var migratedFromLegacy = false;&lt;br /&gt;
		if (raw.categories &amp;amp;&amp;amp; typeof raw.categories === &#039;object&#039; &amp;amp;&amp;amp; typeof raw.categories.analytics === &#039;boolean&#039;) {&lt;br /&gt;
			analytics = raw.categories.analytics;&lt;br /&gt;
		} else if (typeof raw.analytics === &#039;boolean&#039;) {&lt;br /&gt;
			// Migration path for the previous single optional site-improvement choice.&lt;br /&gt;
			analytics = raw.analytics;&lt;br /&gt;
			migratedFromLegacy = true;&lt;br /&gt;
		} else {&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
		return {&lt;br /&gt;
			necessary: true,&lt;br /&gt;
			categories: {&lt;br /&gt;
				analytics: analytics&lt;br /&gt;
			},&lt;br /&gt;
			// Keep the legacy field for current/future small integrations that may&lt;br /&gt;
			// still read the existing boolean during the category-model migration.&lt;br /&gt;
			analytics: analytics,&lt;br /&gt;
			updated: raw.updated || null,&lt;br /&gt;
			model: &#039;purposes-v2&#039;,&lt;br /&gt;
			migratedFromLegacy: migratedFromLegacy&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function parseChoice() {&lt;br /&gt;
		try {&lt;br /&gt;
			var choice = normalizeChoice(JSON.parse(localStorage.getItem(STORAGE_KEY) || &#039;null&#039;));&lt;br /&gt;
			if (choice &amp;amp;&amp;amp; choice.migratedFromLegacy === true) {&lt;br /&gt;
				choice = persistChoice({ analytics: choice.analytics === true });&lt;br /&gt;
			}&lt;br /&gt;
			return choice;&lt;br /&gt;
		}&lt;br /&gt;
		catch (e) { return null; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function persistChoice(categories) {&lt;br /&gt;
		var analytics = !!(categories &amp;amp;&amp;amp; categories.analytics === true);&lt;br /&gt;
		var choice = {&lt;br /&gt;
			necessary: true,&lt;br /&gt;
			categories: {&lt;br /&gt;
				analytics: analytics&lt;br /&gt;
			},&lt;br /&gt;
			analytics: analytics,&lt;br /&gt;
			updated: new Date().toISOString(),&lt;br /&gt;
			model: &#039;purposes-v2&#039;&lt;br /&gt;
		};&lt;br /&gt;
		localStorage.setItem(STORAGE_KEY, JSON.stringify(choice));&lt;br /&gt;
		return choice;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function hasAnalyticsConsent() {&lt;br /&gt;
		var choice = parseChoice();&lt;br /&gt;
		return !!(choice &amp;amp;&amp;amp; choice.categories.analytics === true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function setAnalyticsCookie(enabled) {&lt;br /&gt;
		var maxAge = enabled ? 60 * 60 * 24 * 180 : 0;&lt;br /&gt;
		document.cookie = ANALYTICS_COOKIE + &#039;=&#039; + (enabled ? &#039;1&#039; : &#039;&#039;) + &#039;; Max-Age=&#039; + maxAge + &#039;; Path=/; Secure; SameSite=Lax&#039;;&lt;br /&gt;
		if (!enabled) {&lt;br /&gt;
			document.cookie = &#039;edfmPopularSearch=; Max-Age=0; Path=/; Secure; SameSite=Lax&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function deleteCookieEverywhere(name) {&lt;br /&gt;
		var host = window.location.hostname;&lt;br /&gt;
		var domains = [ &#039;&#039;, host ];&lt;br /&gt;
		if (host.indexOf(&#039;.&#039;) !== -1) {&lt;br /&gt;
			domains.push(&#039;.&#039; + host);&lt;br /&gt;
			var parts = host.split(&#039;.&#039;);&lt;br /&gt;
			if (parts.length &amp;gt; 2) {&lt;br /&gt;
				domains.push(&#039;.&#039; + parts.slice(-2).join(&#039;.&#039;));&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		var paths = [ &#039;/&#039;, window.location.pathname || &#039;/&#039; ];&lt;br /&gt;
		domains.forEach(function (domain) {&lt;br /&gt;
			paths.forEach(function (path) {&lt;br /&gt;
				document.cookie = name + &#039;=; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=&#039; + path + (domain ? &#039;; Domain=&#039; + domain : &#039;&#039;) + &#039;; Secure; SameSite=Lax&#039;;&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function deleteGaCookies() {&lt;br /&gt;
		document.cookie.split(&#039;;&#039;).forEach(function (part) {&lt;br /&gt;
			var name = part.split(&#039;=&#039;)[0].trim();&lt;br /&gt;
			if (name === &#039;_ga&#039; || name.indexOf(&#039;_ga_&#039;) === 0) {&lt;br /&gt;
				deleteCookieEverywhere(name);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function eligibleMeasurementId() {&lt;br /&gt;
		var marker = document.querySelector(&#039;meta[name=&amp;quot;edfm-ga4-measurement-id&amp;quot;]&#039;);&lt;br /&gt;
		return marker ? marker.getAttribute(&#039;content&#039;) : null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function sanitizeReferrerConfig() {&lt;br /&gt;
		var cfg = {&lt;br /&gt;
			allow_google_signals: false,&lt;br /&gt;
			allow_ad_personalization_signals: false&lt;br /&gt;
		};&lt;br /&gt;
		try {&lt;br /&gt;
			var ref = document.referrer ? new URL(document.referrer) : null;&lt;br /&gt;
			if (ref &amp;amp;&amp;amp; ref.origin === location.origin) {&lt;br /&gt;
				var path = ref.pathname.toLowerCase();&lt;br /&gt;
				var query = ref.search.toLowerCase();&lt;br /&gt;
				var sensitivePath = /\/wiki\/(special:(userlogin|createaccount|changecredentials|passwordreset|confirmemail|preferences|pluggableauthlogin|userlogout)|user:|user_talk:|profile:|profiles:|commander:|commanders:|cmdr:)/.test(path);&lt;br /&gt;
				var sensitiveTitle = /(^|[?&amp;amp;])title=special(?::|%3a)(userlogin|createaccount|changecredentials|passwordreset|confirmemail|preferences|pluggableauthlogin|userlogout)(&amp;amp;|$)/i.test(query);&lt;br /&gt;
				var sensitiveQuery = /(^|[?&amp;amp;])(code|state|token|access_token|refresh_token|id_token|session|session_id|email|email_address|username|user|user_id|account_id|frontier_id|fdev_id|commander|commander_name|cmdr|wpname|wplogintoken|returnto|returntoquery|wpreturnto|wpreturntoquery|authaction|provider)=/i.test(query);&lt;br /&gt;
				if (sensitivePath || sensitiveTitle || sensitiveQuery) {&lt;br /&gt;
					cfg.page_referrer = location.origin + &#039;/wiki/[private-referrer]&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} catch (e) {}&lt;br /&gt;
		return cfg;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function initDataLayer() {&lt;br /&gt;
		window.dataLayer = window.dataLayer || [];&lt;br /&gt;
		window.gtag = window.gtag || function () { window.dataLayer.push(arguments); };&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function loadAnalyticsAfterConsent() {&lt;br /&gt;
		var id = eligibleMeasurementId();&lt;br /&gt;
		if (!id || id !== MEASUREMENT_ID || !hasAnalyticsConsent()) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		window[gaDisabledKey] = false;&lt;br /&gt;
		initDataLayer();&lt;br /&gt;
		window.gtag(&#039;consent&#039;, &#039;default&#039;, {&lt;br /&gt;
			ad_storage: &#039;denied&#039;,&lt;br /&gt;
			ad_user_data: &#039;denied&#039;,&lt;br /&gt;
			ad_personalization: &#039;denied&#039;,&lt;br /&gt;
			analytics_storage: &#039;granted&#039;&lt;br /&gt;
		});&lt;br /&gt;
		if (!loadedMeasurementId &amp;amp;&amp;amp; !document.querySelector(&#039;script[data-edfm-ga4=&amp;quot;&#039; + id + &#039;&amp;quot;]&#039;)) {&lt;br /&gt;
			var s = document.createElement(&#039;script&#039;);&lt;br /&gt;
			s.async = true;&lt;br /&gt;
			s.src = &#039;https://www.googletagmanager.com/gtag/js?id=&#039; + encodeURIComponent(id);&lt;br /&gt;
			s.setAttribute(&#039;data-edfm-ga4&#039;, id);&lt;br /&gt;
			document.head.appendChild(s);&lt;br /&gt;
			window.gtag(&#039;js&#039;, new Date());&lt;br /&gt;
			window.gtag(&#039;config&#039;, id, sanitizeReferrerConfig());&lt;br /&gt;
			loadedMeasurementId = id;&lt;br /&gt;
		} else {&lt;br /&gt;
			window.gtag(&#039;consent&#039;, &#039;update&#039;, { analytics_storage: &#039;granted&#039; });&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function disableAnalytics() {&lt;br /&gt;
		window[gaDisabledKey] = true;&lt;br /&gt;
		if (window.gtag) {&lt;br /&gt;
			window.gtag(&#039;consent&#039;, &#039;update&#039;, {&lt;br /&gt;
				ad_storage: &#039;denied&#039;,&lt;br /&gt;
				ad_user_data: &#039;denied&#039;,&lt;br /&gt;
				ad_personalization: &#039;denied&#039;,&lt;br /&gt;
				analytics_storage: &#039;denied&#039;&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		deleteGaCookies();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function saveChoice(categories) {&lt;br /&gt;
		var choice = persistChoice(categories);&lt;br /&gt;
		var analytics = choice.categories.analytics === true;&lt;br /&gt;
		setAnalyticsCookie(analytics);&lt;br /&gt;
		if (analytics) {&lt;br /&gt;
			loadAnalyticsAfterConsent();&lt;br /&gt;
		} else {&lt;br /&gt;
			disableAnalytics();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function bannerHtml() {&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;edfm-cookie-card&amp;quot; role=&amp;quot;dialog&amp;quot; aria-live=&amp;quot;polite&amp;quot; aria-labelledby=&amp;quot;edfm-cookie-title&amp;quot; aria-describedby=&amp;quot;edfm-cookie-intro&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div id=&amp;quot;edfm-cookie-title&amp;quot; class=&amp;quot;edfm-cookie-title&amp;quot;&amp;gt;Cookie preferences&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;p id=&amp;quot;edfm-cookie-intro&amp;quot; class=&amp;quot;edfm-cookie-text&amp;quot;&amp;gt;EDFM uses necessary cookies for security and site functionality. Optional cookies help us understand how EDFM is used and improve the site. You can choose which optional categories to allow.&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;edfm-cookie-categories&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;section class=&amp;quot;edfm-cookie-category edfm-cookie-category-necessary&amp;quot; aria-labelledby=&amp;quot;edfm-cookie-necessary-title&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;edfm-cookie-category-head&amp;quot;&amp;gt;&amp;lt;h3 id=&amp;quot;edfm-cookie-necessary-title&amp;quot;&amp;gt;Necessary&amp;lt;/h3&amp;gt;&amp;lt;span class=&amp;quot;edfm-cookie-status&amp;quot; aria-label=&amp;quot;Necessary cookies are always on&amp;quot;&amp;gt;Always on&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;p&amp;gt;Used for security, login sessions, essential site functionality, and remembering your cookie preferences.&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/section&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;section class=&amp;quot;edfm-cookie-category edfm-cookie-category-analytics&amp;quot; aria-labelledby=&amp;quot;edfm-cookie-analytics-title&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;edfm-cookie-category-head&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;h3 id=&amp;quot;edfm-cookie-analytics-title&amp;quot;&amp;gt;Analytics&amp;lt;/h3&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;label class=&amp;quot;edfm-cookie-switch&amp;quot; for=&amp;quot;edfm-cookie-analytics-toggle&amp;quot;&amp;gt;&amp;lt;input id=&amp;quot;edfm-cookie-analytics-toggle&amp;quot; type=&amp;quot;checkbox&amp;quot; class=&amp;quot;edfm-cookie-analytics&amp;quot; aria-describedby=&amp;quot;edfm-cookie-analytics-desc&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Allow&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;p id=&amp;quot;edfm-cookie-analytics-desc&amp;quot;&amp;gt;Google Analytics helps us understand page usage, navigation, searches, traffic sources, and general engagement so we can improve EDFM. EDFM does not intentionally send Google usernames, Commander names, email addresses, or Frontier account identifiers.&amp;lt;/p&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/section&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;edfm-cookie-actions&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;edfm-cookie-accept-all&amp;quot;&amp;gt;Accept all&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;edfm-cookie-save&amp;quot;&amp;gt;Save preferences&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;edfm-cookie-reject&amp;quot;&amp;gt;Reject optional&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;edfm-cookie-links&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Elite_Dangerous_Field_Manual:Cookie_Policy&amp;quot;&amp;gt;Cookie Policy&amp;lt;/a&amp;gt; · &amp;lt;a href=&amp;quot;/wiki/Elite_Dangerous_Field_Manual:Privacy_Policy&amp;quot;&amp;gt;Privacy Policy&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function showBanner() {&lt;br /&gt;
		if (document.getElementById(&#039;edfm-cookie-banner&#039;)) { return; }&lt;br /&gt;
		var wrap = document.createElement(&#039;div&#039;);&lt;br /&gt;
		wrap.id = &#039;edfm-cookie-banner&#039;;&lt;br /&gt;
		wrap.innerHTML = bannerHtml();&lt;br /&gt;
		document.body.appendChild(wrap);&lt;br /&gt;
		var checkbox = wrap.querySelector(&#039;.edfm-cookie-analytics&#039;);&lt;br /&gt;
		var current = parseChoice();&lt;br /&gt;
		checkbox.checked = !!(current &amp;amp;&amp;amp; current.categories.analytics === true);&lt;br /&gt;
		wrap.querySelector(&#039;.edfm-cookie-accept-all&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			saveChoice({ analytics: true });&lt;br /&gt;
			wrap.remove();&lt;br /&gt;
		});&lt;br /&gt;
		wrap.querySelector(&#039;.edfm-cookie-reject&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			saveChoice({ analytics: false });&lt;br /&gt;
			wrap.remove();&lt;br /&gt;
		});&lt;br /&gt;
		wrap.querySelector(&#039;.edfm-cookie-save&#039;).addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
			saveChoice({ analytics: checkbox.checked });&lt;br /&gt;
			wrap.remove();&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function addPreferencesLink() {&lt;br /&gt;
		var footer = document.getElementById(&#039;footer-places&#039;) || document.getElementById(&#039;footer&#039;) || document.body;&lt;br /&gt;
		if (!footer || document.getElementById(&#039;edfm-cookie-preferences-link&#039;)) { return; }&lt;br /&gt;
		var li = document.createElement(footer.tagName &amp;amp;&amp;amp; footer.tagName.toLowerCase() === &#039;ul&#039; ? &#039;li&#039; : &#039;div&#039;);&lt;br /&gt;
		var a = document.createElement(&#039;a&#039;);&lt;br /&gt;
		a.href = &#039;#cookie-preferences&#039;;&lt;br /&gt;
		a.id = &#039;edfm-cookie-preferences-link&#039;;&lt;br /&gt;
		a.textContent = &#039;Cookie Preferences&#039;;&lt;br /&gt;
		a.addEventListener(&#039;click&#039;, function (event) {&lt;br /&gt;
			event.preventDefault();&lt;br /&gt;
			showBanner();&lt;br /&gt;
		});&lt;br /&gt;
		li.appendChild(a);&lt;br /&gt;
		footer.appendChild(li);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function initCookiePrefs() {&lt;br /&gt;
		addPreferencesLink();&lt;br /&gt;
		var choice = parseChoice();&lt;br /&gt;
		if (!choice) { showBanner(); disableAnalytics(); return; }&lt;br /&gt;
		if (choice.migratedFromLegacy === true || choice.model !== &#039;purposes-v2&#039; || !choice.categories) {&lt;br /&gt;
			choice = persistChoice({ analytics: !!choice.analytics });&lt;br /&gt;
		}&lt;br /&gt;
		setAnalyticsCookie(choice.categories.analytics === true);&lt;br /&gt;
		if (choice.categories.analytics === true) {&lt;br /&gt;
			loadAnalyticsAfterConsent();&lt;br /&gt;
		} else {&lt;br /&gt;
			disableAnalytics();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (document.readyState === &#039;loading&#039;) {&lt;br /&gt;
		document.addEventListener(&#039;DOMContentLoaded&#039;, initCookiePrefs);&lt;br /&gt;
	} else {&lt;br /&gt;
		initCookiePrefs();&lt;br /&gt;
	}&lt;br /&gt;
	window.edfmShowCookiePreferences = showBanner;&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=935</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=935"/>
		<updated>2026-08-18T20:57:14Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Colour the search submit control (icon/button) to match the site&amp;#039;s orange progressive-action convention; it was rendering with no colour override on either the no-JS legacy button or the JS/Codex search-input icon, making it invisible against the dark input background.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EDFM article bullets: replace the stock browser dot with the provided&lt;br /&gt;
   cyan field-manual arrow, scaled to text size rather than using the source&lt;br /&gt;
   image&#039;s native 100x91 dimensions. This targets article unordered lists;&lt;br /&gt;
   interface/navigation lists such as the Jump To TOC and galleries are reset&lt;br /&gt;
   below so they keep their component-specific layout. */&lt;br /&gt;
.mw-parser-output ul {&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	padding-left: 1.55em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul &amp;gt; li::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: -1.35em;&lt;br /&gt;
	top: 0.48em;&lt;br /&gt;
	width: 0.82em;&lt;br /&gt;
	height: 0.75em;&lt;br /&gt;
	background-image: url( &#039;/edfm-assets/list-bullet-arrow.png&#039; );&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	opacity: 0.95;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.35 ) );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	padding-left: 1.45em;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output ul ul &amp;gt; li::before {&lt;br /&gt;
	left: -1.25em;&lt;br /&gt;
	top: 0.52em;&lt;br /&gt;
	width: 0.68em;&lt;br /&gt;
	height: 0.62em;&lt;br /&gt;
	opacity: 0.82;&lt;br /&gt;
}&lt;br /&gt;
/* Component exceptions: these are not prose bullet lists. */&lt;br /&gt;
.mw-parser-output .toc ul,&lt;br /&gt;
.mw-parser-output .gallery,&lt;br /&gt;
.mw-parser-output .gallery ul,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional ul {&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .toc li::before,&lt;br /&gt;
.mw-parser-output .gallery li::before,&lt;br /&gt;
.mw-parser-output .mw-gallery-traditional li::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Keep raster logo artwork contained in&lt;br /&gt;
   Vector legacy&#039;s fixed sidebar slot rather than letting the image render at&lt;br /&gt;
   its intrinsic PNG size and clip against the rail. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	height: 10rem;&lt;br /&gt;
	margin: 0 -0.65rem 0.65rem -0.65rem;&lt;br /&gt;
	padding: 0.5rem 0.55rem 0.45rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
#p-logo a.mw-wiki-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	background-position: center center !important;&lt;br /&gt;
	background-repeat: no-repeat !important;&lt;br /&gt;
	background-size: contain !important;&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Search submit control: neither rendering path gives this any color of&lt;br /&gt;
   its own, so on our dark input background it was effectively invisible.&lt;br /&gt;
   The no-JS legacy form&#039;s &amp;lt;button&amp;gt; is a plain black icon at 0.67 opacity&lt;br /&gt;
   (core skins.vector.styles.legacy/components/SearchBox.less); the&lt;br /&gt;
   JS/Vue-Codex widget (.vector-search-box-vue) has no separate button at&lt;br /&gt;
   all, just a start icon inside the input using the same technique&lt;br /&gt;
   (mask-image recoloured via `background-color`, see Codex&#039;s&lt;br /&gt;
   CdxSearchInput.css). Recolour both to match the site&#039;s orange&lt;br /&gt;
   progressive-action colour used everywhere else. */&lt;br /&gt;
.vector-search-box-vue .cdx-text-input__start-icon {&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ] {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-orange );&lt;br /&gt;
	opacity: 0.85;&lt;br /&gt;
	-webkit-mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / 16px url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M12.2 13.6a7 7 0 1 1 1.4-1.4l5.4 5.4-1.4 1.4zM3 8a5 5 0 1 0 10 0A5 5 0 0 0 3 8&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:hover,&lt;br /&gt;
.searchButton[ name=&#039;go&#039; ]:focus {&lt;br /&gt;
	background-color: var( --edfm-orange-bright );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a balanced multi-column jump list. CSS grid flows row-first,&lt;br /&gt;
   which makes numbered sections read 1, 2, 3, 4 across the first row. For a&lt;br /&gt;
   reference/walkthrough TOC, scan order is clearer when each column reads&lt;br /&gt;
   downward first: 1/2/3, then 4/5/6, then 7/8/9. CSS columns preserve the&lt;br /&gt;
   real DOM/source order while presenting that column-major layout on every&lt;br /&gt;
   page that uses the stock MediaWiki TOC. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: block;&lt;br /&gt;
	column-count: 3;&lt;br /&gt;
	column-gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc &amp;gt; ul &amp;gt; li {&lt;br /&gt;
	break-inside: avoid;&lt;br /&gt;
	page-break-inside: avoid;&lt;br /&gt;
	-webkit-column-break-inside: avoid;&lt;br /&gt;
	margin: 0 0 0.45rem;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* Column count changes only at readable/touch-friendly breakpoints. Keep&lt;br /&gt;
   column-major ordering at 3 and 2 columns; mobile becomes the natural single&lt;br /&gt;
   source-order list. */&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 2;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		column-count: 1;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 350px;&lt;br /&gt;
	max-width: min( 350px, 42% );&lt;br /&gt;
	margin: 0 0 1.25em 1.35em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* VisualEditor&#039;s reference dialog embeds a mini target widget for the&lt;br /&gt;
   reference body. The widget ships with a white WikimediaUI base surface,&lt;br /&gt;
   so theme that inner editing box separately from the surrounding OOUI&lt;br /&gt;
   dialog chrome. */&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ),&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget,&lt;br /&gt;
.ve-ui-mwReferenceEditPanel .ve-ui-targetWidget:not( .oo-ui-pendingElement-pending ) {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-surface,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-documentNode,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-surface-placeholder {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode p,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode li,&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ce-attachedRootNode span {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwReferenceDialog .ve-ui-targetWidget-focused {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 77, 199, 232, 0.42 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM login/register auth surface template alignment&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-label__label__text {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.82rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.015em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm input[type=&#039;password&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm input[type=&#039;password&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 );&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-text-input__input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-text-input__input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field__help-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-help,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-password-help {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.88rem;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding: 0.9rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.12 ), transparent 34% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.42 );&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: 0 12px 26px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.55rem 0.8rem;&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.035 );&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.72rem;&lt;br /&gt;
	font-weight: 900;	&lt;br /&gt;
	letter-spacing: 0.045em;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	white-space: normal;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:hover,&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta &amp;gt; a#mw-createaccount-join:focus-visible {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	color: #10171b !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin-top: 0.2rem;&lt;br /&gt;
	padding: 1.15rem 1.25rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.08 ), transparent 38% ),&lt;br /&gt;
		var( --edfm-surface-1 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 14px 30px rgba( 0, 0, 0, 0.28 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-heading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 1.35rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list {&lt;br /&gt;
	margin-top: 1rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
	opacity: 0.78 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text strong {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.75rem;&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-list .mw-number-text p {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	font-size: 0.9rem;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLTurnstileField .cdx-label__label__text {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 850;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-submit:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM auth cards and CMDR account field polish — 2026-08-11&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text {&lt;br /&gt;
	padding-top: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #firstHeading {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: flex !important;&lt;br /&gt;
	justify-content: center !important;&lt;br /&gt;
	align-items: flex-start !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm {&lt;br /&gt;
	width: min( 100%, 34rem ) !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.1 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 55% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.34 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-userlogin-help {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #mw-createaccount-cta {&lt;br /&gt;
	margin: 1.05rem auto 0 !important;&lt;br /&gt;
	max-width: 18rem;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
	display: grid !important;&lt;br /&gt;
	grid-template-columns: minmax( 19rem, 28rem ) minmax( 20rem, 1fr ) !important;&lt;br /&gt;
	gap: clamp( 1.4rem, 4vw, 3rem ) !important;&lt;br /&gt;
	align-items: stretch !important;&lt;br /&gt;
	width: min( 100%, 76rem ) !important;&lt;br /&gt;
	max-width: 76rem !important;&lt;br /&gt;
	margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 66, 199, 217, 0.07 ), transparent 38% ),&lt;br /&gt;
		linear-gradient( 180deg, rgba( 255, 138, 0, 0.035 ), rgba( 0, 0, 0, 0 ) 54% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 38px rgba( 0, 0, 0, 0.32 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm {&lt;br /&gt;
	padding: 1.15rem 1.2rem 1.25rem !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
	padding: clamp( 1.3rem, 2.2vw, 2.05rem ) !important;&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm form {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .cdx-field,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .cdx-field {&lt;br /&gt;
	margin-bottom: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Userlogin #userloginForm .mw-htmlform-field-HTMLSubmitField,&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #userloginForm .mw-htmlform-field-HTMLSubmitField {&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName {&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.45 ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-CreateAccount #wpRealName:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 1px rgba( 66, 199, 217, 0.35 ), 0 0 18px rgba( 66, 199, 217, 0.14 ) !important;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #mw-content-text &amp;gt; .mw-ui-container {&lt;br /&gt;
		display: flex !important;&lt;br /&gt;
		flex-direction: column !important;&lt;br /&gt;
		width: min( 100%, 34rem ) !important;&lt;br /&gt;
		max-width: 34rem !important;&lt;br /&gt;
	}&lt;br /&gt;
	body.mediawiki.mw-special-Userlogin #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount #userloginForm,&lt;br /&gt;
	body.mediawiki.mw-special-CreateAccount .mw-createacct-benefits-container {&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM dark thumbnail/frame treatment — 2026-08-13&lt;br /&gt;
   Keep MediaWiki image captions from falling back to the default white frame.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output .thumb {&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbinner,&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 figure.mw-halign-right,&lt;br /&gt;
.mw-parser-output figure.mw-halign-left,&lt;br /&gt;
.mw-parser-output figure.mw-halign-center {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 180deg, rgba( 66, 199, 217, 0.045 ), rgba( 0, 0, 0, 0 ) 56% ),&lt;br /&gt;
		var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 12px 28px rgba( 0, 0, 0, 0.28 ), inset 0 1px 0 rgba( 255, 255, 255, 0.035 ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbimage,&lt;br /&gt;
.mw-parser-output .thumbinner img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] img,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] img {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim ) !important;&lt;br /&gt;
	font-size: var( --edfm-fs-small ) !important;&lt;br /&gt;
	line-height: 1.42 !important;&lt;br /&gt;
	padding: 0.42rem 0.5rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .thumbcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Thumb&amp;quot;] figcaption a:hover,&lt;br /&gt;
.mw-parser-output figure[typeof~=&amp;quot;mw:File/Frame&amp;quot;] figcaption a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .magnify a,&lt;br /&gt;
.mw-parser-output .mw-file-magnify {&lt;br /&gt;
	filter: invert( 1 ) opacity( 0.72 ) drop-shadow( 0 0 2px rgba( 66, 199, 217, 0.28 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM VisualEditor template dialog dark theme — 2026-08-13&lt;br /&gt;
   Keep template editing dialogs from falling back to white/light OOUI panels.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.ve-ui-mwTransclusionDialog,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-frame,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-body,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-window-head,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineControlsWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-menuLayout-menu {&lt;br /&gt;
	background-color: var( --edfm-surface-1 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterSelectWidget {&lt;br /&gt;
	background-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldsetLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-widget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-fieldLayout-field .oo-ui-labelElement-label em,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwParameterPage-undocumentedLabel {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget input {&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Additional VE template-dialog color polish — disabled/apply buttons, search,&lt;br /&gt;
   unused-toggle buttons, and parameter checkboxes. */&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 0.82 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-searchInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-textInputWidget .oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-inputWidget-input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTransclusionDialog .ve-ui-mwTransclusionOutlineParameterWidget .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM VisualEditor template/infobox popup hard-dark theme — targets the actual&lt;br /&gt;
   Edit: &amp;lt;template&amp;gt; popup chrome and body, not just article/sidebar chrome. */&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal &amp;gt; .oo-ui-dialog.oo-ui-window-active &amp;gt; .oo-ui-window-frame,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-content,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-body,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-foot,&lt;br /&gt;
.ve-ui-mwTemplateDialog,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-panelLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-content,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-bookletLayout-stackLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-pageLayout,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTemplatePage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #111b20 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-content &amp;gt; .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-window-head,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-navigation,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-menuLayout-menu,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineControlsWidget {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-header label,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-labelElement-label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-header label,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldsetLayout-header label {&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-description,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwParameterPage-undocumentedLabel,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-fieldLayout-help,&lt;br /&gt;
.ve-ui-mwTemplateDialog .mw-widget-titleOptionWidget-description {&lt;br /&gt;
	color: #a9bbc1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget textarea,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget input,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-inputWidget-input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget textarea,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget input,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-inputWidget-input {&lt;br /&gt;
	background: #0d1519 !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba(255,255,255,.035) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-searchInputWidget.oo-ui-widget-enabled input:focus {&lt;br /&gt;
	border-color: #42c7d9 !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba(66,199,217,.32) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	border-color: #52646b !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: #31454f !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #ffb347 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-flaggedElement-progressive.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
	color: #111820 !important;&lt;br /&gt;
	font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-widget-disabled &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: #1c2a31 !important;&lt;br /&gt;
	border-color: #3f5159 !important;&lt;br /&gt;
	color: #8fa1a8 !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-highlighted,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-optionWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget-selected,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineTemplateWidget:hover,&lt;br /&gt;
.ve-ui-mwTemplateDialog .ve-ui-mwTransclusionOutlineParameterWidget:hover {&lt;br /&gt;
	background: #25353d !important;&lt;br /&gt;
	color: #f4f7f8 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;] + span::before {&lt;br /&gt;
	background-color: #0d1519 !important;&lt;br /&gt;
	border-color: #7f9299 !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.ve-ui-mwTemplateDialog .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span,&lt;br /&gt;
.oo-ui-windowManager-modal .oo-ui-checkboxInputWidget [type=&amp;quot;checkbox&amp;quot;]:checked + span::before {&lt;br /&gt;
	background-color: #ff8a00 !important;&lt;br /&gt;
	border-color: #ff8a00 !important;&lt;br /&gt;
}&lt;br /&gt;
/* EDFM cookie preferences banner */&lt;br /&gt;
#edfm-cookie-banner {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	z-index: 10000;&lt;br /&gt;
	left: 1rem;&lt;br /&gt;
	right: 1rem;&lt;br /&gt;
	bottom: 1rem;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-card {&lt;br /&gt;
	max-width: 800px;&lt;br /&gt;
	border: 1px solid rgba(80, 220, 240, 0.65);&lt;br /&gt;
	background: rgba(3, 14, 22, 0.98);&lt;br /&gt;
	box-shadow: 0 0 22px rgba(80, 220, 240, 0.22), 0 12px 36px rgba(0, 0, 0, 0.45);&lt;br /&gt;
	color: #dffbff;&lt;br /&gt;
	padding: 1rem;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	pointer-events: auto;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-title {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #7fe0ec;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-text { margin: 0 0 0.75rem; line-height: 1.45; }&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-categories {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 0.65rem;&lt;br /&gt;
	margin: 0.65rem 0 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.32);&lt;br /&gt;
	background: rgba(7, 28, 38, 0.74);&lt;br /&gt;
	padding: 0.7rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category-head {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.85rem;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category h3 {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-category p {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.42;&lt;br /&gt;
	color: #c6e6eb;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-status {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	border: 1px solid rgba(255, 138, 0, 0.7);&lt;br /&gt;
	color: #ffd69a;&lt;br /&gt;
	background: rgba(255, 138, 0, 0.12);&lt;br /&gt;
	padding: 0.2rem 0.48rem;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.4rem;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input {&lt;br /&gt;
	inline-size: 1.1rem;&lt;br /&gt;
	block-size: 1.1rem;&lt;br /&gt;
	accent-color: #ff8a00;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-switch input:focus-visible {&lt;br /&gt;
	outline: 2px solid #7fe0ec;&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-actions {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button {&lt;br /&gt;
	border: 1px solid rgba(127, 224, 236, 0.7);&lt;br /&gt;
	background: rgba(9, 50, 65, 0.92);&lt;br /&gt;
	color: #f3feff;&lt;br /&gt;
	padding: 0.45rem 0.7rem;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner button:hover,&lt;br /&gt;
#edfm-cookie-banner button:focus-visible {&lt;br /&gt;
	background: rgba(17, 88, 108, 0.98);&lt;br /&gt;
	outline: 2px solid rgba(127, 224, 236, 0.85);&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
#edfm-cookie-banner .edfm-cookie-links { margin-top: 0.6rem; font-size: 0.85rem; }&lt;br /&gt;
#edfm-cookie-banner a { color: #7fe0ec; }&lt;br /&gt;
@media (max-width: 600px) {&lt;br /&gt;
	#edfm-cookie-banner { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-card { max-height: calc(100vh - 1rem); overflow: auto; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-category-head { align-items: flex-start; }&lt;br /&gt;
	#edfm-cookie-banner .edfm-cookie-actions button { flex: 1 1 100%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ========================================================================== &lt;br /&gt;
   EDFM Vector watchstar dark-theme fix — 2026-08-16&lt;br /&gt;
   Vector legacy renders the page watch/unwatch affordance as a small SVG&lt;br /&gt;
   background on `#ca-watch/#ca-unwatch a::before`. On EDFM&#039;s dark tab row the&lt;br /&gt;
   upstream light-skin URLs can be too low-contrast, and some deployments do not&lt;br /&gt;
   expose ResourceLoader&#039;s dotted asset path directly. Use inline SVGs in the&lt;br /&gt;
   EDFM palette so the watchstar is always visible in the top action menu.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%2310171b&#039; stroke=&#039;%2342c7d9&#039; stroke-width=&#039;1.35&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 3px rgba( 66, 199, 217, 0.42 ) );&lt;br /&gt;
	opacity: 0.96;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.2&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 4px rgba( 255, 138, 0, 0.45 ) );&lt;br /&gt;
	opacity: 0.98;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-watch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs #ca-unwatch.icon a:focus::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:hover::before,&lt;br /&gt;
.vector-menu-tabs-legacy #ca-unwatch.icon a:focus::before {&lt;br /&gt;
	background-image: url( &amp;quot;data:image/svg+xml,%3Csvg xmlns=&#039;http://www.w3.org/2000/svg&#039; width=&#039;16&#039; height=&#039;16&#039; viewBox=&#039;0 0 16 16&#039;%3E%3Cpath fill=&#039;%23ff8a00&#039; stroke=&#039;%23ffa21a&#039; stroke-width=&#039;1.25&#039; stroke-linejoin=&#039;round&#039; d=&#039;m8.1 1.1 2.2 4.5 4.8.7-3.5 3.4.9 4.8L8 12.2l-4.3 2.3.8-4.8L1 6.3l4.8-.7z&#039;/%3E%3C/svg%3E&amp;quot; ) !important;&lt;br /&gt;
	filter: drop-shadow( 0 0 5px rgba( 255, 138, 0, 0.65 ) );&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM Special:Preferences dark theme fix — 2026-08-16&lt;br /&gt;
   Preferences is an OOUI/Codex-heavy special page. Core styles bring in a&lt;br /&gt;
   light tab strip and sticky submit footer, so theme the actual preferences&lt;br /&gt;
   wrapper rather than only generic form controls.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences,&lt;br /&gt;
body.mediawiki.mw-special-Preferences #mw-prefs-container,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-content &amp;gt; .oo-ui-indexLayout-stackLayout &amp;gt; .oo-ui-tabPanelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-fieldset-wrapper,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-panelLayout-framed {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed {&lt;br /&gt;
	box-shadow: 0 18px 36px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs &amp;gt; .oo-ui-menuLayout-menu,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-menuLayout-menu {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabSelectWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-highlighted {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected.oo-ui-widget-enabled &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: inset 0 -3px 0 var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-header label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-labelElement-label,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-title {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-description,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inline-help,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-fieldLayout-messages,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .htmlform-tip,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-help {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget .oo-ui-inputWidget-input,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownInputWidget select,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-dropdownWidget-handle,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;text&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;number&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;email&#039;],&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 255, 255, 0.025 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-inputWidget-input::placeholder,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input::placeholder {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences textarea:focus,&lt;br /&gt;
body.mediawiki.mw-special-Preferences select:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.24 ) !important;&lt;br /&gt;
	outline: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget [type=&#039;checkbox&#039;] + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;] {&lt;br /&gt;
	background-color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type=&#039;checkbox&#039;]:checked + span::before,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;checkbox&#039;]:checked {&lt;br /&gt;
	background-color: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	accent-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;] {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-framed.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-buttonElement-frameless.oo-ui-widget-enabled &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences button:hover,&lt;br /&gt;
body.mediawiki.mw-special-Preferences input[type=&#039;submit&#039;]:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.16 ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences #preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-htmlform-submit-buttons,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .oo-ui-window-foot .mw-htmlform-submit-buttons {&lt;br /&gt;
	background: rgba( 16, 23, 27, 0.96 ) !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 -10px 24px rgba( 0, 0, 0, 0.34 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-search-highlight,&lt;br /&gt;
body.mediawiki.mw-special-Preferences .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target &amp;gt; .oo-ui-fieldsetLayout-header &amp;gt; .oo-ui-labelElement-label {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.18 ) !important;&lt;br /&gt;
	outline-color: rgba( 66, 199, 217, 0.32 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Screenshot_license&amp;diff=934</id>
		<title>Template:Screenshot license</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Screenshot_license&amp;diff=934"/>
		<updated>2026-08-18T18:26:40Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Restore content + fix stale deprecation pointer: point directly to EDFM image information instead of the also-deprecated Elite Dangerous screenshot (duplicate-info audit; previous save accidentally blanked this page due to a file-permission bug)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:EDFM style/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;edfm-panel edfm-panel-warning&amp;quot;&amp;gt;&#039;&#039;&#039;Deprecated.&#039;&#039;&#039; Use {{tl|EDFM image information}} instead, under a separate &amp;lt;code&amp;gt;== Summary ==&amp;lt;/code&amp;gt; section — keep licensing in its own &amp;lt;code&amp;gt;== Licensing ==&amp;lt;/code&amp;gt; section via {{tl|License-ED screenshot}} rather than the combined notice this template used to render. See [[Elite Dangerous Field Manual:Image Use Policy]]. This template predates EDFM&#039;s licensing system and is kept only so old links/history aren&#039;t broken; it isn&#039;t used on any file page.&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Do not use this template on new uploads — see {{tl|EDFM image information}}.&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Screenshot_license&amp;diff=933</id>
		<title>Template:Screenshot license</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Screenshot_license&amp;diff=933"/>
		<updated>2026-08-18T18:25:58Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Fix stale deprecation pointer: point directly to EDFM image information instead of the also-deprecated Elite Dangerous screenshot (duplicate-info audit)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Main_Page&amp;diff=929</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Main_Page&amp;diff=929"/>
		<updated>2026-08-18T13:19:24Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: SEO pass: fix semantic H1 (was rendering as &amp;#039;Main Page&amp;#039;), add page-specific title/description, describe EDFM as a wiki in the About card&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Elite Dangerous Field Manual}}{{SEO&lt;br /&gt;
 |title = Elite Dangerous Field Manual - Wiki, Guides &amp;amp; Reference&lt;br /&gt;
 |description = An independent, community-maintained Elite Dangerous wiki with practical guides, engineering references, and up-to-date information for commanders.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-hero&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-hero-kicker&amp;quot;&amp;gt;Commander reference hub&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-hero-title&amp;quot;&amp;gt;Elite Dangerous Field Manual&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-hero-text&amp;quot;&amp;gt;Current answers, practical procedures, and reliable reference for &#039;&#039;Elite Dangerous&#039;&#039; commanders.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Start here ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-grid edfm-home-grid-four&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card edfm-home-card-primary&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;New commander&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;[[New Commander Roadmap|Follow the roadmap]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-text&amp;quot;&amp;gt;Start with the core path: controls, ship basics, early money, survival, and the first systems worth learning.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Returning player&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;[[Returning Commander Overview|Catch up fast]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-text&amp;quot;&amp;gt;Jump back in after time away with the major systems, changed mechanics, and practical next steps.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Need direction&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;[[Start Here|Pick a first objective]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-text&amp;quot;&amp;gt;Not sure what to do next? Choose a goal and follow a clear commander-friendly route.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Experienced&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;[[Game Reference|Browse reference]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-text&amp;quot;&amp;gt;Go straight to structured reference pages, mechanics, unlocks, tools, and comparison data.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Browse by topic ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-grid edfm-home-grid-topics&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Reference&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;Core knowledge&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-link-list&amp;quot;&amp;gt;[[Game Reference]] · [[Ships and Equipment]] · [[Engineering]] · [[Odyssey]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;Practical procedures&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-link-list&amp;quot;&amp;gt;[[Field Procedures]] · [[Engineer Unlock Guide]] · [[Unlocking Broo Tarquin]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Data&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;Lists and comparisons&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-link-list&amp;quot;&amp;gt;[[List of Engineers]] · [[Engineer Capability Comparison]] · [[Tools and Resources]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Game systems&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;Active mechanics&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-link-list&amp;quot;&amp;gt;[[Powerplay]] · [[Colonisation]] · [[Operations]] · [[Lore and History]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== News and updates ==&lt;br /&gt;
{{Frontier News}}&lt;br /&gt;
&lt;br /&gt;
== About EDFM ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card edfm-home-card-about&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-kicker&amp;quot;&amp;gt;Independent, community-maintained field manual&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-title&amp;quot;&amp;gt;About the Elite Dangerous Field Manual&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-card-text&amp;quot;&amp;gt;&#039;&#039;&#039;Elite Dangerous Field Manual&#039;&#039;&#039; &#039;&#039;&#039;is an independent, community-maintained Elite Dangerous wiki and practical reference. EDFM is actively being developed, with new articles, guides, templates, and reference material added as the project grows.&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-home-link-list&amp;quot;&amp;gt;[[Elite Dangerous Field Manual:About the Field Manual|About]] · [[Elite Dangerous Field Manual:Contributing|Contributing]] · [[Elite Dangerous Field Manual:Editorial Policy|Editorial Policy]] · [[Elite Dangerous Field Manual:Legal and Trademark Notice|Legal notice]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Trade&amp;diff=928</id>
		<title>Trade</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Trade&amp;diff=928"/>
		<updated>2026-08-18T13:17:43Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for commodity trading content — see [[:Category:Trading]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual trade articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Mining]] [[Background Simulation]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Trading]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Thargoid&amp;diff=927</id>
		<title>Thargoid</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Thargoid&amp;diff=927"/>
		<updated>2026-08-18T13:17:42Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for Thargoid encounters and technology content — see [[:Category:Thargoid]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual Thargoid articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Guardian]] [[Thargoid War History]] [[Combat]]}}&lt;br /&gt;
[[Category:Thargoid]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Powerplay&amp;diff=926</id>
		<title>Powerplay</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Powerplay&amp;diff=926"/>
		<updated>2026-08-18T13:17:42Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Live|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for Powerplay content — see [[:Category:Powerplay]].&lt;br /&gt;
&lt;br /&gt;
No individual Powerplay articles exist yet. Powerplay mechanics have changed substantially over time (Powerplay 2.0); nothing on this page states specific mechanics yet, to avoid recording stale rules as current.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Operations]] [[Game Reference]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Operations&amp;diff=925</id>
		<title>Operations</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Operations&amp;diff=925"/>
		<updated>2026-08-18T13:17:41Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for larger multi-step activities (expeditions, fleet carrier operations, community goals) — see [[:Category:Operations]].&lt;br /&gt;
&lt;br /&gt;
No individual operations articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Field Procedures]] [[Colonisation]] [[Powerplay]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Odyssey&amp;diff=924</id>
		<title>Odyssey</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Odyssey&amp;diff=924"/>
		<updated>2026-08-18T13:17:40Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Live|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for Odyssey-specific (on-foot) content — see [[:Category:Odyssey]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual Odyssey articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Field Procedures]] [[Game Reference]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Mining&amp;diff=923</id>
		<title>Mining</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Mining&amp;diff=923"/>
		<updated>2026-08-18T13:17:40Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for mining and refining content — see [[:Category:Mining]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual mining articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Trade]] [[Ships and Equipment]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Mining]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Lore_and_History&amp;diff=922</id>
		<title>Lore and History</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Lore_and_History&amp;diff=922"/>
		<updated>2026-08-18T13:17:39Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Historical|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for in-universe lore and background content — see [[:Category:Lore]] and [[:Category:Galactic Archive]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual lore articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Elite Dangerous Field Manual:About the Field Manual]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Guardian&amp;diff=921</id>
		<title>Guardian</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Guardian&amp;diff=921"/>
		<updated>2026-08-18T13:17:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for Guardian ruins, technology, and related content — see [[:Category:Guardian]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual Guardian articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Thargoid]] [[Lore and History]] [[Engineering]]}}&lt;br /&gt;
[[Category:Guardian]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Fleet_Carriers&amp;diff=920</id>
		<title>Fleet Carriers</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Fleet_Carriers&amp;diff=920"/>
		<updated>2026-08-18T13:17:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for player-owned Fleet Carrier content — see [[:Category:Fleet Carriers]].&lt;br /&gt;
&lt;br /&gt;
No individual Fleet Carrier articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Operations]] [[Trade]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Fleet Carriers]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Exploration&amp;diff=919</id>
		<title>Exploration</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Exploration&amp;diff=919"/>
		<updated>2026-08-18T13:17:37Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for long-range travel, scanning, and discovery content — see [[:Category:Exploration]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual exploration articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Exobiology]] [[Game Reference]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Exploration]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Exobiology&amp;diff=918</id>
		<title>Exobiology</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Exobiology&amp;diff=918"/>
		<updated>2026-08-18T13:17:36Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for exobiology (surface bio-sampling) content — see [[:Category:Exobiology]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual exobiology articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Exploration]] [[Game Reference]]}}&lt;br /&gt;
[[Category:Exobiology]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Combat&amp;diff=917</id>
		<title>Combat</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Combat&amp;diff=917"/>
		<updated>2026-08-18T13:17:35Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for ship-to-ship and on-foot combat content — see [[:Category:Combat]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual combat articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Operations]] [[Engineering]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Combat]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Colonisation&amp;diff=916</id>
		<title>Colonisation</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Colonisation&amp;diff=916"/>
		<updated>2026-08-18T13:17:35Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Live|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for system-colonisation content — see [[:Category:Colonisation]].&lt;br /&gt;
&lt;br /&gt;
No individual colonisation articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Patch history|&lt;br /&gt;
! Update !! Date !! Change&lt;br /&gt;
|-&lt;br /&gt;
| [[Trailblazers]] (Update 3) || 2025-04-30 || System-economy rework: economy development, population growth, and automatic construction linking within a system.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Operations]] [[Field Procedures]] [[Trailblazers]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Background_Simulation&amp;diff=915</id>
		<title>Background Simulation</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Background_Simulation&amp;diff=915"/>
		<updated>2026-08-18T13:17:34Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Mark as noindex,follow: true placeholder, no individual articles exist yet (SEO pass 2026-08-19)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both|noindex=yes}}&lt;br /&gt;
&lt;br /&gt;
Index for the Background Simulation (BGS) — faction influence and states — see [[:Category:Background Simulation]].&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
No individual Background Simulation articles exist yet.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Powerplay]] [[Field Procedures]] [[Tools and Resources]]}}&lt;br /&gt;
[[Category:Background Simulation]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Article_status&amp;diff=914</id>
		<title>Template:Article status</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Article_status&amp;diff=914"/>
		<updated>2026-08-18T13:17:09Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Add optional noindex= passthrough to {{SEO}}, so marking a placeholder doesn&amp;#039;t need a separate template call&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if:{{{noindex|}}}|{{SEO|noindex={{{noindex}}}}}}}&amp;lt;templatestyles src=&amp;quot;Template:EDFM style/styles.css&amp;quot; /&amp;gt;&amp;lt;div class=&amp;quot;edfm-panel edfm-status edfm-status--{{#switch: {{{status|Needs review}}}&lt;br /&gt;
 | Verified = positive&lt;br /&gt;
 | Partially verified = positive&lt;br /&gt;
 | Needs review = attention&lt;br /&gt;
 | Upcoming = attention&lt;br /&gt;
 | Draft = neutral&lt;br /&gt;
 | Historical = neutral&lt;br /&gt;
 | Legacy only = neutral&lt;br /&gt;
 | #default = attention&lt;br /&gt;
}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-banner&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{#switch: {{{status|Needs review}}}&lt;br /&gt;
 | Verified = &amp;amp;#10003;&lt;br /&gt;
 | Partially verified = &amp;amp;#10003;&lt;br /&gt;
 | Needs review = !&lt;br /&gt;
 | Upcoming = !&lt;br /&gt;
 | Draft = i&lt;br /&gt;
 | Historical = i&lt;br /&gt;
 | Legacy only = i&lt;br /&gt;
 | #default = !&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-banner-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-heading&amp;quot;&amp;gt;{{{status|Needs review}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;edfm-status-message&amp;quot;&amp;gt;{{#switch: {{{status|Needs review}}}&lt;br /&gt;
 | Verified = This article has been checked directly against current gameplay.&lt;br /&gt;
 | Partially verified = Some information in this article has been directly verified; other parts have not.&lt;br /&gt;
 | Needs review = Some information in this article has not yet passed EDFM verification.&lt;br /&gt;
 | Draft = This article is still being written and may be incomplete.&lt;br /&gt;
 | Historical = This article describes a past state of the game, not current gameplay.&lt;br /&gt;
 | Legacy only = This article applies to &#039;&#039;Elite Dangerous: Legacy&#039;&#039;, not the current Live game.&lt;br /&gt;
 | Upcoming = This article describes an announced feature that is not yet released.&lt;br /&gt;
 | #default = Some information in this article has not yet passed EDFM verification.&lt;br /&gt;
}}&amp;lt;/p&amp;gt;{{#if:{{{uncertainty|}}}|&lt;br /&gt;
&amp;lt;p class=&amp;quot;edfm-status-uncertain&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;edfm-status-uncertain-label&amp;quot;&amp;gt;Uncertain:&amp;lt;/span&amp;gt; {{{uncertainty}}}&amp;lt;/p&amp;gt;}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed edfm-status-expand&amp;quot; data-expandtext=&amp;quot;View verification details&amp;quot; data-collapsetext=&amp;quot;Hide verification details&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dl class=&amp;quot;edfm-status-details&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Status&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{status|Needs review}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Last reviewed&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{reviewed|never}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Reviewer&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{reviewer|none}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Game mode&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{mode|Live}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Version coverage&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{version|unspecified}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Source quality&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{source_quality|unassessed}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Known uncertainty&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{uncertainty|none noted}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{legacy_differences|}}}|&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Legacy differences&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{legacy_differences}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{recent_changes|}}}|&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Recent changes&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{recent_changes}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{notes|}}}|&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-status-row&amp;quot;&amp;gt;&amp;lt;dt&amp;gt;Verification notes&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{notes}}}&amp;lt;/dd&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;{{#switch: {{{status|Needs review}}}&lt;br /&gt;
| Verified = [[Category:Verified Articles]]&lt;br /&gt;
| Partially verified = [[Category:Partially Verified Articles]]&lt;br /&gt;
| Needs review = [[Category:Pages Needing Review]]&lt;br /&gt;
| Draft = [[Category:Draft Articles]]&lt;br /&gt;
| Upcoming = [[Category:Upcoming Content]]&lt;br /&gt;
| Legacy only = [[Category:Legacy-Only Content]]&lt;br /&gt;
| #default =&lt;br /&gt;
}}{{#switch: {{{mode|Live}}}&lt;br /&gt;
| Legacy = [[Category:Legacy Content]]&lt;br /&gt;
| Historical = [[Category:Historical Content]]&lt;br /&gt;
| #default =&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Place at the top of any gameplay-facing article. Status must be text, not&lt;br /&gt;
colour alone — see [[Elite Dangerous Field Manual:Verification Policy]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Compact maintenance-banner form&#039;&#039;&#039; (2026-08-08 second revision): the&lt;br /&gt;
always-visible state is now a short banner — a status icon, the status&lt;br /&gt;
word itself (no mode/version appended to it), one standard sentence for&lt;br /&gt;
that status, and a concise &amp;quot;Uncertain: ...&amp;quot; line &#039;&#039;&#039;only when&lt;br /&gt;
&amp;lt;code&amp;gt;|uncertainty=&amp;lt;/code&amp;gt; is actually supplied&#039;&#039;&#039;. Everything else&lt;br /&gt;
(Reviewer, Game mode, Version coverage, Source quality, the full Known&lt;br /&gt;
uncertainty text again for the record, and the optional Legacy&lt;br /&gt;
differences/Recent changes/Verification notes fields) sits behind the&lt;br /&gt;
same native &amp;lt;code&amp;gt;mw-collapsible&amp;lt;/code&amp;gt; &amp;quot;View verification details&amp;quot;&lt;br /&gt;
toggle as before (still core MediaWiki, still no new dependency). No&lt;br /&gt;
parameters were removed or renamed from the previous revision — this is a&lt;br /&gt;
rendering change only, so every existing call site upgrades automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Article status&lt;br /&gt;
 |status=Verified|Partially verified|Needs review|Draft|Historical|Legacy only|Upcoming&lt;br /&gt;
 |mode=Live|Legacy|Both|Historical&lt;br /&gt;
 |version=&lt;br /&gt;
 |reviewed=&lt;br /&gt;
 |reviewer=&lt;br /&gt;
 |source_quality=&lt;br /&gt;
 |uncertainty=&lt;br /&gt;
 |legacy_differences= (optional)&lt;br /&gt;
 |recent_changes= (optional)&lt;br /&gt;
 |notes= (optional — extra verification detail beyond the standard fields)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep &amp;lt;code&amp;gt;uncertainty&amp;lt;/code&amp;gt; genuinely concise (a short list of what&#039;s&lt;br /&gt;
uncertain, e.g. &amp;quot;discovery, invitation, and complete blueprint&lt;br /&gt;
availability&amp;quot;) — it now renders directly in the banner, not just inside&lt;br /&gt;
the details panel, so a long paragraph there defeats the point. If a&lt;br /&gt;
claim needs a longer explanation, put that explanation in the article&lt;br /&gt;
body (near the claim itself, using {{tl|Unverified claim}}/{{tl|Estimated&lt;br /&gt;
information}}/{{tl|Community observation}} or a plain&lt;br /&gt;
&amp;lt;code&amp;gt;.edfm-inline-flag&amp;lt;/code&amp;gt; note) rather than in this template.&lt;br /&gt;
&lt;br /&gt;
Status tiers (left accent + icon colour, from&lt;br /&gt;
[[Template:EDFM style/styles.css]]): &#039;&#039;&#039;positive&#039;&#039;&#039; (cyan, restrained —&lt;br /&gt;
Verified, Partially verified), &#039;&#039;&#039;attention&#039;&#039;&#039; (orange — Needs review,&lt;br /&gt;
Upcoming), &#039;&#039;&#039;neutral&#039;&#039;&#039; (dim — Draft, Historical, Legacy only). Draft&lt;br /&gt;
moved from the attention tier to the neutral tier in this revision: an&lt;br /&gt;
in-progress article isn&#039;t a verification concern in the same way an&lt;br /&gt;
unchecked or announced-but-unreleased one is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;|legacy_differences=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;|recent_changes=&amp;lt;/code&amp;gt;, and&lt;br /&gt;
&amp;lt;code&amp;gt;|notes=&amp;lt;/code&amp;gt; are optional — omit them and nothing renders, same&lt;br /&gt;
&amp;lt;code&amp;gt;{{#if:}}&amp;lt;/code&amp;gt; pattern as every other optional field here. Use&lt;br /&gt;
&amp;lt;code&amp;gt;legacy_differences&amp;lt;/code&amp;gt; when a fact on this article genuinely&lt;br /&gt;
differs between Live and Legacy (routine, can apply at any status);&lt;br /&gt;
reserve &amp;lt;code&amp;gt;status=Legacy only&amp;lt;/code&amp;gt; itself for articles that are&lt;br /&gt;
entirely about a Legacy-exclusive mechanic with no Live counterpart at&lt;br /&gt;
all — see [[Elite Dangerous Field Manual:Verification Policy]] for the&lt;br /&gt;
full distinction. &amp;lt;code&amp;gt;status=Upcoming&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;status=Legacy&lt;br /&gt;
only&amp;lt;/code&amp;gt; populate their own maintenance categories&lt;br /&gt;
([[:Category:Upcoming Content]], [[:Category:Legacy-Only Content]]).&lt;br /&gt;
&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:SEO&amp;diff=912</id>
		<title>Template:SEO</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:SEO&amp;diff=912"/>
		<updated>2026-08-18T13:16:31Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Add editor-facing SEO template (title/description/noindex overrides), wraps the new {{#seo:}} parser function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template lets an editor set this page&#039;s own SEO title, meta description,&lt;br /&gt;
and/or mark it as a placeholder that shouldn&#039;t be indexed yet, without writing&lt;br /&gt;
any HTML or raw parser-function syntax.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; (all parameters optional, use only what you need):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{SEO&lt;br /&gt;
 |title       = Custom search-result/browser-tab title&lt;br /&gt;
 |description = Custom meta description (aim for roughly 150-160 characters)&lt;br /&gt;
 |noindex     = yes&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place it near the top of the article, above or below {{tl|Article status}}.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re marking a page as a placeholder, {{tl|Article status}} itself now&lt;br /&gt;
also accepts a &amp;lt;code&amp;gt;noindex=yes&amp;lt;/code&amp;gt; parameter directly, which is usually&lt;br /&gt;
more convenient than adding a separate {{SEO}} call just for that one thing.&lt;br /&gt;
&lt;br /&gt;
When no {{SEO|title=}}/{{SEO|description=}} is given, EDFM generates a&lt;br /&gt;
plain mechanical fallback automatically (page name + site name; &amp;quot;X reference&lt;br /&gt;
for Elite Dangerous commanders...&amp;quot;) -- set them explicitly only when a more&lt;br /&gt;
specific, human-written title or description would genuinely help search&lt;br /&gt;
results or social shares. Most pages don&#039;t need this template at all.&lt;br /&gt;
&lt;br /&gt;
See [[Elite Dangerous Field Manual:Editorial Policy]] for EDFM&#039;s general&lt;br /&gt;
content standards.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#seo:{{#if:{{{title|}}}|title={{{title}}}|}}|{{#if:{{{description|}}}|description={{{description}}}|}}|{{#if:{{{noindex|}}}|noindex={{{noindex}}}|}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Module:Engineers&amp;diff=911</id>
		<title>Module:Engineers</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Module:Engineers&amp;diff=911"/>
		<updated>2026-08-18T13:02:20Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Repair content model (previous save incorrectly wrote this as wikitext) + add p.count()&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:Engineers&lt;br /&gt;
-- Reads canonical Engineer facts from Module:Data/Engineers/&amp;lt;Name&amp;gt; (JSON&lt;br /&gt;
-- content-model pages) and formats them for three consumers: an Engineer&#039;s&lt;br /&gt;
-- own infobox (via Template:Engineer infobox), List of Engineers, and&lt;br /&gt;
-- Engineer Capability Comparison. One record, one module, three consumers&lt;br /&gt;
-- -- see Elite Dangerous Field Manual:Adding Structured Data.&lt;br /&gt;
--&lt;br /&gt;
-- Adding a new engineer: create Module:Data/Engineers/&amp;lt;Name&amp;gt; in the same&lt;br /&gt;
-- shape as the existing four, then append the name to&lt;br /&gt;
-- Module:Data/Engineers/index. Don&#039;t edit this module unless you&#039;re&lt;br /&gt;
-- changing the schema itself.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Field order/labels shared by both the JSON-backed path and the manual&lt;br /&gt;
-- fallback path, so {{Engineer infobox|system=...|facility=...}} produces&lt;br /&gt;
-- the same shape of infobox whether or not a JSON record exists yet.&lt;br /&gt;
local FIELD_ORDER = {&lt;br /&gt;
	{ key = &#039;engineer_type&#039;, label = &#039;Engineer type&#039;, group = &#039;ENGINEER&#039; },&lt;br /&gt;
	{ key = &#039;system&#039;, label = &#039;System&#039; },&lt;br /&gt;
	{ key = &#039;body&#039;, label = &#039;Body&#039; },&lt;br /&gt;
	{ key = &#039;facility&#039;, label = &#039;Facility&#039; },&lt;br /&gt;
	{ key = &#039;region&#039;, label = &#039;Region&#039; },&lt;br /&gt;
	{ key = &#039;allegiance&#039;, label = &#039;Allegiance&#039; },&lt;br /&gt;
	{ key = &#039;specialties&#039;, label = &#039;Specialties&#039; },&lt;br /&gt;
	{ key = &#039;max_grade&#039;, label = &#039;Maximum grade&#039; },&lt;br /&gt;
	{ key = &#039;prerequisite_engineer&#039;, label = &#039;Prerequisite&#039;, group = &#039;ACCESS&#039; },&lt;br /&gt;
	{ key = &#039;discovery_requirement&#039;, label = &#039;Discovery&#039; },&lt;br /&gt;
	{ key = &#039;invitation_requirement&#039;, label = &#039;Invitation&#039; },&lt;br /&gt;
	{ key = &#039;unlock_requirement&#039;, label = &#039;Unlock&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function loadRecord(name)&lt;br /&gt;
	local title = mw.title.new(&#039;Data/Engineers/&#039; .. name, &#039;Module&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local ok, data = pcall(mw.text.jsonDecode, content)&lt;br /&gt;
	if not ok then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadIndex()&lt;br /&gt;
	local title = mw.title.new(&#039;Data/Engineers/index&#039;, &#039;Module&#039;)&lt;br /&gt;
	local content = title and title:getContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	local ok, data = pcall(mw.text.jsonDecode, content)&lt;br /&gt;
	if not ok then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function joinSpecialties(d)&lt;br /&gt;
	if d.specialties and type(d.specialties) == &#039;table&#039; then&lt;br /&gt;
		return table.concat(d.specialties, &#039;, &#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return d.specialties&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Builds a plain { key = displayValue } table from either a JSON record&lt;br /&gt;
-- or manually-supplied template args, using the same FIELD_ORDER either&lt;br /&gt;
-- way.&lt;br /&gt;
local function buildFields(d, pargs)&lt;br /&gt;
	local fields = {}&lt;br /&gt;
	if d then&lt;br /&gt;
		for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
			fields[f.key] = d[f.key]&lt;br /&gt;
		end&lt;br /&gt;
		fields.specialties = joinSpecialties(d)&lt;br /&gt;
		if d.prerequisite_engineer then&lt;br /&gt;
			local note = d.prerequisite_engineer_note and (&#039; &#039; .. d.prerequisite_engineer_note) or &#039;&#039;&lt;br /&gt;
			fields.prerequisite_engineer = &#039;[[&#039; .. d.prerequisite_engineer .. &#039;]]&#039; .. note&lt;br /&gt;
		else&lt;br /&gt;
			fields.prerequisite_engineer = d.prerequisite_engineer_display or &#039;None — available from the start&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
			fields[f.key] = pargs[f.key]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Infobox pages may override the structured data directly in the article&lt;br /&gt;
	-- template call. This keeps the sidebar editable from page edit/source&lt;br /&gt;
	-- while still letting JSON records provide defaults and power comparison&lt;br /&gt;
	-- tables. Empty parameters do not erase structured defaults.&lt;br /&gt;
	for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
		if pargs[f.key] ~= nil and pargs[f.key] ~= &#039;&#039; then&lt;br /&gt;
			fields[f.key] = pargs[f.key]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return fields&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|infobox}}, called from Template:Engineer infobox.&lt;br /&gt;
-- Falls back to whatever manual named params were passed if no JSON&lt;br /&gt;
-- record exists yet, so the wrapper template is safe to adopt one page at&lt;br /&gt;
-- a time rather than needing every engineer&#039;s data backfilled first.&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local pargs = parent and parent.args or {}&lt;br /&gt;
	local name = pargs.name or mw.title.getCurrentTitle().text&lt;br /&gt;
	local d = loadRecord(name)&lt;br /&gt;
	local fields = buildFields(d, pargs)&lt;br /&gt;
&lt;br /&gt;
	local image = pargs.image&lt;br /&gt;
	if ( image == nil or image == &#039;&#039; ) and d and d.image then&lt;br /&gt;
		image = d.image&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args = { name = name, image = image }&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
		local value = fields[f.key]&lt;br /&gt;
		if value ~= nil and value ~= &#039;&#039; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if f.group then&lt;br /&gt;
				args[&#039;group&#039; .. n] = f.group&lt;br /&gt;
			end&lt;br /&gt;
			args[&#039;label&#039; .. n] = f.label&lt;br /&gt;
			args[&#039;row&#039; .. n] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate{ title = &#039;Infobox&#039;, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|list}}, used by List of Engineers.&lt;br /&gt;
function p.list()&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for _, name in ipairs(loadIndex()) do&lt;br /&gt;
		local d = loadRecord(name)&lt;br /&gt;
		if d then&lt;br /&gt;
			table.insert(rows, string.format(&lt;br /&gt;
				&#039;|-\n| [[%s]] || %s || %s || %s&#039;,&lt;br /&gt;
				d.name,&lt;br /&gt;
				d.system or &#039;—&#039;,&lt;br /&gt;
				joinSpecialties(d) or &#039;—&#039;,&lt;br /&gt;
				d.max_grade or &#039;Not yet confirmed&#039;&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;{| class=&amp;quot;wikitable sortable&amp;quot;\n! Engineer !! System !! Specialties !! Maximum grade\n&#039;&lt;br /&gt;
		.. table.concat(rows, &#039;\n&#039;) .. &#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|comparison}}, used by Engineer Capability Comparison.&lt;br /&gt;
function p.comparison()&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for _, name in ipairs(loadIndex()) do&lt;br /&gt;
		local d = loadRecord(name)&lt;br /&gt;
		if d then&lt;br /&gt;
			local prereq = d.prerequisite_engineer and (&#039;[[&#039; .. d.prerequisite_engineer .. &#039;]]&#039;) or ( d.prerequisite_engineer_display or &#039;None&#039; )&lt;br /&gt;
			table.insert(rows, string.format(&lt;br /&gt;
				&#039;|-\n| [[%s]] || %s || %s || %s&#039;,&lt;br /&gt;
				d.name,&lt;br /&gt;
				joinSpecialties(d) or &#039;—&#039;,&lt;br /&gt;
				prereq,&lt;br /&gt;
				d.unlock_requirement or &#039;Not yet confirmed&#039;&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;{| class=&amp;quot;wikitable sortable&amp;quot;\n! Engineer !! Specialties !! Prerequisite Engineer !! Unlock requirement\n&#039;&lt;br /&gt;
		.. table.concat(rows, &#039;\n&#039;) .. &#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|count}}, returns how many Engineers currently have a&lt;br /&gt;
-- canonical JSON record in Module:Data/Engineers/index -- used so pages that&lt;br /&gt;
-- cite this number (e.g. List of Engineers&#039; {{Article status}} uncertainty&lt;br /&gt;
-- text) stay correct automatically as records are added, instead of a&lt;br /&gt;
-- hand-typed number silently going stale.&lt;br /&gt;
function p.count()&lt;br /&gt;
	return tostring(#loadIndex())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=List_of_Engineers&amp;diff=910</id>
		<title>List of Engineers</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=List_of_Engineers&amp;diff=910"/>
		<updated>2026-08-18T13:01:21Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Derive the canonical-record count from Module:Engineers instead of a hardcoded number (was stale: said 4, actually 5)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Data|deck=A structured-data proof of concept: an Engineer list generated from the same canonical JSON records used on each Engineer&#039;s own infobox.}}&lt;br /&gt;
{{Article status|status=Draft|mode=Both|version=Content architecture phase, 2026-08-07|reviewed=2026-08-07|reviewer=Structural backfill from already-published Engineer pages, not new research|source_quality=Every value here is copied from the corresponding Engineer&#039;s own already-sourced article — see that article&#039;s Sources section for citations|uncertainty=Only {{#invoke:Engineers|count}} of the site&#039;s 38 Engineers currently have a canonical data record; the rest aren&#039;t listed here yet}}&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
This list is a working proof of concept for EDFM&#039;s structured-data system, not yet the complete roster. It&#039;s generated live from [[Module:Data/Engineers/index|Module:Data/Engineers]] (one JSON record per Engineer, read by [[Module:Engineers]]) rather than written by hand — the same data backs each listed Engineer&#039;s own infobox, so the two can never quietly drift out of sync. For the complete, hand-maintained roster of all 38 Engineers, see [[Engineers]].&lt;br /&gt;
&lt;br /&gt;
== Engineers with a data record ==&lt;br /&gt;
{{#invoke:Engineers|list}}&lt;br /&gt;
&lt;br /&gt;
Adding an Engineer here means creating its JSON record and appending it to the index — see [[Elite Dangerous Field Manual:Adding Structured Data]], not editing this page directly.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Engineers]] [[Engineer Capability Comparison]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;br /&gt;
[[Category:Engineers]]&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Module:Engineers&amp;diff=909</id>
		<title>Module:Engineers</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Module:Engineers&amp;diff=909"/>
		<updated>2026-08-18T13:01:14Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Add p.count() so the canonical-record count on List of Engineers is derived, not hardcoded&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:Engineers&lt;br /&gt;
-- Reads canonical Engineer facts from Module:Data/Engineers/&amp;lt;Name&amp;gt; (JSON&lt;br /&gt;
-- content-model pages) and formats them for three consumers: an Engineer&#039;s&lt;br /&gt;
-- own infobox (via Template:Engineer infobox), List of Engineers, and&lt;br /&gt;
-- Engineer Capability Comparison. One record, one module, three consumers&lt;br /&gt;
-- -- see Elite Dangerous Field Manual:Adding Structured Data.&lt;br /&gt;
--&lt;br /&gt;
-- Adding a new engineer: create Module:Data/Engineers/&amp;lt;Name&amp;gt; in the same&lt;br /&gt;
-- shape as the existing four, then append the name to&lt;br /&gt;
-- Module:Data/Engineers/index. Don&#039;t edit this module unless you&#039;re&lt;br /&gt;
-- changing the schema itself.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Field order/labels shared by both the JSON-backed path and the manual&lt;br /&gt;
-- fallback path, so {{Engineer infobox|system=...|facility=...}} produces&lt;br /&gt;
-- the same shape of infobox whether or not a JSON record exists yet.&lt;br /&gt;
local FIELD_ORDER = {&lt;br /&gt;
	{ key = &#039;engineer_type&#039;, label = &#039;Engineer type&#039;, group = &#039;ENGINEER&#039; },&lt;br /&gt;
	{ key = &#039;system&#039;, label = &#039;System&#039; },&lt;br /&gt;
	{ key = &#039;body&#039;, label = &#039;Body&#039; },&lt;br /&gt;
	{ key = &#039;facility&#039;, label = &#039;Facility&#039; },&lt;br /&gt;
	{ key = &#039;region&#039;, label = &#039;Region&#039; },&lt;br /&gt;
	{ key = &#039;allegiance&#039;, label = &#039;Allegiance&#039; },&lt;br /&gt;
	{ key = &#039;specialties&#039;, label = &#039;Specialties&#039; },&lt;br /&gt;
	{ key = &#039;max_grade&#039;, label = &#039;Maximum grade&#039; },&lt;br /&gt;
	{ key = &#039;prerequisite_engineer&#039;, label = &#039;Prerequisite&#039;, group = &#039;ACCESS&#039; },&lt;br /&gt;
	{ key = &#039;discovery_requirement&#039;, label = &#039;Discovery&#039; },&lt;br /&gt;
	{ key = &#039;invitation_requirement&#039;, label = &#039;Invitation&#039; },&lt;br /&gt;
	{ key = &#039;unlock_requirement&#039;, label = &#039;Unlock&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function loadRecord(name)&lt;br /&gt;
	local title = mw.title.new(&#039;Data/Engineers/&#039; .. name, &#039;Module&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local ok, data = pcall(mw.text.jsonDecode, content)&lt;br /&gt;
	if not ok then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadIndex()&lt;br /&gt;
	local title = mw.title.new(&#039;Data/Engineers/index&#039;, &#039;Module&#039;)&lt;br /&gt;
	local content = title and title:getContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	local ok, data = pcall(mw.text.jsonDecode, content)&lt;br /&gt;
	if not ok then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function joinSpecialties(d)&lt;br /&gt;
	if d.specialties and type(d.specialties) == &#039;table&#039; then&lt;br /&gt;
		return table.concat(d.specialties, &#039;, &#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return d.specialties&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Builds a plain { key = displayValue } table from either a JSON record&lt;br /&gt;
-- or manually-supplied template args, using the same FIELD_ORDER either&lt;br /&gt;
-- way.&lt;br /&gt;
local function buildFields(d, pargs)&lt;br /&gt;
	local fields = {}&lt;br /&gt;
	if d then&lt;br /&gt;
		for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
			fields[f.key] = d[f.key]&lt;br /&gt;
		end&lt;br /&gt;
		fields.specialties = joinSpecialties(d)&lt;br /&gt;
		if d.prerequisite_engineer then&lt;br /&gt;
			local note = d.prerequisite_engineer_note and (&#039; &#039; .. d.prerequisite_engineer_note) or &#039;&#039;&lt;br /&gt;
			fields.prerequisite_engineer = &#039;[[&#039; .. d.prerequisite_engineer .. &#039;]]&#039; .. note&lt;br /&gt;
		else&lt;br /&gt;
			fields.prerequisite_engineer = d.prerequisite_engineer_display or &#039;None — available from the start&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
			fields[f.key] = pargs[f.key]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Infobox pages may override the structured data directly in the article&lt;br /&gt;
	-- template call. This keeps the sidebar editable from page edit/source&lt;br /&gt;
	-- while still letting JSON records provide defaults and power comparison&lt;br /&gt;
	-- tables. Empty parameters do not erase structured defaults.&lt;br /&gt;
	for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
		if pargs[f.key] ~= nil and pargs[f.key] ~= &#039;&#039; then&lt;br /&gt;
			fields[f.key] = pargs[f.key]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return fields&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|infobox}}, called from Template:Engineer infobox.&lt;br /&gt;
-- Falls back to whatever manual named params were passed if no JSON&lt;br /&gt;
-- record exists yet, so the wrapper template is safe to adopt one page at&lt;br /&gt;
-- a time rather than needing every engineer&#039;s data backfilled first.&lt;br /&gt;
function p.infobox(frame)&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local pargs = parent and parent.args or {}&lt;br /&gt;
	local name = pargs.name or mw.title.getCurrentTitle().text&lt;br /&gt;
	local d = loadRecord(name)&lt;br /&gt;
	local fields = buildFields(d, pargs)&lt;br /&gt;
&lt;br /&gt;
	local image = pargs.image&lt;br /&gt;
	if ( image == nil or image == &#039;&#039; ) and d and d.image then&lt;br /&gt;
		image = d.image&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args = { name = name, image = image }&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for _, f in ipairs(FIELD_ORDER) do&lt;br /&gt;
		local value = fields[f.key]&lt;br /&gt;
		if value ~= nil and value ~= &#039;&#039; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if f.group then&lt;br /&gt;
				args[&#039;group&#039; .. n] = f.group&lt;br /&gt;
			end&lt;br /&gt;
			args[&#039;label&#039; .. n] = f.label&lt;br /&gt;
			args[&#039;row&#039; .. n] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:expandTemplate{ title = &#039;Infobox&#039;, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|list}}, used by List of Engineers.&lt;br /&gt;
function p.list()&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for _, name in ipairs(loadIndex()) do&lt;br /&gt;
		local d = loadRecord(name)&lt;br /&gt;
		if d then&lt;br /&gt;
			table.insert(rows, string.format(&lt;br /&gt;
				&#039;|-\n| [[%s]] || %s || %s || %s&#039;,&lt;br /&gt;
				d.name,&lt;br /&gt;
				d.system or &#039;—&#039;,&lt;br /&gt;
				joinSpecialties(d) or &#039;—&#039;,&lt;br /&gt;
				d.max_grade or &#039;Not yet confirmed&#039;&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;{| class=&amp;quot;wikitable sortable&amp;quot;\n! Engineer !! System !! Specialties !! Maximum grade\n&#039;&lt;br /&gt;
		.. table.concat(rows, &#039;\n&#039;) .. &#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|comparison}}, used by Engineer Capability Comparison.&lt;br /&gt;
function p.comparison()&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	for _, name in ipairs(loadIndex()) do&lt;br /&gt;
		local d = loadRecord(name)&lt;br /&gt;
		if d then&lt;br /&gt;
			local prereq = d.prerequisite_engineer and (&#039;[[&#039; .. d.prerequisite_engineer .. &#039;]]&#039;) or ( d.prerequisite_engineer_display or &#039;None&#039; )&lt;br /&gt;
			table.insert(rows, string.format(&lt;br /&gt;
				&#039;|-\n| [[%s]] || %s || %s || %s&#039;,&lt;br /&gt;
				d.name,&lt;br /&gt;
				joinSpecialties(d) or &#039;—&#039;,&lt;br /&gt;
				prereq,&lt;br /&gt;
				d.unlock_requirement or &#039;Not yet confirmed&#039;&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;{| class=&amp;quot;wikitable sortable&amp;quot;\n! Engineer !! Specialties !! Prerequisite Engineer !! Unlock requirement\n&#039;&lt;br /&gt;
		.. table.concat(rows, &#039;\n&#039;) .. &#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- {{#invoke:Engineers|count}}, returns how many Engineers currently have a&lt;br /&gt;
-- canonical JSON record in Module:Data/Engineers/index -- used so pages that&lt;br /&gt;
-- cite this number (e.g. List of Engineers&#039; {{Article status}} uncertainty&lt;br /&gt;
-- text) stay correct automatically as records are added, instead of a&lt;br /&gt;
-- hand-typed number silently going stale.&lt;br /&gt;
function p.count()&lt;br /&gt;
	return tostring(#loadIndex())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Grouppage-staff&amp;diff=908</id>
		<title>MediaWiki:Grouppage-staff</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Grouppage-staff&amp;diff=908"/>
		<updated>2026-08-18T03:17:18Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Point staff group page reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elite Dangerous Field Manual:EDFM Staff&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-staff-member&amp;diff=907</id>
		<title>MediaWiki:Group-staff-member</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-staff-member&amp;diff=907"/>
		<updated>2026-08-18T03:17:18Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Add staff group member display name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EDFM Staff Member&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-staff&amp;diff=906</id>
		<title>MediaWiki:Group-staff</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-staff&amp;diff=906"/>
		<updated>2026-08-18T03:17:17Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Add staff group display name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;EDFM Staff&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Engineering_Architecture&amp;diff=904</id>
		<title>Elite Dangerous Field Manual:Engineering Architecture</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Engineering_Architecture&amp;diff=904"/>
		<updated>2026-08-18T01:06:25Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Remove stray AI-authorship reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Foundation pass only (2026-08-07) — no verified game data (blueprint stats, unlock requirements, material costs, engineer locations) has been added yet. Everything on the pages this describes is page structure, templates, categories, and cross-linking, built so a future pass can populate real content without redesigning anything. This page is the &amp;quot;how it actually works&amp;quot; reference for whoever does that next pass.&lt;br /&gt;
&lt;br /&gt;
== Why flat page names, no &amp;quot;Engineering/...&amp;quot; subpaths ==&lt;br /&gt;
Checked before deciding: &amp;lt;code&amp;gt;$wgNamespacesWithSubpages&amp;lt;/code&amp;gt; is not set in LocalSettings.php, so the main article namespace gets MediaWiki&#039;s default (subpages disabled there) — a page titled &amp;lt;code&amp;gt;Engineering/Blueprints&amp;lt;/code&amp;gt; would just be a literal title containing a slash, with none of the automatic parent-link/breadcrumb behaviour subpages provide elsewhere on this wiki. (Template: namespace has subpages on by default — that&#039;s why [[Template:EDFM style/styles.css]] and [[Template:Resource card/styles.css]] work the way they do; it&#039;s namespace-specific, not a site-wide convention.) Every existing content page uses a plain, flat, human-readable title ([[Tools and Resources]], [[Colonisation]], [[Operations]], ...). Engineering pages match that exactly: [[Engineering]], [[Engineers]], [[Engineering Blueprints]], [[Experimental Effects]], [[Engineering Materials]], [[Engineer Unlock Guide]], and individual articles like [[Broo Tarquin]] / [[Overcharged]] / [[Thermal Vent]] / [[Multi-Cannon]] — no prefixes, no slashes.&lt;br /&gt;
&lt;br /&gt;
== Page types and where they live ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Title !! Status this pass&lt;br /&gt;
|-&lt;br /&gt;
| Engineering hub || [[Engineering]] || Redesigned (pre-existing placeholder)&lt;br /&gt;
|-&lt;br /&gt;
| Engineers directory || [[Engineers]] || New&lt;br /&gt;
|-&lt;br /&gt;
| Blueprints browse hub || [[Engineering Blueprints]] || New&lt;br /&gt;
|-&lt;br /&gt;
| Experimental Effects browse hub || [[Experimental Effects]] || New&lt;br /&gt;
|-&lt;br /&gt;
| Materials landing page || [[Engineering Materials]] || New&lt;br /&gt;
|-&lt;br /&gt;
| Unlock walkthroughs index || [[Engineer Unlock Guide]] || New, minimal&lt;br /&gt;
|-&lt;br /&gt;
| Example Engineer article || [[Broo Tarquin]] || New, demo/placeholder&lt;br /&gt;
|-&lt;br /&gt;
| Example blueprint article || [[Overcharged]] || New, demo/placeholder&lt;br /&gt;
|-&lt;br /&gt;
| Example Experimental Effect article || [[Thermal Vent]] || New, demo/placeholder&lt;br /&gt;
|-&lt;br /&gt;
| Example module article || [[Multi-Cannon]] || New, demo/placeholder&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;One page per blueprint/effect, covering every module it applies to.&#039;&#039;&#039; [[Overcharged]] is a single page with a &amp;quot;Compatible Modules&amp;quot; section listing every module it can be applied to, not a separate &amp;quot;Overcharged (Multi-Cannon)&amp;quot; / &amp;quot;Overcharged (Cannon)&amp;quot; page per module. This is the core &amp;quot;avoid duplicating data&amp;quot; mechanism the brief asked for — see [[Template:New blueprint page]]&#039;s own usage notes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Module pages are shared with [[Ships and Equipment]], not duplicated.&#039;&#039;&#039; Ships and Equipment already claims &amp;lt;code&amp;gt;Category:Modules&amp;lt;/code&amp;gt; for general module articles (specs). A module gets exactly one page covering both general specs and its Engineering options — [[Multi-Cannon]] demonstrates this: it&#039;s a &amp;lt;code&amp;gt;Category:Modules&amp;lt;/code&amp;gt; page with an &amp;quot;Engineering&amp;quot; section (see [[Template:New engineering module page]]), not a second engineering-only page competing with a future general one. If a general module page already exists when someone&#039;s ready to add its Engineering section, that section gets appended to the existing page.&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&#039;&#039;&#039;Extended (not duplicated):&#039;&#039;&#039;&lt;br /&gt;
* {{tl|Infobox}} — 6 rows → 12. No CSS change needed: &amp;lt;code&amp;gt;.edfm-infobox-row&amp;lt;/code&amp;gt; in Common.css isn&#039;t numbered per-row, so more pairs &amp;quot;just work.&amp;quot; Used for the Engineer infobox (~11 fields) and available for future ship/module infoboxes too.&lt;br /&gt;
* {{tl|Related articles}} — gained an optional &amp;lt;code&amp;gt;label=&amp;lt;/code&amp;gt; parameter (default unchanged, so all pre-existing pages using it are unaffected). Lets the exact same tile component serve as a hub page&#039;s primary &amp;quot;browse&amp;quot; navigation cards, not just a &amp;quot;related articles&amp;quot; footer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New, all reusing existing CSS (&amp;lt;code&amp;gt;.edfm-related&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.edfm-related-links&amp;lt;/code&amp;gt; tile styling, external-link colours, &amp;lt;code&amp;gt;.wikitable&amp;lt;/code&amp;gt; styling) — zero changes to Common.css or [[Template:EDFM style/styles.css]] this pass:&#039;&#039;&#039;&lt;br /&gt;
* {{tl|Engineering nav}} — fixed 6-link bottom cross-navigation, wraps {{tl|Related articles}} with a custom label. Placed on every Engineering page so a reader never has to backtrack through the Engineering hub to move between siblings.&lt;br /&gt;
* {{tl|Unlock chain}} — renders a verified Engineer prerequisite sequence (Engineer A → Engineer B → Engineer C) by wrapping each linked name in its own tile span. &#039;&#039;&#039;Not used on any page yet&#039;&#039;&#039; — no unlock chain has been verified. Its own docs say not to invent one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;New, subst-only skeletons (not live-transcluded — see each one&#039;s own usage docs for exactly how to use it):&#039;&#039;&#039;&lt;br /&gt;
* {{tl|New engineer page}}&lt;br /&gt;
* {{tl|New blueprint page}}&lt;br /&gt;
* {{tl|New experimental effect page}}&lt;br /&gt;
* {{tl|New engineering module page}}&lt;br /&gt;
&lt;br /&gt;
A future editor creates a new article by making the page and typing e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{subst:New engineer page}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; as the first edit, then filling in the placeholders. Subst rather than live transclusion so every resulting article is normal, independently editable wikitext with no ongoing dependency on the skeleton template.&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
* [[:Category:Engineering]] (pre-existing)&lt;br /&gt;
** [[:Category:Engineers]]&lt;br /&gt;
** [[:Category:Engineering Blueprints]]&lt;br /&gt;
** [[:Category:Experimental Effects]]&lt;br /&gt;
** [[:Category:Engineering Materials]]&lt;br /&gt;
*** [[:Category:Raw Materials]]&lt;br /&gt;
*** [[:Category:Manufactured Materials]]&lt;br /&gt;
*** [[:Category:Encoded Materials]]&lt;br /&gt;
** [[:Category:Weapon Engineering]]&lt;br /&gt;
** [[:Category:Core Internal Engineering]]&lt;br /&gt;
** [[:Category:Optional Internal Engineering]]&lt;br /&gt;
** [[:Category:Utility Engineering]]&lt;br /&gt;
&lt;br /&gt;
The four module-type categories (Weapon / Core Internal / Optional Internal / Utility Engineering) tag both module pages and, once written, blueprint pages, by which broad module type they relate to — they&#039;re children of Engineering directly (not of Engineering Blueprints) since they apply to modules too, not just blueprints.&lt;br /&gt;
&lt;br /&gt;
Every new category got a short one-line description matching the existing style ([[:Category:Colonisation]], [[:Category:Comparisons]], etc.), not left empty the way [[:Category:Templates]] currently is.&lt;br /&gt;
&lt;br /&gt;
== Cross-linking: what&#039;s real vs. what&#039;s deliberately not there yet ==&lt;br /&gt;
Navigational cross-links (hub → demo page, demo page → hub, the {{tl|Engineering nav}} footer, &amp;quot;see X for an example of this page type&amp;quot;) are live everywhere — that&#039;s site architecture, not a game-fact claim.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Data cross-links (which Engineer offers which blueprint at which grade, which modules a blueprint/effect applies to, unlock prerequisites) are deliberately NOT populated between the four demo pages, even where it would have been easy to fill in from general knowledge.&#039;&#039;&#039; Every data table (Grade Comparison, Available Engineering, Engineers, Compatible Modules/Blueprints/Effects) is either fully empty with a &amp;quot;to be added&amp;quot; placeholder row, or explicitly says a claim hasn&#039;t been verified yet. This was a deliberate choice, not an oversight — the brief drew a hard line against inventing or half-confirming unlock requirements, blueprint statistics, or compatibility during this pass, and the safest way to honour &amp;quot;we will populate verified game information in a later pass&amp;quot; was to apply that line to every data table uniformly, not just the ones explicitly named in the brief.&lt;br /&gt;
&lt;br /&gt;
== Adding real content later ==&lt;br /&gt;
# Verify the fact against the live game (or a citable source) first — per [[Elite Dangerous Field Manual:Editorial Policy]], same standard as everywhere else on this wiki.&lt;br /&gt;
# Use the matching subst skeleton for a brand new page, or edit an existing placeholder page (all of them are already tagged &amp;lt;code&amp;gt;status=Draft&amp;lt;/code&amp;gt; and listed on [[Elite Dangerous Field Manual:Pages Needing Review]]).&lt;br /&gt;
# Fill in real data tables/infobox fields, replacing &amp;quot;to be added&amp;quot; — don&#039;t leave stale placeholder text next to real data in the same table.&lt;br /&gt;
# Only use {{tl|Unlock chain}} once a prerequisite relationship is confirmed.&lt;br /&gt;
# Update the page&#039;s {{tl|Article status}} from Draft toward Needs review once populated, per the site&#039;s normal verification workflow.&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Adding_an_Image&amp;diff=903</id>
		<title>Elite Dangerous Field Manual:Adding an Image</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Adding_an_Image&amp;diff=903"/>
		<updated>2026-08-18T01:06:25Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: uploads are open to all registered accounts, registration is open&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to add a screenshot or original image to an EDFM article.&lt;br /&gt;
&lt;br /&gt;
== Current access ==&lt;br /&gt;
Uploads are enabled for all registered accounts (PNG/JPEG/WebP, up to 30&amp;amp;nbsp;MB — see [[Elite Dangerous Field Manual:Screenshot Policy]] for the full rules). Create an account (see [[Special:CreateAccount]]) and use [[Special:Upload]] directly.&lt;br /&gt;
&lt;br /&gt;
== Before uploading ==&lt;br /&gt;
Read [[Elite Dangerous Field Manual:Image Use Policy]] in full — in short: only your own original screenshots or diagrams (nothing copied from Fandom, Reddit, Discord, YouTube, other wikis, or &amp;quot;found on Google&amp;quot;), no third-party UI overlays or other players&#039; identifying information without consent, and no AI-generated images presented as real captures.&lt;br /&gt;
&lt;br /&gt;
== Uploading an image ==&lt;br /&gt;
Go to &amp;lt;code&amp;gt;Special:Upload&amp;lt;/code&amp;gt;. EDFM&#039;s upload form asks for what it can&#039;t safely work out on its own, and generates the rest of the file page automatically:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Choose the file.&#039;&#039;&#039;&lt;br /&gt;
# &#039;&#039;&#039;Destination filename&#039;&#039;&#039; — a clear, descriptive name (it becomes the page title in the File namespace).&lt;br /&gt;
# &#039;&#039;&#039;Media purpose&#039;&#039;&#039; — what kind of image this is: Engineer portrait, character portrait, ship image, module/equipment image, station/settlement/planet/system image, UI screenshot, gameplay screenshot, diagram/infographic, EDFM-created graphic, or other. This drives the description and categories EDFM generates below.&lt;br /&gt;
# &#039;&#039;&#039;Subject&#039;&#039;&#039; — the EDFM article this image is of, typed as plain text (e.g. &amp;lt;code&amp;gt;Hero Ferrari&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Hero Ferrari]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) — start typing and existing page titles will autocomplete. Required for media purposes that have an obvious subject (a portrait, a ship, a specific location); optional for general gameplay screenshots, UI screenshots, and diagrams. If the subject doesn&#039;t yet have an EDFM article, it&#039;s still recorded, just as plain text rather than a link.&lt;br /&gt;
# &#039;&#039;&#039;Subject type override&#039;&#039;&#039; — optional, and normally not needed. For an Engineer portrait, EDFM automatically works out &amp;quot;Ship Engineer&amp;quot; vs &amp;quot;Odyssey Engineer&amp;quot; from the subject&#039;s own article (its Engineering-type category) — only use this field if that inference is wrong or the subject&#039;s article doesn&#039;t exist yet.&lt;br /&gt;
# &#039;&#039;&#039;Licensing&#039;&#039;&#039; — for an ordinary gameplay screenshot this is almost always &amp;quot;Elite Dangerous in-game screenshot.&amp;quot; See the guidance on the upload page itself, or [[Elite Dangerous Field Manual:Image Use Policy]], for the other options. Your choice here also determines the &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;media_type&amp;lt;/code&amp;gt;, and (where the license makes it clear) &amp;lt;code&amp;gt;copyright_holder&amp;lt;/code&amp;gt; fields below — you don&#039;t need to re-enter information the license already establishes.&lt;br /&gt;
# &#039;&#039;&#039;Image modifications&#039;&#039;&#039; — optional. Only state something here if you actually know the file has been altered (e.g. &amp;quot;Cropped to portrait framing&amp;quot;); leave it blank rather than guess.&lt;br /&gt;
# &#039;&#039;&#039;Additional notes&#039;&#039;&#039; — optional freeform field for anything else worth recording.&lt;br /&gt;
&lt;br /&gt;
On submission, EDFM builds the file page&#039;s &amp;lt;code&amp;gt;== Summary ==&amp;lt;/code&amp;gt; section automatically, using {{tl|EDFM image information}}:&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039; — a short factual sentence built from the media purpose and subject (e.g. &amp;quot;In-game portrait of [[Hero Ferrari]], an Odyssey Engineer.&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;subject&#039;&#039;&#039; / &#039;&#039;&#039;subject_type&#039;&#039;&#039; — the article you named, linked if it exists, plus its inferred or overridden type.&lt;br /&gt;
* &#039;&#039;&#039;source&#039;&#039;&#039; / &#039;&#039;&#039;media_type&#039;&#039;&#039; / &#039;&#039;&#039;copyright_holder&#039;&#039;&#039; — derived from your Licensing choice (e.g. &amp;quot;Elite Dangerous, captured in-game&amp;quot; / &amp;quot;In-game screenshot&amp;quot; / &amp;quot;Frontier Developments plc&amp;quot; for an ordinary screenshot). For original work you made yourself, copyright is attributed to you as the creator, not to EDFM.&lt;br /&gt;
* &#039;&#039;&#039;captured_by&#039;&#039;&#039; — your account name, filled in automatically; you never need to type your own name.&lt;br /&gt;
* &#039;&#039;&#039;capture_date&#039;&#039;&#039; — included &#039;&#039;&#039;only&#039;&#039;&#039; if the uploaded file&#039;s own metadata contains a genuine capture date. EDFM never substitutes the upload date, and never guesses.&lt;br /&gt;
* &#039;&#039;&#039;modifications&#039;&#039;&#039; / &#039;&#039;&#039;notes&#039;&#039;&#039; — only included if you actually filled those optional fields in.&lt;br /&gt;
* &#039;&#039;&#039;intended_use&#039;&#039;&#039; — a short standard sentence built from the media purpose and subject (e.g. &amp;quot;Identification and illustration on the [[Hero Ferrari]] article and related Engineering pages.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The relevant categories (for example [[:Category:Engineer images]] and [[:Category:Odyssey Engineer images]]) and the &amp;lt;code&amp;gt;== Licensing ==&amp;lt;/code&amp;gt; section (from your Licensing choice, e.g. {{tl|License-ED screenshot}}) are added automatically as well.&lt;br /&gt;
&lt;br /&gt;
You should not need to write or edit &amp;lt;code&amp;gt;{{tl|EDFM image information}}&amp;lt;/code&amp;gt; syntax by hand for a normal upload. If something EDFM generated needs correcting, or you want to add detail beyond what the form covers, you can always edit the file page afterwards like any other page on this wiki — see [[#Advanced: editing a file page directly|below]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uploading a new version of an existing file&#039;&#039;&#039; (replacing the image itself) does not regenerate or overwrite the existing file page&#039;s description — your original metadata is left exactly as it was.&lt;br /&gt;
&lt;br /&gt;
Once uploaded, reference the image on the article as &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[File:Name.png|thumb|caption]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, or pass it as &amp;lt;code&amp;gt;|image=Name.png&amp;lt;/code&amp;gt; to an infobox that supports one (e.g. {{tl|Engineer infobox}}).&lt;br /&gt;
&lt;br /&gt;
== Advanced: editing a file page directly ==&lt;br /&gt;
File pages are ordinary wiki pages. An experienced editor can open a file page and edit its {{tl|EDFM image information}} fields directly at any time — for example to add a &amp;lt;code&amp;gt;capture_date&amp;lt;/code&amp;gt; EDFM couldn&#039;t detect, correct a &amp;lt;code&amp;gt;subject_type&amp;lt;/code&amp;gt;, or expand on &amp;lt;code&amp;gt;notes&amp;lt;/code&amp;gt;. See {{tl|EDFM image information}}&#039;s own documentation for the full field list.&lt;br /&gt;
&lt;br /&gt;
== Captioning ==&lt;br /&gt;
Use {{tl|Screenshot caption}} for the visible caption text under the image on the article page, so credit/context is shown consistently rather than as plain prose. This is separate from {{tl|EDFM image information}} on the file page itself — see [[Elite Dangerous Field Manual:Screenshot Policy]] for the distinction.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Elite Dangerous Field Manual:Image Use Policy]] [[Elite Dangerous Field Manual:Screenshot Policy]] [[Elite Dangerous Field Manual:Contributing]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:About_the_Field_Manual&amp;diff=902</id>
		<title>Elite Dangerous Field Manual:About the Field Manual</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:About_the_Field_Manual&amp;diff=902"/>
		<updated>2026-08-18T01:06:24Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: site is publicly launched, not pre-launch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Elite Dangerous Field Manual (EDFM)&#039;&#039;&#039; is an independent, community-maintained knowledge base and practical field manual for &#039;&#039;Elite Dangerous&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Elite Dangerous Field Manual&#039;&#039; is an unofficial community project and is not affiliated with or endorsed by Frontier Developments plc. &#039;&#039;Elite Dangerous&#039;&#039; and related names, marks, and assets are the property of their respective owners.&lt;br /&gt;
&lt;br /&gt;
== What this project is ==&lt;br /&gt;
A reference and procedure guide aimed at being:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ad-free&#039;&#039;&#039; — no advertising of any kind.&lt;br /&gt;
* &#039;&#039;&#039;Privacy-respecting&#039;&#039;&#039; — no behavioural tracking, no third-party marketing scripts. See [[Elite Dangerous Field Manual:Privacy Policy]].&lt;br /&gt;
* &#039;&#039;&#039;Accurate over exhaustive&#039;&#039;&#039; — see [[Elite Dangerous Field Manual:Editorial Policy]] and [[Elite Dangerous Field Manual:Verification Policy]].&lt;br /&gt;
* &#039;&#039;&#039;Version-aware&#039;&#039;&#039; — Elite Dangerous changes over time; articles are expected to record what version/mode they were verified against, and to flag when content is Legacy-only or historical.&lt;br /&gt;
&lt;br /&gt;
== What this project is not ==&lt;br /&gt;
It is not official. It is not produced or reviewed by Frontier Developments. It does not claim any special access to unreleased information. See [[Elite Dangerous Field Manual:Legal and Trademark Notice]].&lt;br /&gt;
&lt;br /&gt;
== Project status ==&lt;br /&gt;
EDFM is live and open for public use and contribution. See [[Elite Dangerous Field Manual:Current Project Status]] for what exists so far and [[Elite Dangerous Field Manual:Pages Needing Review]] for open work.&lt;br /&gt;
&lt;br /&gt;
== Getting involved ==&lt;br /&gt;
See [[Elite Dangerous Field Manual:Contributing]].&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Contributing&amp;diff=901</id>
		<title>Elite Dangerous Field Manual:Contributing</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Contributing&amp;diff=901"/>
		<updated>2026-08-18T01:06:24Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: Frontier verification is available now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to contribute to EDFM.&lt;br /&gt;
&lt;br /&gt;
== Current stage ==&lt;br /&gt;
EDFM is open to the public and actively under development. Anyone may create an account and contribute to the wiki.&lt;br /&gt;
&lt;br /&gt;
Contributors can optionally verify that they own a real &#039;&#039;Elite Dangerous&#039;&#039; account by signing in with Frontier (see [[Special:UserLogin]]), which grants the &#039;&#039;&#039;Verified Commander&#039;&#039;&#039; badge described in [[Elite Dangerous Field Manual:Verified Commanders]]. This is not required to edit &amp;amp;mdash; ordinary account creation and editing do not depend on Frontier verification. Editing/upload permissions may be limited to verified accounts or additional trusted groups in the future.&lt;br /&gt;
&lt;br /&gt;
The site is still in an early stage, so many pages, templates, and systems are being expanded or refined as the project grows. Contributors are welcome to add information, improve existing pages, correct inaccuracies, and help develop the Field Manual.&lt;br /&gt;
&lt;br /&gt;
== What contribution looks like ==&lt;br /&gt;
* &#039;&#039;&#039;Editing&#039;&#039;&#039;: edits go through the normal wiki edit flow. Significant or gameplay-fact-bearing changes should carry {{tl|Article status}} with &amp;lt;code&amp;gt;status=Needs review&amp;lt;/code&amp;gt; until checked against [[Elite Dangerous Field Manual:Verification Policy]].&lt;br /&gt;
* &#039;&#039;&#039;Screenshots&#039;&#039;&#039;: see [[Elite Dangerous Field Manual:Screenshot Policy]] before uploading anything.&lt;br /&gt;
* &#039;&#039;&#039;Sourcing&#039;&#039;&#039;: see [[Elite Dangerous Field Manual:Source Quality Guide|the source quality guide]] for what counts as a good source.&lt;br /&gt;
* &#039;&#039;&#039;Tone&#039;&#039;&#039;: see [[Elite Dangerous Field Manual:Editorial Policy]].&lt;br /&gt;
* &#039;&#039;&#039;Legal/privacy rules&#039;&#039;&#039;: see [[Elite Dangerous Field Manual:Terms of Use]], [[Elite Dangerous Field Manual:Privacy Policy]], [[Elite Dangerous Field Manual:Cookie Policy]], and [[Elite Dangerous Field Manual:Image Use Policy]].&lt;br /&gt;
&lt;br /&gt;
== Reporting problems ==&lt;br /&gt;
Use the article&#039;s talk page to flag inaccuracies, and tag the article with {{tl|Unverified claim}} or {{tl|Draft warning}} as appropriate rather than leaving unflagged uncertain content.&lt;br /&gt;
&lt;br /&gt;
{{Unofficial disclaimer}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Verified_Commanders&amp;diff=900</id>
		<title>Elite Dangerous Field Manual:Verified Commanders</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Verified_Commanders&amp;diff=900"/>
		<updated>2026-08-18T01:06:23Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: CAPI verification is live, not still being built&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What the &amp;quot;Verified Commander&amp;quot; badge means on EDFM, and what it doesn&#039;t.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
A &#039;&#039;&#039;Verified Commander&#039;&#039;&#039; is an EDFM user whose linked Frontier account and associated &#039;&#039;Elite Dangerous&#039;&#039; Commander have been successfully verified through EDFM&#039;s Frontier authentication and Companion API (CAPI) integration.&lt;br /&gt;
&lt;br /&gt;
This confirms one thing only: that the account/Commander relationship checks out. It is &#039;&#039;&#039;not&#039;&#039;&#039;:&lt;br /&gt;
* a grant of moderation or administrative authority;&lt;br /&gt;
* an indication that EDFM endorses that user&#039;s contributions;&lt;br /&gt;
* a claim that the user is a trusted contributor; or&lt;br /&gt;
* a statement about the accuracy of anything that user has written.&lt;br /&gt;
&lt;br /&gt;
Ordinary account creation and editing on EDFM do not require this status. See [[Elite Dangerous Field Manual:Contributing]].&lt;br /&gt;
&lt;br /&gt;
== How someone becomes verified ==&lt;br /&gt;
Two separate steps both have to succeed:&lt;br /&gt;
# &#039;&#039;&#039;Frontier sign-in.&#039;&#039;&#039; The user signs in with their Frontier account (see [[Special:UserLogin]]). This proves they control that Frontier account, nothing more.&lt;br /&gt;
# &#039;&#039;&#039;Commander verification.&#039;&#039;&#039; EDFM&#039;s CAPI integration confirms which &#039;&#039;Elite Dangerous&#039;&#039; Commander is actually associated with that Frontier account.&lt;br /&gt;
&lt;br /&gt;
Signing in with Frontier by itself does &#039;&#039;&#039;not&#039;&#039;&#039; make someone a Verified Commander. Only the combination of a successful Frontier sign-in &#039;&#039;&#039;and&#039;&#039;&#039; a successful CAPI Commander check does.&lt;br /&gt;
&lt;br /&gt;
== Current status ==&lt;br /&gt;
EDFM&#039;s Frontier OAuth/CAPI integration is live. Accounts are marked Verified Commander only after both steps above succeed for real &amp;amp;mdash; this is not a placeholder or a preview of a future mechanism.&lt;br /&gt;
&lt;br /&gt;
== Privacy ==&lt;br /&gt;
Verified status is independent of Commander-name visibility. A user can be a Verified Commander without their Commander name being shown publicly anywhere on the site. Frontier account IDs, customer IDs, OAuth/CAPI identifiers, tokens, and similar authentication metadata are never exposed through this badge or any public profile display.&lt;br /&gt;
&lt;br /&gt;
== Removal ==&lt;br /&gt;
Verified status can be removed if the underlying Frontier link is disconnected or replaced, or by administrator action. It is not removed for routine, temporary reasons such as an access token expiring or a one-off Frontier/CAPI outage.&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Terms_of_Use&amp;diff=899</id>
		<title>Elite Dangerous Field Manual:Terms of Use</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Terms_of_Use&amp;diff=899"/>
		<updated>2026-08-18T01:06:23Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: Frontier login/CAPI is live, not planned&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These terms explain the basic rules for using and contributing to &#039;&#039;Elite Dangerous Field Manual&#039;&#039; (EDFM).&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
* EDFM is an independent community wiki project for &#039;&#039;Elite Dangerous&#039;&#039; players.&lt;br /&gt;
* EDFM is not affiliated with, endorsed by, sponsored by, or reviewed by Frontier Developments plc.&lt;br /&gt;
* By contributing original text to EDFM, you agree to license that contribution under CC BY-SA 4.0.&lt;br /&gt;
* Do not upload or post material you do not have the right to share.&lt;br /&gt;
* Do not use EDFM for spam, harassment, malware, scraping abuse, impersonation, or unlawful activity.&lt;br /&gt;
* EDFM may remove content, restrict accounts, or preserve records where needed for moderation, security, legal compliance, attribution, or site integrity.&lt;br /&gt;
&lt;br /&gt;
== Independent community project ==&lt;br /&gt;
EDFM is operated as an independent community project. It is not an official Frontier Developments site. &#039;&#039;Elite&#039;&#039;, &#039;&#039;Elite Dangerous&#039;&#039;, related names, marks, and game assets belong to Frontier Developments plc and/or their respective owners. See [[Elite Dangerous Field Manual:Legal and Trademark Notice]].&lt;br /&gt;
&lt;br /&gt;
== Accounts and eligibility ==&lt;br /&gt;
You may browse EDFM without an account. Some features, including editing and uploading, require an account.&lt;br /&gt;
&lt;br /&gt;
EDFM is not intended for children under 13. If you are under 13, do not create an account or provide personal information. If local law requires a higher age for account creation or consent where you live, you are responsible for following that law.&lt;br /&gt;
&lt;br /&gt;
You are responsible for activity on your account and for keeping your login credentials secure.&lt;br /&gt;
&lt;br /&gt;
== Contribution license ==&lt;br /&gt;
Unless a page clearly says otherwise, original text submitted to EDFM is licensed under the &#039;&#039;&#039;Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0)&#039;&#039;&#039;. By submitting original text, you confirm that you have the right to contribute it under that license.&lt;br /&gt;
&lt;br /&gt;
Do not copy text from Fandom, Inara, Reddit, Discord, forums, other wikis, official websites, books, guides, AI outputs, or any other source unless you have verified permission and the license is compatible. Citing a source supports a fact; it does not grant permission to copy that source&#039;s wording.&lt;br /&gt;
&lt;br /&gt;
== Images and uploads ==&lt;br /&gt;
Uploaded files must follow [[Elite Dangerous Field Manual:Image Use Policy]] and [[Elite Dangerous Field Manual:Screenshot Policy]].&lt;br /&gt;
&lt;br /&gt;
Contributor-created original media is normally licensed under CC BY-SA 4.0 unless a more specific permitted license/classification is selected or stated. &#039;&#039;Elite Dangerous&#039;&#039; screenshots and game imagery are not made CC-licensed by being uploaded here; the underlying game assets remain Frontier&#039;s or their owners&#039; property and are handled under the site&#039;s Frontier/game-media classifications.&lt;br /&gt;
&lt;br /&gt;
Do not upload files containing private personal information, private chat logs, doxxing material, malware, copyrighted material you cannot use, or images copied from other sites without verified permission.&lt;br /&gt;
&lt;br /&gt;
== Public wiki records ==&lt;br /&gt;
Wiki contributions are normally public and historical. Page histories, edit summaries, file histories, talk-page comments, logs, and timestamps may remain visible for attribution, accountability, licensing, anti-abuse, and site-integrity reasons.&lt;br /&gt;
&lt;br /&gt;
If you request account removal, EDFM may disable or rename the account while retaining public edits and logs where needed for attribution, moderation, security, and legal reasons. See [[Elite Dangerous Field Manual:Privacy Policy]].&lt;br /&gt;
&lt;br /&gt;
== Acceptable use ==&lt;br /&gt;
Do not use EDFM to:&lt;br /&gt;
* harass, threaten, impersonate, or target others;&lt;br /&gt;
* post spam, scams, malware, phishing, or malicious links;&lt;br /&gt;
* evade blocks, rate limits, or security systems;&lt;br /&gt;
* abuse automated access or scrape in a way that harms the site;&lt;br /&gt;
* post knowingly false claims as verified facts;&lt;br /&gt;
* upload or publish unlawful, infringing, or privacy-invasive material;&lt;br /&gt;
* interfere with the operation or security of the site.&lt;br /&gt;
&lt;br /&gt;
== Moderation and enforcement ==&lt;br /&gt;
EDFM may edit, revert, hide, delete, block, rename, restrict, or otherwise moderate accounts and content where needed to protect the community, comply with law, preserve attribution, enforce these terms, prevent abuse, or maintain the wiki.&lt;br /&gt;
&lt;br /&gt;
== Frontier login and commander data ==&lt;br /&gt;
Frontier login is available as an alternative sign-in/registration method (see [[Special:UserLogin]]). A successful Frontier sign-in combined with Commander verification (CAPI) may grant the &#039;&#039;&#039;Verified Commander&#039;&#039;&#039; badge &amp;amp;mdash; see [[Elite Dangerous Field Manual:Verified Commanders]] for exactly what that does and does not mean. Frontier account and Commander identities are personally identifiable information; see [[Elite Dangerous Field Manual:Privacy Policy]] for what EDFM stores and how Frontier data is, and is not, used.&lt;br /&gt;
&lt;br /&gt;
== No warranties ==&lt;br /&gt;
EDFM is provided as a community reference. It may contain errors, outdated information, incomplete pages, downtime, or broken features. Use in-game judgement and verify important information.&lt;br /&gt;
&lt;br /&gt;
== Changes ==&lt;br /&gt;
These terms may be updated as the site develops. Continued use of EDFM after changes means you accept the updated terms.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
For terms, copyright, privacy, or policy questions, contact: &amp;lt;code&amp;gt;contact@edfieldmanual.com&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Privacy_Policy&amp;diff=898</id>
		<title>Elite Dangerous Field Manual:Privacy Policy</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Privacy_Policy&amp;diff=898"/>
		<updated>2026-08-18T01:06:22Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Audit remediation: correct stale Frontier OAuth/CAPI status and other outdated wording: describe live CAPI verification accurately and real backup retention&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How EDFM handles visitor and contributor data. This page is intended to describe the site&#039;s actual operation and planned Frontier integration, not a generic template.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
* EDFM is an independent community project, not an advertising network.&lt;br /&gt;
* EDFM does not sell personal information and does not share personal information for behavioural advertising.&lt;br /&gt;
* EDFM uses Google Analytics 4 on ordinary public pages, only after optional site-improvement cookies are accepted, to understand anonymous/pseudonymous site usage, traffic sources, navigation, search, scroll, outbound-click, download, and public-content engagement trends.&lt;br /&gt;
* EDFM does not use Google Analytics as an account/user tracking system and does not intentionally send EDFM usernames, CMDR names, Frontier identifiers, email addresses, account IDs, authentication tokens, or equivalent user-linked identifiers to Google Analytics.&lt;br /&gt;
* Anonymous reading normally does not require a persistent EDFM account cookie, though Google Analytics may use its own analytics cookies where analytics is allowed and consented.&lt;br /&gt;
* Account, editing, upload, anti-abuse, security, analytics, and optional site-improvement features do involve limited data collection as described below.&lt;br /&gt;
&lt;br /&gt;
== Who operates EDFM ==&lt;br /&gt;
&#039;&#039;Elite Dangerous Field Manual&#039;&#039; is operated as an independent community project. It is not affiliated with, endorsed by, sponsored by, or reviewed by Frontier Developments plc. See [[Elite Dangerous Field Manual:Legal and Trademark Notice]].&lt;br /&gt;
&lt;br /&gt;
== Information collected automatically ==&lt;br /&gt;
When you visit the site, the web server and Cloudflare may process normal connection and request metadata, including IP address, timestamp, requested URL, response status, user agent, and similar technical information. EDFM uses this information for security, abuse prevention, debugging, uptime, and operational diagnostics.&lt;br /&gt;
&lt;br /&gt;
Server access and error logs are rotated automatically. The intended operational retention target is about &#039;&#039;&#039;60 days&#039;&#039;&#039; unless a longer period is temporarily needed to investigate abuse, security incidents, or outages.&lt;br /&gt;
&lt;br /&gt;
== Cloudflare ==&lt;br /&gt;
EDFM is served through Cloudflare for DNS, TLS, reverse proxying, caching, and security filtering. Cloudflare receives request and connection metadata as part of providing those services. Login and account-creation pages may load Cloudflare Turnstile from &amp;lt;code&amp;gt;challenges.cloudflare.com&amp;lt;/code&amp;gt; to reduce spam and abuse. EDFM configures Turnstile without intentionally sending the visitor IP from MediaWiki&#039;s server-side Turnstile integration, but Cloudflare will still receive information normally sent by a browser loading a Turnstile challenge. See [https://www.cloudflare.com/privacypolicy/ Cloudflare&#039;s privacy policy].&lt;br /&gt;
&lt;br /&gt;
== Google Analytics ==&lt;br /&gt;
EDFM uses Google Analytics 4, provided by Google LLC, to understand how public EDFM content is being used after a visitor allows optional site-improvement cookies. This helps with content planning, navigation improvements, search-term analysis, broken-content discovery, downloads, outbound-link review, and public engagement trends.&lt;br /&gt;
&lt;br /&gt;
Analytics is optional and is not loaded until the visitor grants consent through EDFM&#039;s Cookie Preferences. Analytics is intended for aggregate public-site usage, not account tracking. EDFM&#039;s site code is configured so the Google Analytics tag is not emitted on sensitive account, authentication, Frontier OAuth, or user/profile pages. Google Analytics is also not intentionally given MediaWiki usernames, MediaWiki numeric user IDs, email addresses, CMDR names, Frontier/FDev identifiers, Discord IDs, OAuth codes, access tokens, refresh tokens, session identifiers, or comparable account-specific identifiers. EDFM does not hash those identifiers and send the hash to Analytics.&lt;br /&gt;
&lt;br /&gt;
EDFM does not enable Google Signals, advertising personalization, remarketing, enhanced conversions, user-provided data, Google Ads audiences, AdSense, advertising IDs, or cross-device advertising features for the site Analytics integration.&lt;br /&gt;
&lt;br /&gt;
When Analytics is accepted, Google Analytics may still process normal browser and request metadata for eligible public pages, such as approximate location inferred by Google from network information, device/browser information, page URL, page title, referrer, events, and analytics cookies or identifiers controlled by Google. See [https://policies.google.com/privacy Google&#039;s privacy policy] and [https://support.google.com/analytics/answer/6004245 Google Analytics privacy information].&lt;br /&gt;
&lt;br /&gt;
== Analytics exclusions for account and profile information ==&lt;br /&gt;
Google Analytics is not loaded on pages or requests involving login, logout, account creation, password reset/recovery, email confirmation, credential changes, preferences/account settings, Frontier/PluggableAuth login or callback handling, authentication token handling, old revisions, diffs, redirects, non-existent pages, or URLs containing sensitive authentication/account parameters.&lt;br /&gt;
&lt;br /&gt;
Google Analytics is also not loaded on MediaWiki &amp;lt;code&amp;gt;User:&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;User talk:&amp;lt;/code&amp;gt; pages, or on equivalent profile/commander-style namespaces or pseudo-namespaces if present. This avoids sending a username, CMDR name, or profile title as an Analytics page URL or page title.&lt;br /&gt;
&lt;br /&gt;
Public wiki search remains eligible for Analytics because search-term trends are useful for content planning. EDFM does not deliberately enrich search analytics with usernames or account data, and account/authentication/private interfaces remain excluded regardless of any cookie or analytics consent choice.&lt;br /&gt;
&lt;br /&gt;
== Accounts ==&lt;br /&gt;
If you create or use a local EDFM account, MediaWiki stores account information needed to operate the wiki, including username, password hash, registration timestamp, edit count, account preferences, and, if provided or later enabled, an email address and email verification status.&lt;br /&gt;
&lt;br /&gt;
Account creation may also offer an optional &#039;&#039;&#039;CMDR Name&#039;&#039;&#039; field. EDFM stores this in MediaWiki&#039;s real-name/profile field. A CMDR Name is optional game-facing identity data, but EDFM treats it as personal data because it may identify a commander or be associated with an account. If provided, it may be used for attribution or account/profile display depending on MediaWiki behavior and EDFM site configuration. Do not enter a real-world name in this field unless you intentionally want that name associated with your EDFM account.&lt;br /&gt;
&lt;br /&gt;
Email may be used for account recovery, account notices, optional notifications, and possible future newsletters or announcements if EDFM enables those features. Newsletter or marketing-style email, if added later, should be optional.&lt;br /&gt;
&lt;br /&gt;
== Public wiki activity ==&lt;br /&gt;
If you edit the wiki, upload files, or post on discussion pages, that activity may be public. Public wiki records can include your username, edit summaries, page histories, uploaded files, comments, timestamps, and other contribution metadata. Public contribution history is part of how a wiki preserves attribution and accountability.&lt;br /&gt;
&lt;br /&gt;
If you later request account removal, EDFM&#039;s normal approach is to disable or rename the account where appropriate while preserving public edits, file history, and logs needed for attribution, licensing, security, and wiki integrity.&lt;br /&gt;
&lt;br /&gt;
== Uploads ==&lt;br /&gt;
Uploaded files and file pages may include uploader name, upload timestamp, file metadata, descriptions, source/licensing information, and any information the uploader includes. Contributors should avoid uploading images containing real-world personal information, private chat logs, private identifiers, or other people&#039;s information without permission. See [[Elite Dangerous Field Manual:Image Use Policy]] and [[Elite Dangerous Field Manual:Screenshot Policy]].&lt;br /&gt;
&lt;br /&gt;
== Popular and trending guide data ==&lt;br /&gt;
EDFM uses first-party, aggregate site-improvement data to power the &#039;&#039;&#039;Trending Guides&#039;&#039;&#039; sidebar.&lt;br /&gt;
&lt;br /&gt;
This includes:&lt;br /&gt;
* daily page-view counts by wiki page;&lt;br /&gt;
* search-to-landing counts that associate a search term with the article a visitor later opens;&lt;br /&gt;
* a cached ranked list of popular/trending pages.&lt;br /&gt;
&lt;br /&gt;
The Trending Guides tables are designed to store page IDs, normalized search terms, dates, and aggregate counts. They are not designed to store visitor IP addresses, account IDs, or usernames.&lt;br /&gt;
&lt;br /&gt;
Search-to-landing attribution uses a short-lived first-party cookie only when site-improvement/analytics cookies are accepted. Page-view counts may continue as aggregate, first-party site functionality even if optional cookies are rejected.&lt;br /&gt;
&lt;br /&gt;
== Frontier OAuth and CAPI ==&lt;br /&gt;
EDFM supports Frontier OAuth login as an alternative sign-in/register method. Frontier Auth is handled through an OAuth2 authorization-code flow: the visitor is sent to Frontier to approve sign-in, then Frontier returns the visitor to EDFM&#039;s authentication callback.&lt;br /&gt;
&lt;br /&gt;
EDFM uses Frontier authentication data only as needed to sign users in and connect a Frontier identity to an EDFM account. Data stored or handled for this login flow may include:&lt;br /&gt;
* a stable Frontier customer/account identifier, which EDFM uses to derive an internal wiki username rather than displaying the raw Frontier identifier;&lt;br /&gt;
* email address, if Frontier provides it and the user authorizes it;&lt;br /&gt;
* Frontier account name fields, if required for account display or support;&lt;br /&gt;
* linked platform information, such as platform name and third-party user ID, if the user signs in through a linked platform;&lt;br /&gt;
* short-lived access-token data held server-side for the login/session flow rather than as a public profile item.&lt;br /&gt;
&lt;br /&gt;
EDFM does not intentionally make Frontier customer IDs, OAuth codes, access tokens, refresh tokens, or linked platform IDs public. Frontier OAuth callback pages and URLs containing OAuth codes or state values are excluded from Google Analytics regardless of cookie consent.&lt;br /&gt;
&lt;br /&gt;
Frontier states that real names, email addresses, commander names, gamertags, Steam nicknames, Online IDs, and similar game/platform identities are personally identifiable information. EDFM therefore treats Frontier account, commander, and linked-platform identity data as personal data, even when the identifier is game-facing rather than a real-world name.&lt;br /&gt;
&lt;br /&gt;
EDFM&#039;s current Frontier login requests both the &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;capi&amp;lt;/code&amp;gt; scopes. The &amp;lt;code&amp;gt;capi&amp;lt;/code&amp;gt; scope is used solely for one-time Commander verification: EDFM briefly queries Frontier&#039;s Companion API to confirm a real Commander is associated with the Frontier account, then discards that response. EDFM does not store or display a Commander name, ship data, location data, or any other Companion API content anywhere, publicly or privately &amp;amp;mdash; the only thing recorded is a verified/not-verified flag and a timestamp. See [[Elite Dangerous Field Manual:Verified Commanders]] for what this verification does and does not mean. Verification happens automatically as part of signing in with Frontier; there is no separate opt-in step for it. Ship-data synchronization and optional Commander-name display are not implemented and are not currently planned; if that changes, this policy will be updated first.&lt;br /&gt;
&lt;br /&gt;
EDFM does not currently store Frontier refresh tokens for CAPI sync. If EDFM later stores refresh tokens, they should be stored only server-side, protected from public access, replaced when Frontier rotates them, and removed when the user disconnects Frontier access or when continued refresh is no longer authorized.&lt;br /&gt;
&lt;br /&gt;
If EDFM later changes Frontier/CAPI use beyond login/linking and optional commander or ship data, this policy and the cookie/data audit should be updated before or alongside that change.&lt;br /&gt;
&lt;br /&gt;
== Cookies and local storage ==&lt;br /&gt;
See [[Elite Dangerous Field Manual:Cookie Policy]] for the cookie categories, current cookies, Analytics cookies, and consent controls. Necessary cookies are always on; the optional Analytics category can be changed later through Cookie Preferences.&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
EDFM takes a full backup (database, uploaded files, and site configuration) once daily. Backups are retained for the last 7 daily backups plus one older snapshot from each of the preceding 4 weeks, then are automatically deleted &amp;amp;mdash; backups are not kept indefinitely. Backup archives are stored on the same server with access restricted to server administrators; they are not published, shared, or sent to a third party. An offsite/secondary-location backup copy is not currently configured. Data removed from the live site (for example, as part of an account-removal request) may still exist in an already-taken backup until that specific backup ages out under this retention schedule.&lt;br /&gt;
&lt;br /&gt;
== Third parties ==&lt;br /&gt;
EDFM may link to external websites such as Frontier, Creative Commons, MediaWiki, community tools, and source references. Visiting external links is governed by those sites&#039; own policies. Eligible public pages may also load Google Analytics from Google as described above.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
For privacy questions or data requests, contact: &amp;lt;code&amp;gt;contact@edfieldmanual.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Changes to this policy ==&lt;br /&gt;
This policy may be updated as EDFM&#039;s features change. Material changes should be reflected here and, where appropriate, in [[Elite Dangerous Field Manual:Cookie Policy]] and [[Elite Dangerous Field Manual:Terms of Use]].&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=620</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=620"/>
		<updated>2026-08-10T20:37:28Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Remove invalid final width selector and keep valid prose rail override&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 1.35rem );&lt;br /&gt;
	min-height: 1.78rem;&lt;br /&gt;
	margin: 0.35rem 0.675rem 1.05rem 0.675rem;&lt;br /&gt;
	padding: 0.36rem 0.56rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.76rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 2px 5px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	transition: background-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta:hover,&lt;br /&gt;
.edfm-discord-cta:focus {&lt;br /&gt;
	background: #4752c4;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 3px 8px rgba( 0, 0, 0, 0.42 );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon svg {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	fill: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=619</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=619"/>
		<updated>2026-08-10T20:35:21Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Force article prose to full content rail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: none !important; /* Site-wide full-width pass: article text should use the whole content rail. */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 1.35rem );&lt;br /&gt;
	min-height: 1.78rem;&lt;br /&gt;
	margin: 0.35rem 0.675rem 1.05rem 0.675rem;&lt;br /&gt;
	padding: 0.36rem 0.56rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.76rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 2px 5px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	transition: background-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta:hover,&lt;br /&gt;
.edfm-discord-cta:focus {&lt;br /&gt;
	background: #4752c4;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 3px 8px rgba( 0, 0, 0, 0.42 );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon svg {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	fill: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   5b. FULL-WIDTH ARTICLE FLOW OVERRIDES&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* 2026-08-10 audit: EDFM pages should not leave half the article rail empty.&lt;br /&gt;
   Earlier readability caps on paragraphs/hero copy made long-form sections&lt;br /&gt;
   look like narrow blocks while tables, TOCs, and navigation tiles spanned&lt;br /&gt;
   the page. Keep the main rail full-width everywhere; individual components&lt;br /&gt;
   may still opt into their own internal grids, but ordinary article copy and&lt;br /&gt;
   common block containers should stretch to the content edge. */&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;
.mw-parser-output &amp;gt; div:not( .thumb ):not( .tright ):not( .tleft ):not( .floatright ):not( .floatleft ):not( .edfm-status ):not( .edfm-panel ):not( .edfm-box ) {&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Final guard against stale/skin rules recapping article prose while leaving&lt;br /&gt;
   compact maintenance/status panels free to keep their intentional centred width. */&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p,&lt;br /&gt;
.mw-parser-output &amp;gt; p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2026-08-10 FINAL WIDTH CORRECTION&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Article prose was still visually capped on live pages because older/more&lt;br /&gt;
   specific paragraph rules could win in the final cascade. This block is&lt;br /&gt;
   deliberately last: normal article text and lists may use the article rail,&lt;br /&gt;
   while maintenance/status notices keep their compact centered width in&lt;br /&gt;
   Template:EDFM style/styles.css. */&lt;br /&gt;
.mw-body .mw-parser-output p:not( .edfm-status-message ):not( .edfm-status-uncertain ),&lt;br /&gt;
.mw-body .mw-parser-output li,&lt;br /&gt;
.mw-body .mw-parser-output dd:not( .edfm-status-row dd ) {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; p:not( .edfm-status-message ):not( .edfm-status-uncertain ),&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; ul,&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; ol,&lt;br /&gt;
.mw-body .mw-parser-output &amp;gt; dl:not( .edfm-status-details ) {&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 PROSE RAIL SLEDGEHAMMER&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Plain article prose on EDFM is supposed to occupy the article rail. Keep this&lt;br /&gt;
   deliberately simple and selector-separated: no comma-list dependency on&lt;br /&gt;
   advanced :not() parsing, no TemplateStyles scoping, and both physical and&lt;br /&gt;
   logical width properties so later/readability rules cannot re-cap lines. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; p,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ul,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; ol,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; dl {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	inline-size: 100% !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
	box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output p {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output li,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	max-inline-size: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Restore the intentional compact maintenance notice after the broad prose&lt;br /&gt;
   override above. */&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
body.mediawiki #content.mw-body #mw-content-text .mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	inline-size: auto !important;&lt;br /&gt;
	max-inline-size: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=618</id>
		<title>Template:EDFM style/styles.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=618"/>
		<updated>2026-08-10T20:29:40Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Ensure article prose uses full content rail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Shared styling for EDFM&#039;s editorial templates (Article status, Draft&lt;br /&gt;
   warning, Prerequisites, Related articles, etc. -- see each template&#039;s&lt;br /&gt;
   own page for which classes it uses). Freely uses the --edfm-* custom&lt;br /&gt;
   properties defined in MediaWiki:Common.css -- see the note there under&lt;br /&gt;
   &amp;quot;6. Panels&amp;quot; for why these classes live only in this file and not&lt;br /&gt;
   duplicated in Common.css too.&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: panels keep the accent-rail + corner-cut&lt;br /&gt;
   language from the first pass (both are explicitly the &amp;quot;hierarchy&lt;br /&gt;
   without a full border around everything&amp;quot; technique this redesign asks&lt;br /&gt;
   for) but get noticeably more padding/breathing room; the status module&lt;br /&gt;
   is rebuilt with a coloured header band and stacked label/value metadata&lt;br /&gt;
   instead of a plain left-rail box with inline &amp;quot;Label: value&amp;quot; text; and a&lt;br /&gt;
   new .edfm-related component replaces the old plain notice-style&lt;br /&gt;
   &amp;quot;Related articles&amp;quot; bar with a small tile row. */&lt;br /&gt;
&lt;br /&gt;
.edfm-box,&lt;br /&gt;
.edfm-panel {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 1.1em 1.3em;&lt;br /&gt;
	margin: 1.4em 0;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-info {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-warning,&lt;br /&gt;
.edfm-box.edfm-warning {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	background: #201a12;&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-draft,&lt;br /&gt;
.edfm-box.edfm-draft {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* Draft/maintenance notices are intentionally compact and centred; article&lt;br /&gt;
   prose/nav/tables may stretch, but these banners should not become a&lt;br /&gt;
   full-width strip across the whole rail. */&lt;br /&gt;
.edfm-panel-draft:not( .edfm-status ),&lt;br /&gt;
.edfm-box.edfm-draft:not( .edfm-status ) {&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	margin-left: auto !important;&lt;br /&gt;
	margin-right: auto !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-reference {&lt;br /&gt;
	border-left-color: var( --edfm-blue );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box.edfm-disclaimer {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dl,&lt;br /&gt;
.edfm-panel dl {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dt,&lt;br /&gt;
.edfm-panel dt {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: left;&lt;br /&gt;
	margin-right: 0.5em;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dd,&lt;br /&gt;
.edfm-panel dd {&lt;br /&gt;
	margin-left: 11em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-inline-flag {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Article metadata / status module (Template:Article status) --------&lt;br /&gt;
   2026-08-08 second revision: a compact maintenance banner (RuneScape&lt;br /&gt;
   Wiki-style notice as the UX reference, not its markup/colours) rather&lt;br /&gt;
   than a small internal dashboard -- an icon, the bare status word (no&lt;br /&gt;
   mode/version appended to it), one standard sentence for that status,&lt;br /&gt;
   and a concise &amp;quot;Uncertain: ...&amp;quot; line when there&#039;s something worth&lt;br /&gt;
   flagging. The full editorial record (reviewer, mode, version, source&lt;br /&gt;
   quality, the complete uncertainty note, etc.) moves to the&lt;br /&gt;
   .edfm-status-expand collapsible below, not removed, just no longer&lt;br /&gt;
   competing with the article for attention. Semantic colouring always&lt;br /&gt;
   pairs with the visible text status/icon -- never colour alone, per the&lt;br /&gt;
   site&#039;s Verification Policy. Three colour tiers cover the seven actual&lt;br /&gt;
   status values (see Elite Dangerous Field Manual: Verification Policy):&lt;br /&gt;
   positive/confirmed (Verified, Partially verified) in cyan -- matching&lt;br /&gt;
   &amp;quot;cyan = verification information&amp;quot; from the colour system;&lt;br /&gt;
   attention-needed (Needs review, Upcoming) in orange -- matching&lt;br /&gt;
   &amp;quot;orange = important actions/emphasis&amp;quot;; and neutral (Draft, Historical,&lt;br /&gt;
   Legacy only) in a dim neutral tone -- Draft moved here from the&lt;br /&gt;
   attention tier, since &amp;quot;still being written&amp;quot; isn&#039;t the same kind of&lt;br /&gt;
   concern as &amp;quot;unchecked&amp;quot; or &amp;quot;not released yet&amp;quot;. The template sets the&lt;br /&gt;
   modifier class via #switch. */&lt;br /&gt;
.edfm-status {&lt;br /&gt;
	border-left-width: 4px;&lt;br /&gt;
	border-left-style: solid;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
	margin: 1em auto !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention { border-left-color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }&lt;br /&gt;
&lt;br /&gt;
.edfm-status-banner {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-start;&lt;br /&gt;
	gap: 0.65em;&lt;br /&gt;
	padding: 0.55em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
/* Fixed-size icon swatch -- a single CSS-safe glyph (no icon font/library),&lt;br /&gt;
   never the same shape as a hard error: a checkmark for the positive&lt;br /&gt;
   tier, a plain &amp;quot;!&amp;quot; (not a red triangle) for attention, a quiet &amp;quot;i&amp;quot; for&lt;br /&gt;
   neutral. &amp;quot;Needs review&amp;quot; means not fully verified yet, not wrong. */&lt;br /&gt;
.edfm-status-icon {&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
	width: 1.45em;&lt;br /&gt;
	height: 1.45em;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-icon { background: var( --edfm-status-positive-bg ); color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-icon { background: var( --edfm-status-attention-bg ); color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-icon { background: var( --edfm-status-neutral-bg ); color: var( --edfm-text-dim ); }&lt;br /&gt;
.edfm-status-banner-body {&lt;br /&gt;
	flex: 1 1 auto;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-heading {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
	margin-bottom: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-heading { color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-heading { color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-heading { color: var( --edfm-text ); }&lt;br /&gt;
.edfm-status-message {&lt;br /&gt;
	margin: 0 0 0.2em;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-details {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );&lt;br /&gt;
	gap: 0.85em 1.25em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.2em;&lt;br /&gt;
	/* Grid items default to min-width: auto, which floors their shrink at&lt;br /&gt;
	   their content&#039;s min-content size -- a long slash-joined run like&lt;br /&gt;
	   &amp;quot;prerequisite/discovery/invitation/unlock&amp;quot; (no spaces, so no natural&lt;br /&gt;
	   break point in some engines) could floor a column wider than its&lt;br /&gt;
	   track and spill into the next one at in-between widths (2026-08-08:&lt;br /&gt;
	   found at ~820px on The Dweller). Letting the item shrink below that&lt;br /&gt;
	   floor, paired with the dd&#039;s own overflow-wrap below, keeps long&lt;br /&gt;
	   values inside their own column at every width instead. */&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dt {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	float: none;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.7em;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dd {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.98em;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 480px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Related content (Template:Related articles) -----------------------&lt;br /&gt;
   A small navigation strip instead of a generic bordered notice -- a&lt;br /&gt;
   quiet uppercase label above a row of individually-boxed link &amp;quot;tiles&amp;quot;,&lt;br /&gt;
   each with a trailing arrow. Deliberately styles the `&amp;lt;a&amp;gt;` elements&lt;br /&gt;
   directly (not container-level flexbox) so the freeform wikitext link&lt;br /&gt;
   list passed into the template (arbitrary separators/whitespace between&lt;br /&gt;
   links) can&#039;t break the layout -- every link gets its own tile&lt;br /&gt;
   regardless of what, if anything, sits between them in the source. */&lt;br /&gt;
.edfm-related {&lt;br /&gt;
	margin: 1.6em 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-label {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin-bottom: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fit, minmax( 12rem, 1fr ) );&lt;br /&gt;
	gap: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 0.65em 1.1em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-left-color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a::after {&lt;br /&gt;
	content: &#039;\2192&#039;;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- &amp;quot;View verification details&amp;quot; collapsible ---------------------------&lt;br /&gt;
   Wraps everything beyond the compact banner (Status, Last reviewed,&lt;br /&gt;
   Reviewer, Game mode, Version coverage, Source quality, the full Known&lt;br /&gt;
   uncertainty text, and the optional Legacy differences/Recent changes/&lt;br /&gt;
   Verification notes fields) behind a native mw-collapsible toggle&lt;br /&gt;
   instead of a new dependency -- jquery.makeCollapsible&lt;br /&gt;
   is core MediaWiki, loaded on every page by mediawiki.page.ready. For a&lt;br /&gt;
   plain &amp;lt;div&amp;gt; its default behaviour prepends a&lt;br /&gt;
   &amp;lt;button class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;mw-collapsible-text&amp;quot;&amp;gt;&lt;br /&gt;
   as the first child and wraps the remaining content in&lt;br /&gt;
   .mw-collapsible-content -- reset here to a plain full-width text row&lt;br /&gt;
   matching this module&#039;s mono/uppercase metadata language, instead of the&lt;br /&gt;
   browser&#039;s default button chrome, which would render as a jarring light&lt;br /&gt;
   box against this site&#039;s dark surfaces (same class of fix as the Save&lt;br /&gt;
   dialog/toolbar/#filetoc native-component passes elsewhere on this&lt;br /&gt;
   site). */&lt;br /&gt;
.edfm-status-expand {&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.45em 1em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:hover,&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand .mw-collapsible-content .edfm-status-details {&lt;br /&gt;
	padding-top: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Fact / Field Manual Recommendation callouts ------------------------&lt;br /&gt;
   Template:Fact and Template:Field manual recommendation -- a small&lt;br /&gt;
   labelled distinction between a verified fact and EDFM&#039;s own editorial&lt;br /&gt;
   judgement (see Elite Dangerous Field Manual:Engineering Architecture on&lt;br /&gt;
   why pinning/strategy guidance is treated as editorial, not database&lt;br /&gt;
   fact). Deliberately reuses the accent-rail + cyan/orange language&lt;br /&gt;
   already used everywhere else on this site (status positive/attention,&lt;br /&gt;
   infobox labels, related-link hover) instead of inventing a new callout&lt;br /&gt;
   style: cyan marks a verified fact (&amp;quot;cyan = verification information&amp;quot;),&lt;br /&gt;
   orange marks editorial guidance (&amp;quot;orange = important actions/&lt;br /&gt;
   emphasis&amp;quot;) -- see the colour rules this mirrors in this file&#039;s own&lt;br /&gt;
   .edfm-status-- modifiers above. */&lt;br /&gt;
.edfm-fact-recommendation {&lt;br /&gt;
	border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	padding: 0.5em 0.9em;&lt;br /&gt;
	margin: 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-label {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.72em;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-body {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   2026-08-10 ARTICLE RAIL WIDTH GUARANTEE&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* TemplateStyles is loaded after site Common.css on article pages, so this is&lt;br /&gt;
   the late-cascade guard that makes ordinary article prose and section blocks&lt;br /&gt;
   use the full article rail. Only maintenance/status/draft notice components&lt;br /&gt;
   keep their intentionally compact centered width. */&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;
.mw-parser-output &amp;gt; div {&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-status,&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-panel-draft,&lt;br /&gt;
.mw-parser-output &amp;gt; .edfm-draft {&lt;br /&gt;
	width: auto !important;&lt;br /&gt;
	max-width: 44rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output p,&lt;br /&gt;
.mw-parser-output li,&lt;br /&gt;
.mw-parser-output dd {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Engineering&amp;diff=607</id>
		<title>Engineering</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Engineering&amp;diff=607"/>
		<updated>2026-08-10T17:50:30Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Place Engineering status notice below header deck&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Game Systems|deck=How Engineering works, and where to find blueprints, Experimental Effects, Engineers, and materials.}}&lt;br /&gt;
{{Article status|status=Draft|mode=Both}}&lt;br /&gt;
&lt;br /&gt;
Engineering is Elite Dangerous&#039; long-term module customisation system. It lets commanders take ordinary ship modules, suits, and handheld weapons beyond their stock specifications by spending collected materials at specialist Engineer bases. The result is not one universal upgrade path: every modification has trade-offs, every Engineer has a limited set of specialties, and the best build usually comes from choosing the right blueprint, grade, and Experimental Effect for the job.&lt;br /&gt;
&lt;br /&gt;
This page is the central hub for the Engineering section of the Field Manual. Use it as the map: start here to understand the system, then jump to individual [[Engineers]], [[Engineering Blueprints|blueprints]], [[Experimental Effects]], and material pages as they are written. See [[Elite Dangerous Field Manual:Engineering Architecture]] for how this section is organised and how new articles should be added.&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|label=Browse Engineering|[[Engineering Blueprints]] [[Experimental Effects]] [[Engineers]] [[Engineering Materials]] [[:Category:Modules|Browse by Module]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Key Reference Articles ==&lt;br /&gt;
The most fully worked-out Engineer chain on EDFM so far — a good starting point for what a complete Engineering article looks like:&lt;br /&gt;
{{Related articles|label=Key Reference Articles|[[Felicity Farseer]] [[Liz Ryder]] [[Hera Tani]] [[Broo Tarquin]] [[Multi-Cannon]] [[Overcharged]] [[Thermal Vent]]}}&lt;br /&gt;
&lt;br /&gt;
== What Is Engineering? ==&lt;br /&gt;
Engineering is the process of applying specialist modifications to equipment. For ships, that means taking a module such as a Frame Shift Drive, power plant, multi-cannon, shield booster, or thruster and applying a blueprint that changes its statistics. A Frame Shift Drive might be tuned for longer range; a weapon might be tuned for higher damage; a shield booster might be tuned for more raw shield strength.&lt;br /&gt;
&lt;br /&gt;
Most ship Engineering follows the same pattern:&lt;br /&gt;
* choose the module you want to modify;&lt;br /&gt;
* choose a compatible blueprint;&lt;br /&gt;
* spend the required materials to apply and improve that blueprint;&lt;br /&gt;
* optionally add one compatible Experimental Effect; and&lt;br /&gt;
* decide whether the resulting trade-offs fit the build.&lt;br /&gt;
&lt;br /&gt;
Engineering is powerful because it lets a ship specialise. It is also easy to overdo: more damage may mean more heat or distributor draw, more jump range may mean lower integrity, and stronger defences may mean more mass or power use. Treat Engineering as build tuning, not a free upgrade button.&lt;br /&gt;
&lt;br /&gt;
Odyssey suit and weapon Engineering is related, but separate. It uses different Engineers, different materials, and different equipment rules. EDFM keeps ship Engineers and Odyssey Engineers in the same Engineering section for navigation, but individual pages should be clear about which system they cover.&lt;br /&gt;
&lt;br /&gt;
== How Engineering Works ==&lt;br /&gt;
Ship Engineering is built around three things: the Engineer, the blueprint, and the materials.&lt;br /&gt;
&lt;br /&gt;
An Engineer is the specialist who performs the work. Each Engineer has a base, an unlock path, and a limited list of blueprints they can apply. Some Engineers can take a blueprint all the way to Grade 5, while others may only offer lower grades for the same module family.&lt;br /&gt;
&lt;br /&gt;
A blueprint is the modification itself, such as [[Overcharged]], Increased FSD Range, Dirty Drives, Reinforced, or Heavy Duty. Blueprints are tied to module types: the same blueprint name may apply to several compatible modules, but it does not apply to everything. A commander must bring the correct module to an Engineer who supports that blueprint.&lt;br /&gt;
&lt;br /&gt;
Materials are the cost. Ship Engineering uses Raw, Manufactured, and Encoded materials. Odyssey Engineering uses its own on-foot assets, goods, and data. Credits are rarely the limiting factor; the real preparation is collecting the right material set and knowing where to trade for missing pieces.&lt;br /&gt;
&lt;br /&gt;
A practical Engineering visit usually looks like this:&lt;br /&gt;
# Fit or store the module you want to modify.&lt;br /&gt;
# Travel to an Engineer who supports the desired blueprint and grade.&lt;br /&gt;
# Apply the blueprint through one or more grades.&lt;br /&gt;
# Add an Experimental Effect if the module and blueprint support one.&lt;br /&gt;
# Test the result in outfitting, flight, combat, or exploration conditions.&lt;br /&gt;
&lt;br /&gt;
== Engineering Grades ==&lt;br /&gt;
Most ship blueprints are divided into grades, usually Grade 1 through Grade 5. Higher grades push the module further from stock and require higher-grade materials. Grade 1 is cheap and small; Grade 5 is expensive and build-defining.&lt;br /&gt;
&lt;br /&gt;
Within a grade, Engineering progress fills as the modification is applied. Early grades usually complete quickly. Later grades may require several applications before the grade is effectively complete, especially at Grade 5. The exact material cost depends on the blueprint, module, grade, and how far the current grade has already progressed.&lt;br /&gt;
&lt;br /&gt;
Grades are not automatically better in every situation. A lower grade can be enough when the goal is to unlock the next Engineer, reduce material cost, avoid an unwanted penalty, or make a temporary module usable without fully investing in it.&lt;br /&gt;
&lt;br /&gt;
== Engineer Reputation ==&lt;br /&gt;
Each Engineer has a reputation level with the commander. Reputation gates access to higher grades at that Engineer: the more trusted you are, the further they will push a module.&lt;br /&gt;
&lt;br /&gt;
The normal way to build reputation is to perform Engineering with that Engineer. Some Engineers also accept activity related to their specialty, such as selling exploration data, trading, bounty vouchers, or combat bonds at their base. The exact reputation options vary by Engineer and should be documented on the individual Engineer page.&lt;br /&gt;
&lt;br /&gt;
A useful early habit is to engineer a low-cost module through enough grades to raise reputation before spending rare materials on the final build. This is especially helpful when arriving at a newly unlocked Engineer who can eventually provide Grade 5 work but does not offer it to you immediately.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlocks ==&lt;br /&gt;
Engineers are not all available at once. Most unlock paths have several stages:&lt;br /&gt;
* &#039;&#039;&#039;Discovery&#039;&#039;&#039; — learning that the Engineer exists, often through another Engineer or by meeting a broad career condition.&lt;br /&gt;
* &#039;&#039;&#039;Invitation&#039;&#039;&#039; — satisfying the requirement that makes the Engineer contact you.&lt;br /&gt;
* &#039;&#039;&#039;Unlock&#039;&#039;&#039; — delivering commodities, materials, vouchers, or another proof of work at the Engineer base.&lt;br /&gt;
* &#039;&#039;&#039;Reputation&#039;&#039;&#039; — increasing access to higher grades after the Engineer is unlocked.&lt;br /&gt;
&lt;br /&gt;
Some Engineers sit in chains. For example, one Engineer may refer you to the next after you build enough reputation with them. This is why EDFM separates short unlock summaries from full walkthroughs: a card can tell you the requirement, while a guide can explain the route, cargo risks, material sources, and recommended order.&lt;br /&gt;
&lt;br /&gt;
See [[Engineer Unlock Guide]] for the chain-focused view and individual Engineer articles for confirmed requirements.&lt;br /&gt;
&lt;br /&gt;
== Blueprints ==&lt;br /&gt;
Blueprints are the named modifications applied to modules. They define the positive effects, penalties, grades, material costs, and eligible module types. Examples include weapon damage blueprints, FSD range blueprints, shield booster blueprints, power plant blueprints, and scanner blueprints.&lt;br /&gt;
&lt;br /&gt;
A good blueprint page should answer four questions quickly:&lt;br /&gt;
* What module types can use this blueprint?&lt;br /&gt;
* What does each grade improve or penalise?&lt;br /&gt;
* Which Engineers can apply it, and to what maximum grade?&lt;br /&gt;
* Which Experimental Effects can be paired with it?&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Blueprints]] to browse individual blueprint articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
Experimental Effects are optional special properties added after a ship module has been engineered. They are not the same thing as grades: a blueprint changes the module&#039;s baseline statistics, while an Experimental Effect adds a specific extra behaviour or trade-off.&lt;br /&gt;
&lt;br /&gt;
Examples include effects that change heat behaviour, damage type, ammunition behaviour, shield interaction, or module utility. Not every module supports an Experimental Effect, and compatible effects depend on the module and blueprint family.&lt;br /&gt;
&lt;br /&gt;
A module can normally carry one Experimental Effect at a time. Replacing it means choosing a different effect and paying the required materials again, so the effect should match the ship&#039;s job rather than simply sounding strong on paper.&lt;br /&gt;
&lt;br /&gt;
See [[Experimental Effects]] to browse individual effect articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Pinned Blueprints ==&lt;br /&gt;
A pinned blueprint is a blueprint saved from an Engineer so it can be used later through Remote Workshop. Pinning is one of the most important quality-of-life steps in Engineering because it lets commanders continue upgrading common modules without returning to the Engineer base every time.&lt;br /&gt;
&lt;br /&gt;
Each Engineer can have one pinned blueprint. The best pin is usually a blueprint you expect to use repeatedly, such as a common Frame Shift Drive, thruster, weapon, shield, or power blueprint. Pinned choices are account-wide conveniences, not permanent commitments: you can revisit the Engineer and change the pinned blueprint if your priorities change.&lt;br /&gt;
&lt;br /&gt;
Pinned blueprints do not replace Engineer unlocks. You still need to unlock and gain reputation with the Engineer who provides the blueprint, and you still need the required materials.&lt;br /&gt;
&lt;br /&gt;
== Remote Workshop ==&lt;br /&gt;
Remote Workshop lets commanders apply pinned ship blueprints from stations that offer the service, without flying back to the Engineer base. It is useful for finishing routine upgrades, working on stored modules, or making progress while away from the Engineer&#039;s system.&lt;br /&gt;
&lt;br /&gt;
Remote Workshop has limits. It depends on pinned blueprints, uses your existing Engineer access, and does not replace the full services of an Engineer base. Most importantly, Experimental Effects must be handled at an Engineer base rather than added remotely.&lt;br /&gt;
&lt;br /&gt;
In practice, Remote Workshop is best used for repeatable baseline work: pin the blueprint, collect the materials, apply the grades remotely, then visit the Engineer only when you need to change the pin, add an Experimental Effect, or use a blueprint that is not pinned.&lt;br /&gt;
&lt;br /&gt;
== Engineering Materials ==&lt;br /&gt;
Materials are the resource cost of Engineering. They do not take cargo space in the normal ship cargo rack, but they do have storage caps. Material management is a major part of Engineering preparation.&lt;br /&gt;
&lt;br /&gt;
Ship Engineering materials are grouped into three broad categories:&lt;br /&gt;
* &#039;&#039;&#039;Raw materials&#039;&#039;&#039; — minerals and elements gathered mostly from planetary surfaces, mining by-products, and certain signal or mission sources.&lt;br /&gt;
* &#039;&#039;&#039;Manufactured materials&#039;&#039;&#039; — components recovered from ships, signal sources, mission rewards, combat aftermath, and salvage.&lt;br /&gt;
* &#039;&#039;&#039;Encoded materials&#039;&#039;&#039; — data gathered from scans, data points, wakes, missions, and signal sources.&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering uses different on-foot assets, goods, and data. Do not assume a ship material source will help with suit or weapon upgrades.&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Materials]] for the materials hub.&lt;br /&gt;
&lt;br /&gt;
== Material Traders ==&lt;br /&gt;
Material Traders let commanders exchange materials within a category. Raw Material Traders exchange raw materials, Manufactured Material Traders exchange manufactured materials, and Encoded Material Traders exchange encoded data.&lt;br /&gt;
&lt;br /&gt;
Trading is most efficient when moving down from high-grade materials to lower-grade ones. Trading upward is expensive, and trading across material families within the same category is less efficient than trading within the same family. For that reason, many commanders farm high-value materials and trade down to fill out common blueprint costs.&lt;br /&gt;
&lt;br /&gt;
Material Traders are a convenience, not a complete replacement for gathering. They are best used to smooth out shortages after a farming run or before visiting an Engineer.&lt;br /&gt;
&lt;br /&gt;
== Engineers ==&lt;br /&gt;
Engineers are the NPC specialists who perform the modifications. Each Engineer page should cover location, access requirements, unlock cost, specialties, maximum grades, related Engineers, and sources. The directory page keeps the roster browsable at a glance.&lt;br /&gt;
&lt;br /&gt;
Ship Engineers and Odyssey Engineers should not be mixed together inside build advice. They use different equipment and material systems, and Odyssey Engineering is not available in Legacy. When an article discusses both, it should label the distinction clearly.&lt;br /&gt;
&lt;br /&gt;
See [[Engineers]] to browse individual Engineer articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Engineering Guides ==&lt;br /&gt;
Engineering guides should focus on routes and decisions rather than duplicating reference tables. A good guide explains the practical order of operations: what to unlock first, what to carry, what can be done remotely, which commodities are risky, what materials to collect in advance, and which steps can be combined in one trip.&lt;br /&gt;
&lt;br /&gt;
Examples of useful guide topics include:&lt;br /&gt;
* first-ship Engineering route for new commanders;&lt;br /&gt;
* Frame Shift Drive range preparation;&lt;br /&gt;
* combat ship weapon and defence tuning;&lt;br /&gt;
* Colonia Engineer preparation;&lt;br /&gt;
* Odyssey suit and weapon unlock routes; and&lt;br /&gt;
* material gathering loops for common blueprint families.&lt;br /&gt;
&lt;br /&gt;
See [[Unlocking Broo Tarquin]] for a worked example of a standalone unlock guide, and [[Elite Dangerous Field Manual:Creating a Guide]] for how the encyclopedia/guide split works.&lt;br /&gt;
&lt;br /&gt;
== Lists &amp;amp; Comparisons ==&lt;br /&gt;
Structured-data proof of concept, generated from [[Module:Data/Engineers/index|Module:Data/Engineers]] rather than hand-maintained — see [[Elite Dangerous Field Manual:Adding Structured Data]]. Partial (4 of 38 Engineers) until backfilled further.&lt;br /&gt;
{{Related articles|label=Lists &amp;amp; Comparisons|[[List of Engineers]] [[Engineer Capability Comparison]]}}&lt;br /&gt;
&lt;br /&gt;
As more structured Engineer and blueprint data is added, this section should become the comparison layer: who offers a blueprint, which Engineer reaches the highest grade, which unlock chain is shortest, and which Engineers are worth combining in a single route.&lt;br /&gt;
&lt;br /&gt;
== External Tools ==&lt;br /&gt;
Community tools are useful for planning Engineering because they can track large material inventories and simulate full builds before you spend anything in-game. Use them for planning, then use EDFM pages for Field Manual explanations, unlock notes, and source-backed reference details.&lt;br /&gt;
&lt;br /&gt;
See the Engineering material tracking section of [[Tools and Resources]] for community apps that track blueprint/material progress.&lt;br /&gt;
&lt;br /&gt;
== Related Categories ==&lt;br /&gt;
* [[:Category:Engineering]]&lt;br /&gt;
* [[:Category:Engineers]]&lt;br /&gt;
* [[:Category:Engineering Blueprints]]&lt;br /&gt;
* [[:Category:Experimental Effects]]&lt;br /&gt;
* [[:Category:Engineering Materials]]&lt;br /&gt;
* [[:Category:Weapon Engineering]]&lt;br /&gt;
* [[:Category:Core Internal Engineering]]&lt;br /&gt;
* [[:Category:Optional Internal Engineering]]&lt;br /&gt;
* [[:Category:Utility Engineering]]&lt;br /&gt;
* [[:Category:Odyssey Engineering]]&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Ships and Equipment]] [[Game Reference]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=606</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=606"/>
		<updated>2026-08-10T17:50:29Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Restyle global article headings closer to RuneScape wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   EDFM site-wide styling -- &amp;quot;Elite Dangerous technical field manual&amp;quot; theme.&lt;br /&gt;
   Original CSS written for this project -- no code or assets copied from&lt;br /&gt;
   runescape.wiki, Elite Dangerous, or any other site/game, and no Frontier&lt;br /&gt;
   logo/branding/proprietary fonts/copied HUD elements. Restrained visual&lt;br /&gt;
   influence only: dark industrial surfaces, subtle angular geometry,&lt;br /&gt;
   orange/cyan accents used sparingly, information hierarchy first. This is&lt;br /&gt;
   a reference site, not a HUD -- no glow, no neon, no glassmorphism, no&lt;br /&gt;
   constant animation.&lt;br /&gt;
&lt;br /&gt;
   SKIN NOTE: the site uses Vector &amp;quot;legacy&amp;quot; (2011), not Vector 2022 -- see&lt;br /&gt;
   the &amp;quot;Why Vector legacy&amp;quot; note in docs/content-style-guide.md (Vector 2022&lt;br /&gt;
   hard-restricts its pinned sidebar to logged-in users; legacy has no such&lt;br /&gt;
   restriction). Several rules below exist specifically to beat core Vector&lt;br /&gt;
   legacy/mediawiki.skinning selectors that are *more specific* than a naive&lt;br /&gt;
   override would be (documented inline at each occurrence) -- this isn&#039;t&lt;br /&gt;
   guesswork, each one was found by reading the actual core .less source and&lt;br /&gt;
   confirmed with a real rendered screenshot, not just computed-style checks&lt;br /&gt;
   (:visited colours in particular are invisible to getComputedStyle by&lt;br /&gt;
   design -- see the tab-bar note below).&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: the first redesign pass was judged too close to&lt;br /&gt;
   stock MediaWiki with a colour change -- this pass changes the actual&lt;br /&gt;
   visual composition (centred workspace instead of a huge dead gutter,&lt;br /&gt;
   a two-tier header, a real masthead, a tile-grid TOC, a restructured&lt;br /&gt;
   status module, larger deliberate type scale, depth via surface&lt;br /&gt;
   elevation instead of borders-around-everything) while reusing every&lt;br /&gt;
   working mechanism from the first pass rather than throwing it away --&lt;br /&gt;
   the tab/:visited fix, the external-link specificity fix, the mobile&lt;br /&gt;
   reorder fix, and focus-visible/reduced-motion are all still here,&lt;br /&gt;
   unchanged in mechanism.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. DESIGN TOKENS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
:root {&lt;br /&gt;
	/* Depth system: site (outermost, visible in the sidebar/header/gutters)&lt;br /&gt;
	   -&amp;gt; article surface -&amp;gt; component surfaces, each a deliberate step&lt;br /&gt;
	   brighter so the page reads as having actual depth rather than &amp;quot;one&lt;br /&gt;
	   background colour with slightly lighter boxes everywhere&amp;quot;. */&lt;br /&gt;
	--edfm-bg-deep: #07090b;&lt;br /&gt;
	--edfm-bg-page: #0a0e11;&lt;br /&gt;
	--edfm-surface-1: #10171b;&lt;br /&gt;
	--edfm-surface-2: #161f24;&lt;br /&gt;
	--edfm-surface-3: #1c272d;&lt;br /&gt;
	--edfm-surface-4: #233037;&lt;br /&gt;
&lt;br /&gt;
	--edfm-border: #26333b;&lt;br /&gt;
	--edfm-border-soft: rgba( 255, 255, 255, 0.06 );&lt;br /&gt;
&lt;br /&gt;
	--edfm-text: #edf0f2;&lt;br /&gt;
	--edfm-text-muted: #98a5ad;&lt;br /&gt;
	--edfm-text-dim: #6c7a82;&lt;br /&gt;
&lt;br /&gt;
	/* Accents -- orange is reserved for navigation/selection/emphasis/&lt;br /&gt;
	   section numbering; cyan/blue are for links, verification info, and&lt;br /&gt;
	   secondary interface elements. See &amp;quot;Links&amp;quot; and &amp;quot;Colour system&amp;quot; in&lt;br /&gt;
	   docs/content-style-guide.md for the reasoning. */&lt;br /&gt;
	--edfm-orange: #ff8a00;&lt;br /&gt;
	--edfm-orange-bright: #ffa21a;&lt;br /&gt;
	--edfm-cyan: #42c7d9;&lt;br /&gt;
	--edfm-blue: #4f9fe8;&lt;br /&gt;
&lt;br /&gt;
	/* Derived link colours */&lt;br /&gt;
	--edfm-link: var( --edfm-blue );&lt;br /&gt;
	--edfm-link-visited: #3f7bb3;&lt;br /&gt;
	--edfm-link-hover: #8cc4f7;&lt;br /&gt;
	--edfm-link-external: var( --edfm-cyan );&lt;br /&gt;
	--edfm-link-external-visited: #2f8f9c;&lt;br /&gt;
	--edfm-link-external-hover: #7fe0ec;&lt;br /&gt;
	--edfm-link-new: #e07a7a;&lt;br /&gt;
&lt;br /&gt;
	/* Status semantics (article metadata module) -- text label always&lt;br /&gt;
	   present too, never colour-only. */&lt;br /&gt;
	--edfm-status-positive: var( --edfm-cyan );&lt;br /&gt;
	--edfm-status-attention: var( --edfm-orange );&lt;br /&gt;
	--edfm-status-neutral: var( --edfm-text-dim );&lt;br /&gt;
	--edfm-status-positive-bg: rgba( 66, 199, 217, 0.12 );&lt;br /&gt;
	--edfm-status-attention-bg: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
	--edfm-status-neutral-bg: rgba( 108, 122, 130, 0.12 );&lt;br /&gt;
&lt;br /&gt;
	/* Typography -- explicit desktop scale (2026-08-07 pass 2). Sized in&lt;br /&gt;
	   rem against the root&#039;s real 16px (Vector legacy&#039;s own&lt;br /&gt;
	   @font-size-root is 100%, i.e. browser default -- confirmed by&lt;br /&gt;
	   reading skins.vector.styles.legacy/variables.less, not assumed)&lt;br /&gt;
	   rather than nested em, specifically so component sizes can&#039;t&lt;br /&gt;
	   compound smaller than intended inside whatever ambient size an&lt;br /&gt;
	   ancestor happens to set. */&lt;br /&gt;
	--edfm-fs-title: clamp( 1.9rem, 1.4rem + 2vw, 2.25rem ); /* ~30-36px */&lt;br /&gt;
	--edfm-fs-h2: 1.35rem; /* ~21.6px */&lt;br /&gt;
	--edfm-fs-h3: 1.15rem; /* ~18.4px */&lt;br /&gt;
	--edfm-fs-body: 1rem; /* 16px */&lt;br /&gt;
	--edfm-fs-resource-name: 1.1rem; /* ~17.6px */&lt;br /&gt;
	--edfm-fs-meta: 0.8rem; /* ~12.8px */&lt;br /&gt;
	--edfm-fs-sidebar: 0.9375rem; /* 15px -- polish pass: +1px for readability */&lt;br /&gt;
	--edfm-fs-utility: 0.72rem; /* ~11.5px */&lt;br /&gt;
&lt;br /&gt;
	--edfm-mono: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	--edfm-sans: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Helvetica, Arial, sans-serif;&lt;br /&gt;
&lt;br /&gt;
	/* Legacy aliases: earlier revisions of this stylesheet used these names&lt;br /&gt;
	   directly and some inline template output/older docs may still refer&lt;br /&gt;
	   to them; keep pointing at the current tokens rather than duplicate&lt;br /&gt;
	   values that could drift out of sync. */&lt;br /&gt;
	--edfm-orange-hover: var( --edfm-orange-bright );&lt;br /&gt;
	--edfm-orange-active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive: var( --edfm-orange );&lt;br /&gt;
	--color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--color-progressive--focus: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--background-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--background-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive: var( --edfm-orange );&lt;br /&gt;
	--border-color-progressive--hover: var( --edfm-orange-bright );&lt;br /&gt;
	--border-color-progressive--active: var( --edfm-orange-bright );&lt;br /&gt;
&lt;br /&gt;
	/* Geometry / layout */&lt;br /&gt;
	--edfm-corner: 10px;&lt;br /&gt;
	/* Full-width article workspace: keep the fixed Vector sidebar clear,&lt;br /&gt;
	   but let the article surface use the entire remaining viewport. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	--edfm-content-max: calc( 100vw - var( --edfm-sidebar-clear ) );&lt;br /&gt;
	--edfm-gutter: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   2. BASE / RESET-ADJACENT&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
html, body {&lt;br /&gt;
	background-color: var( --edfm-bg-page );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
body.mediawiki {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
/* Background treatment: a faint technical grid plus a very soft radial&lt;br /&gt;
   glow centred behind the (now centred) content column, so the composition&lt;br /&gt;
   still has quiet visual interest in the gutters on ultrawide screens&lt;br /&gt;
   instead of just flat colour -- both stay under ~3% opacity, this is&lt;br /&gt;
   texture, not a HUD. Not image assets; pure CSS gradients. */&lt;br /&gt;
body {&lt;br /&gt;
	background-image:&lt;br /&gt;
		radial-gradient( ellipse 1400px 900px at 50% 0%, rgba( 66, 199, 217, 0.05 ), transparent 60% ),&lt;br /&gt;
		linear-gradient( rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px ),&lt;br /&gt;
		linear-gradient( 90deg, rgba( 255, 255, 255, 0.025 ) 1px, transparent 1px );&lt;br /&gt;
	background-size: auto, 48px 48px, 48px 48px;&lt;br /&gt;
	background-repeat: no-repeat, repeat, repeat;&lt;br /&gt;
	background-attachment: fixed, scroll, scroll;&lt;br /&gt;
}&lt;br /&gt;
/* Full-height sidebar rail: mirrors the RuneScape.wiki behavior where the&lt;br /&gt;
   left rail has no visible bottom edge. The real #mw-panel only carries the&lt;br /&gt;
   navigation content; this fixed layer paints the uninterrupted surface,&lt;br /&gt;
   border, and shadow down the whole viewport. */&lt;br /&gt;
body::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-1 ) 0%, var( --edfm-bg-deep ) 100% );&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 10px 0 22px rgba( 0, 0, 0, 0.32 );&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	*, *::before, *::after {&lt;br /&gt;
		animation-duration: 0.001ms !important;&lt;br /&gt;
		animation-iteration-count: 1 !important;&lt;br /&gt;
		transition-duration: 0.001ms !important;&lt;br /&gt;
		scroll-behavior: auto !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* Focus visibility: applies to every interactive element, not just links. */&lt;br /&gt;
a:focus-visible,&lt;br /&gt;
button:focus-visible,&lt;br /&gt;
input:focus-visible,&lt;br /&gt;
textarea:focus-visible,&lt;br /&gt;
select:focus-visible,&lt;br /&gt;
[tabindex]:focus-visible {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
	outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Small reusable angular motif: a corner-cut bracket, used sparingly (see&lt;br /&gt;
   the redesign notes in docs/content-style-guide.md for exactly where) --&lt;br /&gt;
   deliberately not applied everywhere. */&lt;br /&gt;
.edfm-corner-cut {&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - var( --edfm-corner ) ) 0, 100% var( --edfm-corner ), 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TYPOGRAPHY&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* !important justified here: MediaWiki core&#039;s mediawiki.skinning module&lt;br /&gt;
   sets heading colour with equal-specificity plain-tag selectors and kept&lt;br /&gt;
   winning in testing despite this stylesheet loading later -- rather than&lt;br /&gt;
   keep chasing exact cascade/bundling order, force it. This is a&lt;br /&gt;
   correctness/contrast fix, not decoration. */&lt;br /&gt;
.mw-body h1, .mw-body h2, .mw-body h3, .mw-body h4, .mw-body h5, .mw-body h6,&lt;br /&gt;
.mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4, .mw-heading5, .mw-heading6,&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.01em;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
#firstHeading {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.75rem, 1.35rem + 1.45vw, 2.15rem );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	line-height: 1.18;&lt;br /&gt;
	margin: 0.15em 0 0.25em;&lt;br /&gt;
	padding-bottom: 0.22em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
/* Section headings (h2): &amp;quot;// &amp;quot; prefix in orange, bright heading text, a&lt;br /&gt;
   short orange accent segment over the dim full-width divider core&lt;br /&gt;
   already draws. Substantially more vertical space than a wiki section&lt;br /&gt;
   normally gets, per the &amp;quot;sections feel packed together&amp;quot; fix -- 3.25rem&lt;br /&gt;
   (~52px) above, ~1.1rem gap to the first content component below. If a&lt;br /&gt;
   heading opts into explicit numbering via {{Section number}}, the&lt;br /&gt;
   automatic &amp;quot;// &amp;quot; is suppressed so the two treatments don&#039;t double up. */&lt;br /&gt;
.mw-body h2 {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-bottom: 0.25em;&lt;br /&gt;
	margin-top: 2rem;&lt;br /&gt;
	margin-bottom: 0.85rem;&lt;br /&gt;
	font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;&lt;br /&gt;
	font-size: clamp( 1.28rem, 1.08rem + 0.65vw, 1.62rem );&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	letter-spacing: 0;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: 46em; /* comfortable reading measure, not the full column */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&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( --edfm-link-external-visited );&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( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Full-width article pass: the article now fills the workspace to the right edge.&lt;br /&gt;
   Historical note: this block originally centred a capped article column.&lt;br /&gt;
&lt;br /&gt;
   THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: block;&lt;br /&gt;
	margin: 0.2em 0 0.15em 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow .edfm-orange-mark {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-deck {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-size: 0.95rem;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin: 0.25em 0 0.85em 1.4em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	border: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 1.35rem );&lt;br /&gt;
	min-height: 1.78rem;&lt;br /&gt;
	margin: 0.35rem 0.675rem 1.05rem 0.675rem;&lt;br /&gt;
	padding: 0.36rem 0.56rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.76rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 2px 5px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	transition: background-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta:hover,&lt;br /&gt;
.edfm-discord-cta:focus {&lt;br /&gt;
	background: #4752c4;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 3px 8px rgba( 0, 0, 0, 0.42 );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon svg {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	fill: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Front-page chrome: the hero already names the site, so suppress the&lt;br /&gt;
   generated MediaWiki page title only on the Main Page. Keep the namespace&lt;br /&gt;
   tab label and all other article titles intact. */&lt;br /&gt;
body.page-Main_Page #firstHeading {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
body.page-Main_Page .mw-body-content {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: 52rem;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Core MediaWiki/action buttons: match EDFM dark theme instead of default white/orange controls. */&lt;br /&gt;
.mw-ui-button,&lt;br /&gt;
.mw-htmlform-submit,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button,&lt;br /&gt;
#mw-patrol-form button,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
form.mw-htmlform button,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;],&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button,&lt;br /&gt;
button.mw-ui-button,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ) {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border-strong, var( --edfm-border ) ) !important;&lt;br /&gt;
	border-radius: 0 !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	font-family: var( --edfm-mono ) !important;&lt;br /&gt;
	font-weight: 800 !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:hover,&lt;br /&gt;
.mw-htmlform-submit:hover,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:hover,&lt;br /&gt;
#mw-patrol-form button:hover,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
form.mw-htmlform button:hover,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:hover,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:hover,&lt;br /&gt;
button.mw-ui-button:hover,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):hover {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-ui-button:focus,&lt;br /&gt;
.mw-htmlform-submit:focus,&lt;br /&gt;
.mw-htmlform-ooui-wrapper button:focus,&lt;br /&gt;
#mw-patrol-form button:focus,&lt;br /&gt;
#mw-patrol-form input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
form.mw-htmlform button:focus,&lt;br /&gt;
form.mw-htmlform input[type=&amp;quot;submit&amp;quot;]:focus,&lt;br /&gt;
input[type=&amp;quot;submit&amp;quot;].mw-ui-button:focus,&lt;br /&gt;
button.mw-ui-button:focus,&lt;br /&gt;
.cdx-button:not( .cdx-button--fake-button--enabled ):focus {&lt;br /&gt;
	outline: 2px solid var( --edfm-cyan ) !important;&lt;br /&gt;
	outline-offset: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: remove the cramped review button from the public article chrome. */&lt;br /&gt;
#mw-patrol-form {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier news: after removing the repeated dispatch list, keep attribution compact. */&lt;br /&gt;
.edfm-news-attribution-compact {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	padding-top: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   23. RUNE-WIKI-INSPIRED MOBILE APP SHELL&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
/* Inspired by RuneScape.wiki&#039;s mobile ergonomics -- persistent top app bar,&lt;br /&gt;
   large touch targets, off-canvas navigation, search-forward layout, and&lt;br /&gt;
   single-column readable article flow -- while preserving EDFM&#039;s dark field&lt;br /&gt;
   manual identity and not copying RuneScape.wiki assets/CSS.&lt;br /&gt;
   The close button is injected into #mw-panel by Common.js, so it must be&lt;br /&gt;
   explicitly hidden by default; otherwise a tiny native white button appears&lt;br /&gt;
   in the desktop sidebar&#039;s top-left corner. */&lt;br /&gt;
.edfm-mobile-appbar,&lt;br /&gt;
.edfm-mobile-scrim,&lt;br /&gt;
.edfm-mobile-close-button {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	html {&lt;br /&gt;
		-webkit-text-size-adjust: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		background: var( --edfm-bg-page );&lt;br /&gt;
		overflow-x: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open {&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-appbar {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 48px 1fr 48px;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1200;&lt;br /&gt;
		min-height: 56px;&lt;br /&gt;
		padding: 0 0.35rem;&lt;br /&gt;
		background:&lt;br /&gt;
			linear-gradient( 90deg, rgba( 255, 138, 0, 0.18 ), transparent 38% ),&lt;br /&gt;
			var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 0 10px 24px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		min-width: 0;&lt;br /&gt;
		color: var( --edfm-text ) !important;&lt;br /&gt;
		font-family: var( --edfm-mono );&lt;br /&gt;
		font-weight: 800;&lt;br /&gt;
		letter-spacing: 0.05em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		overflow: hidden;&lt;br /&gt;
		text-overflow: ellipsis;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM // &#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button,&lt;br /&gt;
	.edfm-mobile-search-button,&lt;br /&gt;
	.edfm-mobile-close-button {&lt;br /&gt;
		appearance: none;&lt;br /&gt;
		-webkit-appearance: none;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		justify-content: center;&lt;br /&gt;
		min-width: 44px;&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-radius: 0;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
		font: 700 1.5rem/1 var( --edfm-mono );&lt;br /&gt;
		cursor: pointer;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-search-button:focus-visible,&lt;br /&gt;
	.edfm-mobile-close-button:focus-visible {&lt;br /&gt;
		outline: 2px solid var( --edfm-cyan );&lt;br /&gt;
		outline-offset: -4px;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-menu-button::before {&lt;br /&gt;
		content: &#039;☰&#039;;&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-search-button::before {&lt;br /&gt;
		content: &#039;⌕&#039;;&lt;br /&gt;
		font-size: 1.85rem;&lt;br /&gt;
		color: var( --edfm-cyan );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-close-button::before {&lt;br /&gt;
		content: &#039;×&#039;;&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-scrim {&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		inset: 0;&lt;br /&gt;
		z-index: 1000;&lt;br /&gt;
		background: rgba( 0, 0, 0, 0.58 );&lt;br /&gt;
		opacity: 0;&lt;br /&gt;
		pointer-events: none;&lt;br /&gt;
		transition: opacity 0.18s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open .edfm-mobile-scrim {&lt;br /&gt;
		opacity: 1;&lt;br /&gt;
		pointer-events: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		box-shadow: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: relative;&lt;br /&gt;
		z-index: 1100;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box {&lt;br /&gt;
		display: none;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.65rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head .vector-search-box {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head .vector-search-box-inner,&lt;br /&gt;
	#mw-head #searchform {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-head #searchInput {&lt;br /&gt;
		min-height: 44px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		padding: 0 0.45rem 0.35rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		flex-wrap: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li a,&lt;br /&gt;
	.vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 36px;&lt;br /&gt;
		display: inline-flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: fixed;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		left: 0;&lt;br /&gt;
		z-index: 1300;&lt;br /&gt;
		width: min( 82vw, 22rem );&lt;br /&gt;
		height: 100dvh;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0;&lt;br /&gt;
		background: var( --edfm-surface-1 );&lt;br /&gt;
		border: 0;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border );&lt;br /&gt;
		box-shadow: 18px 0 36px rgba( 0, 0, 0, 0.45 );&lt;br /&gt;
		overflow-y: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		transform: translateX( -105% );&lt;br /&gt;
		transition: transform 0.2s ease;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-menu-open #mw-panel {&lt;br /&gt;
		transform: translateX( 0 );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel::before {&lt;br /&gt;
		content: &#039;EDFM Navigation&#039;;&lt;br /&gt;
		display: block;&lt;br /&gt;
		position: sticky;&lt;br /&gt;
		top: 0;&lt;br /&gt;
		z-index: 1;&lt;br /&gt;
		padding: 1rem 3.4rem 1rem 1rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
		color: var( --edfm-orange );&lt;br /&gt;
		font: 800 0.86rem/1.2 var( --edfm-mono );&lt;br /&gt;
		letter-spacing: 0.08em;&lt;br /&gt;
		text-transform: uppercase;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-mobile-close-button {&lt;br /&gt;
		position: absolute;&lt;br /&gt;
		top: 0.3rem;&lt;br /&gt;
		right: 0.35rem;&lt;br /&gt;
		z-index: 2;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .portal,&lt;br /&gt;
	#mw-panel .vector-menu-portal {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		padding: 0.75rem 0;&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-heading {&lt;br /&gt;
		margin: 0.25rem 1rem 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:visited {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: center;&lt;br /&gt;
		min-height: 46px;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
		padding: 0.55rem 1rem;&lt;br /&gt;
		border-left: 3px solid transparent;&lt;br /&gt;
		color: var( --edfm-text-muted );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		text-decoration: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:hover,&lt;br /&gt;
	#mw-panel .vector-menu-content-list li a:focus {&lt;br /&gt;
		background: var( --edfm-surface-3 );&lt;br /&gt;
		border-left-color: var( --edfm-cyan );&lt;br /&gt;
		color: var( --edfm-text );&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a,&lt;br /&gt;
	#mw-panel .edfm-nav-current &amp;gt; a:visited {&lt;br /&gt;
		background: rgba( 255, 138, 0, 0.12 );&lt;br /&gt;
		border-left-color: var( --edfm-orange );&lt;br /&gt;
		color: var( --edfm-orange ) !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		padding: clamp( 1rem, 4vw, 1.35rem );&lt;br /&gt;
		font-size: 1rem;&lt;br /&gt;
		line-height: 1.68;&lt;br /&gt;
	}&lt;br /&gt;
	#siteNotice {&lt;br /&gt;
		margin-bottom: 1rem;&lt;br /&gt;
		padding-bottom: 0.85rem;&lt;br /&gt;
	}&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: clamp( 1.65rem, 8vw, 2.25rem );&lt;br /&gt;
		line-height: 1.1;&lt;br /&gt;
		letter-spacing: -0.015em;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		font-size: 1.18rem;&lt;br /&gt;
		line-height: 1.25;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body p,&lt;br /&gt;
	.mw-body li {&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body img,&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .thumbinner,&lt;br /&gt;
	.mw-body .thumbimage {&lt;br /&gt;
		max-width: 100% !important;&lt;br /&gt;
		height: auto !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body .thumb,&lt;br /&gt;
	.mw-body .tright,&lt;br /&gt;
	.mw-body .tleft {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		clear: both;&lt;br /&gt;
		width: auto !important;&lt;br /&gt;
		margin: 1rem 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		max-width: 100%;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		white-space: nowrap;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.wikitable td,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable th,&lt;br /&gt;
	.mw-parser-output &amp;gt; table.mw-datatable td {&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		min-width: 8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		font-size: 0.95rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: minmax( 7.5rem, 40% ) 1fr;&lt;br /&gt;
		gap: 0.5rem;&lt;br /&gt;
		padding: 0.65rem 0.8rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-label,&lt;br /&gt;
	.edfm-infobox-value {&lt;br /&gt;
		width: auto;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tbody,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type tr,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th,&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		display: block;&lt;br /&gt;
		width: 100% !important;&lt;br /&gt;
		box-sizing: border-box;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type {&lt;br /&gt;
		overflow: visible;&lt;br /&gt;
		white-space: normal;&lt;br /&gt;
		background: transparent;&lt;br /&gt;
		border: 0;&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type th {&lt;br /&gt;
		margin-top: 0.75rem;&lt;br /&gt;
		border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
	}&lt;br /&gt;
	body.page-Main_Page .mw-parser-output &amp;gt; table.wikitable:first-of-type td {&lt;br /&gt;
		margin-bottom: 0.75rem;&lt;br /&gt;
		background: var( --edfm-surface-2 );&lt;br /&gt;
		border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		padding: 1rem;&lt;br /&gt;
		margin-top: 1.5rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 430px ) {&lt;br /&gt;
	.edfm-mobile-brand::before {&lt;br /&gt;
		content: &#039;EDFM&#039;;&lt;br /&gt;
		margin-right: 0.45rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-mobile-brand {&lt;br /&gt;
		font-size: 0.88rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-infobox-row {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		gap: 0.2rem;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 22a. Mobile action tabs refinement: keep Vector&#039;s page/discussion/read/&lt;br /&gt;
   source/history controls available, but put them on one compact horizontal&lt;br /&gt;
   action rail so the first phone viewport feels like a real mobile app shell&lt;br /&gt;
   instead of two stacked desktop tab bars. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #mw-head {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		align-items: stretch;&lt;br /&gt;
		gap: 0;&lt;br /&gt;
		overflow-x: auto;&lt;br /&gt;
		overflow-y: hidden;&lt;br /&gt;
		-webkit-overflow-scrolling: touch;&lt;br /&gt;
		scrollbar-width: thin;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #left-navigation,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) #right-navigation {&lt;br /&gt;
		flex: 0 0 auto;&lt;br /&gt;
		clear: none !important;&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0 0.25rem;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		border-right: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown {&lt;br /&gt;
		float: none !important;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
	}&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-tabs-legacy li a:visited,&lt;br /&gt;
	body:not( .edfm-mobile-search-open ) .vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
		min-height: 40px;&lt;br /&gt;
		padding-left: 0.55rem;&lt;br /&gt;
		padding-right: 0.55rem;&lt;br /&gt;
		font-size: 0.68rem;&lt;br /&gt;
	}&lt;br /&gt;
	body.edfm-mobile-search-open #mw-head {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   24. HARD OVERRIDE: JUMP TILE LEFT RAIL&lt;br /&gt;
&lt;br /&gt;
   The earlier border-left rail can be swallowed by ResourceLoader/cascade or&lt;br /&gt;
   visually read as part of the tile edge. Draw the rail as a high-specificity&lt;br /&gt;
   gradient on the actual top-level TOC anchors so it is unmistakable on the&lt;br /&gt;
   live jump grid.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-orange ) 0, var( --edfm-orange ) 6px, transparent 6px ) !important;&lt;br /&gt;
	border-left: 0 !important;&lt;br /&gt;
	padding-left: 1rem !important;&lt;br /&gt;
}&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
#toc.toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output #toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.mw-parser-output .toc &amp;gt; ul &amp;gt; li &amp;gt; a:focus-visible {&lt;br /&gt;
	background-image: linear-gradient( 90deg, var( --edfm-cyan ) 0, var( --edfm-cyan ) 6px, transparent 6px ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   25. SOURCE EDIT CONFLICT / WIKITEXT DIFF THEME&lt;br /&gt;
&lt;br /&gt;
   Source-edit conflict review uses MediaWiki&#039;s diff table classes, not the&lt;br /&gt;
   normal edit textarea/WikiEditor chrome. Without this, unchanged rows and&lt;br /&gt;
   inline change pills fall back to stark white/yellow/blue defaults. Keep the&lt;br /&gt;
   old/new meaning, but render it in EDFM&#039;s dark surfaces with restrained&lt;br /&gt;
   orange/cyan accents.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-parser-output table.diff,&lt;br /&gt;
table.diff,&lt;br /&gt;
.diff {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-collapse: separate !important;&lt;br /&gt;
	border-spacing: 0 0.12rem !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-title,&lt;br /&gt;
.diff-otitle,&lt;br /&gt;
.diff-ntitle,&lt;br /&gt;
#mw-diff-otitle1,&lt;br /&gt;
#mw-diff-ntitle1 {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
td.diff-lineno,&lt;br /&gt;
.diff-lineno {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	padding: 0.35rem 0.5rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-marker,&lt;br /&gt;
.diff-marker {&lt;br /&gt;
	background: transparent !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	padding: 0.25rem 0.45rem !important;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context,&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-context,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-context,&lt;br /&gt;
.mw-diff-inline-added,&lt;br /&gt;
.mw-diff-inline-deleted,&lt;br /&gt;
.mw-diff-inline-changed,&lt;br /&gt;
.mw-diff-inline-moved {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-context:empty,&lt;br /&gt;
td.diff-addedline:empty,&lt;br /&gt;
td.diff-deletedline:empty,&lt;br /&gt;
.diff-context:empty,&lt;br /&gt;
.diff-addedline:empty,&lt;br /&gt;
.diff-deletedline:empty {&lt;br /&gt;
	/* Empty diff cells are alignment placeholders. Keep their card boundary so&lt;br /&gt;
	   the two-column source-conflict diff does not look broken, but make them&lt;br /&gt;
	   compact and neutral instead of tall blank blocks. */&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	padding-top: 0.08rem !important;&lt;br /&gt;
	padding-bottom: 0.08rem !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-deletedline,&lt;br /&gt;
.diff-deletedline,&lt;br /&gt;
.mw-diff-inline-deleted {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
td.diff-addedline,&lt;br /&gt;
.diff-addedline,&lt;br /&gt;
.mw-diff-inline-added {&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 ) !important;&lt;br /&gt;
	border-color: rgba( 66, 199, 217, 0.6 ) !important;&lt;br /&gt;
	border-left-color: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diffchange,&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	border-radius: 3px !important;&lt;br /&gt;
	padding: 0.08rem 0.22rem !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	color: var( --edfm-bg-deep ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-deletedline .diffchange,&lt;br /&gt;
.mw-diff-inline-deleted del,&lt;br /&gt;
.mw-diff-inline-changed del,&lt;br /&gt;
.mw-diff-inline-moved del {&lt;br /&gt;
	background: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.diff-addedline .diffchange,&lt;br /&gt;
.mw-diff-inline-added ins,&lt;br /&gt;
.mw-diff-inline-changed ins,&lt;br /&gt;
.mw-diff-inline-moved ins {&lt;br /&gt;
	background: var( --edfm-cyan ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-explainconflict,&lt;br /&gt;
#wpTextbox2,&lt;br /&gt;
textarea#wpTextbox2,&lt;br /&gt;
textarea.mw-textarea-oldrev {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Engineer directory portrait chips -- intentionally quiet so table rows still&lt;br /&gt;
   read like data rows, not card/list hybrids. */&lt;br /&gt;
.edfm-engineer-entry {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry .mw-file-element {&lt;br /&gt;
	width: 30px;&lt;br /&gt;
	height: 30px;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	border-radius: 3px;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-0 );&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-engineer-entry__name {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Frontier official news feed image treatment */&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image {&lt;br /&gt;
	display: block;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	/* Keep all news thumbnails uniform, including the first/primary story. */&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
	aspect-ratio: 16 / 9;&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-primary .edfm-news-card-art-image {&lt;br /&gt;
	height: 9.5rem;&lt;br /&gt;
	min-height: 9.5rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image &amp;gt; span,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-default-size,&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-description {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	height: 100% !important;&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	transition: transform 0.2s ease, filter 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-card:hover .edfm-news-card-art-image .mw-file-element {&lt;br /&gt;
	filter: brightness( 1.08 ) contrast( 1.05 );&lt;br /&gt;
	transform: scale( 1.035 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-frontier-news .edfm-news-source-badge {&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	position: absolute !important;&lt;br /&gt;
	left: 0.8rem !important;&lt;br /&gt;
	right: auto !important;&lt;br /&gt;
	bottom: 0.75rem !important;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	max-width: calc( 100% - 1.6rem );&lt;br /&gt;
	padding: 0.25rem 0.55rem;&lt;br /&gt;
	background: rgba( 10, 13, 17, 0.82 );&lt;br /&gt;
	border: 1px solid rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	box-shadow: 0 8px 18px rgba( 0, 0, 0, 0.34 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.68rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.edfm-news-attribution {&lt;br /&gt;
	margin-top: 0.85rem;&lt;br /&gt;
	padding-top: 0.75rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.45;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Patrol action: hide MediaWiki generated patrol footer/link from article chrome. */&lt;br /&gt;
.patrollink,&lt;br /&gt;
.patrollink[data-mw-interface],&lt;br /&gt;
.patrollink .cdx-button,&lt;br /&gt;
#mw-content-text + .patrollink,&lt;br /&gt;
.mw-parser-output + .patrollink {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
	visibility: hidden !important;&lt;br /&gt;
	height: 0 !important;&lt;br /&gt;
	min-height: 0 !important;&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: 0 !important;&lt;br /&gt;
	overflow: hidden !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Engineering&amp;diff=605</id>
		<title>Engineering</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Engineering&amp;diff=605"/>
		<updated>2026-08-10T17:43:45Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Move Engineering status notice above page header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Both}}&lt;br /&gt;
{{Article header|eyebrow=EDFM // Game Systems|deck=How Engineering works, and where to find blueprints, Experimental Effects, Engineers, and materials.}}&lt;br /&gt;
&lt;br /&gt;
Engineering is Elite Dangerous&#039; long-term module customisation system. It lets commanders take ordinary ship modules, suits, and handheld weapons beyond their stock specifications by spending collected materials at specialist Engineer bases. The result is not one universal upgrade path: every modification has trade-offs, every Engineer has a limited set of specialties, and the best build usually comes from choosing the right blueprint, grade, and Experimental Effect for the job.&lt;br /&gt;
&lt;br /&gt;
This page is the central hub for the Engineering section of the Field Manual. Use it as the map: start here to understand the system, then jump to individual [[Engineers]], [[Engineering Blueprints|blueprints]], [[Experimental Effects]], and material pages as they are written. See [[Elite Dangerous Field Manual:Engineering Architecture]] for how this section is organised and how new articles should be added.&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|label=Browse Engineering|[[Engineering Blueprints]] [[Experimental Effects]] [[Engineers]] [[Engineering Materials]] [[:Category:Modules|Browse by Module]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Key Reference Articles ==&lt;br /&gt;
The most fully worked-out Engineer chain on EDFM so far — a good starting point for what a complete Engineering article looks like:&lt;br /&gt;
{{Related articles|label=Key Reference Articles|[[Felicity Farseer]] [[Liz Ryder]] [[Hera Tani]] [[Broo Tarquin]] [[Multi-Cannon]] [[Overcharged]] [[Thermal Vent]]}}&lt;br /&gt;
&lt;br /&gt;
== What Is Engineering? ==&lt;br /&gt;
Engineering is the process of applying specialist modifications to equipment. For ships, that means taking a module such as a Frame Shift Drive, power plant, multi-cannon, shield booster, or thruster and applying a blueprint that changes its statistics. A Frame Shift Drive might be tuned for longer range; a weapon might be tuned for higher damage; a shield booster might be tuned for more raw shield strength.&lt;br /&gt;
&lt;br /&gt;
Most ship Engineering follows the same pattern:&lt;br /&gt;
* choose the module you want to modify;&lt;br /&gt;
* choose a compatible blueprint;&lt;br /&gt;
* spend the required materials to apply and improve that blueprint;&lt;br /&gt;
* optionally add one compatible Experimental Effect; and&lt;br /&gt;
* decide whether the resulting trade-offs fit the build.&lt;br /&gt;
&lt;br /&gt;
Engineering is powerful because it lets a ship specialise. It is also easy to overdo: more damage may mean more heat or distributor draw, more jump range may mean lower integrity, and stronger defences may mean more mass or power use. Treat Engineering as build tuning, not a free upgrade button.&lt;br /&gt;
&lt;br /&gt;
Odyssey suit and weapon Engineering is related, but separate. It uses different Engineers, different materials, and different equipment rules. EDFM keeps ship Engineers and Odyssey Engineers in the same Engineering section for navigation, but individual pages should be clear about which system they cover.&lt;br /&gt;
&lt;br /&gt;
== How Engineering Works ==&lt;br /&gt;
Ship Engineering is built around three things: the Engineer, the blueprint, and the materials.&lt;br /&gt;
&lt;br /&gt;
An Engineer is the specialist who performs the work. Each Engineer has a base, an unlock path, and a limited list of blueprints they can apply. Some Engineers can take a blueprint all the way to Grade 5, while others may only offer lower grades for the same module family.&lt;br /&gt;
&lt;br /&gt;
A blueprint is the modification itself, such as [[Overcharged]], Increased FSD Range, Dirty Drives, Reinforced, or Heavy Duty. Blueprints are tied to module types: the same blueprint name may apply to several compatible modules, but it does not apply to everything. A commander must bring the correct module to an Engineer who supports that blueprint.&lt;br /&gt;
&lt;br /&gt;
Materials are the cost. Ship Engineering uses Raw, Manufactured, and Encoded materials. Odyssey Engineering uses its own on-foot assets, goods, and data. Credits are rarely the limiting factor; the real preparation is collecting the right material set and knowing where to trade for missing pieces.&lt;br /&gt;
&lt;br /&gt;
A practical Engineering visit usually looks like this:&lt;br /&gt;
# Fit or store the module you want to modify.&lt;br /&gt;
# Travel to an Engineer who supports the desired blueprint and grade.&lt;br /&gt;
# Apply the blueprint through one or more grades.&lt;br /&gt;
# Add an Experimental Effect if the module and blueprint support one.&lt;br /&gt;
# Test the result in outfitting, flight, combat, or exploration conditions.&lt;br /&gt;
&lt;br /&gt;
== Engineering Grades ==&lt;br /&gt;
Most ship blueprints are divided into grades, usually Grade 1 through Grade 5. Higher grades push the module further from stock and require higher-grade materials. Grade 1 is cheap and small; Grade 5 is expensive and build-defining.&lt;br /&gt;
&lt;br /&gt;
Within a grade, Engineering progress fills as the modification is applied. Early grades usually complete quickly. Later grades may require several applications before the grade is effectively complete, especially at Grade 5. The exact material cost depends on the blueprint, module, grade, and how far the current grade has already progressed.&lt;br /&gt;
&lt;br /&gt;
Grades are not automatically better in every situation. A lower grade can be enough when the goal is to unlock the next Engineer, reduce material cost, avoid an unwanted penalty, or make a temporary module usable without fully investing in it.&lt;br /&gt;
&lt;br /&gt;
== Engineer Reputation ==&lt;br /&gt;
Each Engineer has a reputation level with the commander. Reputation gates access to higher grades at that Engineer: the more trusted you are, the further they will push a module.&lt;br /&gt;
&lt;br /&gt;
The normal way to build reputation is to perform Engineering with that Engineer. Some Engineers also accept activity related to their specialty, such as selling exploration data, trading, bounty vouchers, or combat bonds at their base. The exact reputation options vary by Engineer and should be documented on the individual Engineer page.&lt;br /&gt;
&lt;br /&gt;
A useful early habit is to engineer a low-cost module through enough grades to raise reputation before spending rare materials on the final build. This is especially helpful when arriving at a newly unlocked Engineer who can eventually provide Grade 5 work but does not offer it to you immediately.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlocks ==&lt;br /&gt;
Engineers are not all available at once. Most unlock paths have several stages:&lt;br /&gt;
* &#039;&#039;&#039;Discovery&#039;&#039;&#039; — learning that the Engineer exists, often through another Engineer or by meeting a broad career condition.&lt;br /&gt;
* &#039;&#039;&#039;Invitation&#039;&#039;&#039; — satisfying the requirement that makes the Engineer contact you.&lt;br /&gt;
* &#039;&#039;&#039;Unlock&#039;&#039;&#039; — delivering commodities, materials, vouchers, or another proof of work at the Engineer base.&lt;br /&gt;
* &#039;&#039;&#039;Reputation&#039;&#039;&#039; — increasing access to higher grades after the Engineer is unlocked.&lt;br /&gt;
&lt;br /&gt;
Some Engineers sit in chains. For example, one Engineer may refer you to the next after you build enough reputation with them. This is why EDFM separates short unlock summaries from full walkthroughs: a card can tell you the requirement, while a guide can explain the route, cargo risks, material sources, and recommended order.&lt;br /&gt;
&lt;br /&gt;
See [[Engineer Unlock Guide]] for the chain-focused view and individual Engineer articles for confirmed requirements.&lt;br /&gt;
&lt;br /&gt;
== Blueprints ==&lt;br /&gt;
Blueprints are the named modifications applied to modules. They define the positive effects, penalties, grades, material costs, and eligible module types. Examples include weapon damage blueprints, FSD range blueprints, shield booster blueprints, power plant blueprints, and scanner blueprints.&lt;br /&gt;
&lt;br /&gt;
A good blueprint page should answer four questions quickly:&lt;br /&gt;
* What module types can use this blueprint?&lt;br /&gt;
* What does each grade improve or penalise?&lt;br /&gt;
* Which Engineers can apply it, and to what maximum grade?&lt;br /&gt;
* Which Experimental Effects can be paired with it?&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Blueprints]] to browse individual blueprint articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
Experimental Effects are optional special properties added after a ship module has been engineered. They are not the same thing as grades: a blueprint changes the module&#039;s baseline statistics, while an Experimental Effect adds a specific extra behaviour or trade-off.&lt;br /&gt;
&lt;br /&gt;
Examples include effects that change heat behaviour, damage type, ammunition behaviour, shield interaction, or module utility. Not every module supports an Experimental Effect, and compatible effects depend on the module and blueprint family.&lt;br /&gt;
&lt;br /&gt;
A module can normally carry one Experimental Effect at a time. Replacing it means choosing a different effect and paying the required materials again, so the effect should match the ship&#039;s job rather than simply sounding strong on paper.&lt;br /&gt;
&lt;br /&gt;
See [[Experimental Effects]] to browse individual effect articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Pinned Blueprints ==&lt;br /&gt;
A pinned blueprint is a blueprint saved from an Engineer so it can be used later through Remote Workshop. Pinning is one of the most important quality-of-life steps in Engineering because it lets commanders continue upgrading common modules without returning to the Engineer base every time.&lt;br /&gt;
&lt;br /&gt;
Each Engineer can have one pinned blueprint. The best pin is usually a blueprint you expect to use repeatedly, such as a common Frame Shift Drive, thruster, weapon, shield, or power blueprint. Pinned choices are account-wide conveniences, not permanent commitments: you can revisit the Engineer and change the pinned blueprint if your priorities change.&lt;br /&gt;
&lt;br /&gt;
Pinned blueprints do not replace Engineer unlocks. You still need to unlock and gain reputation with the Engineer who provides the blueprint, and you still need the required materials.&lt;br /&gt;
&lt;br /&gt;
== Remote Workshop ==&lt;br /&gt;
Remote Workshop lets commanders apply pinned ship blueprints from stations that offer the service, without flying back to the Engineer base. It is useful for finishing routine upgrades, working on stored modules, or making progress while away from the Engineer&#039;s system.&lt;br /&gt;
&lt;br /&gt;
Remote Workshop has limits. It depends on pinned blueprints, uses your existing Engineer access, and does not replace the full services of an Engineer base. Most importantly, Experimental Effects must be handled at an Engineer base rather than added remotely.&lt;br /&gt;
&lt;br /&gt;
In practice, Remote Workshop is best used for repeatable baseline work: pin the blueprint, collect the materials, apply the grades remotely, then visit the Engineer only when you need to change the pin, add an Experimental Effect, or use a blueprint that is not pinned.&lt;br /&gt;
&lt;br /&gt;
== Engineering Materials ==&lt;br /&gt;
Materials are the resource cost of Engineering. They do not take cargo space in the normal ship cargo rack, but they do have storage caps. Material management is a major part of Engineering preparation.&lt;br /&gt;
&lt;br /&gt;
Ship Engineering materials are grouped into three broad categories:&lt;br /&gt;
* &#039;&#039;&#039;Raw materials&#039;&#039;&#039; — minerals and elements gathered mostly from planetary surfaces, mining by-products, and certain signal or mission sources.&lt;br /&gt;
* &#039;&#039;&#039;Manufactured materials&#039;&#039;&#039; — components recovered from ships, signal sources, mission rewards, combat aftermath, and salvage.&lt;br /&gt;
* &#039;&#039;&#039;Encoded materials&#039;&#039;&#039; — data gathered from scans, data points, wakes, missions, and signal sources.&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering uses different on-foot assets, goods, and data. Do not assume a ship material source will help with suit or weapon upgrades.&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Materials]] for the materials hub.&lt;br /&gt;
&lt;br /&gt;
== Material Traders ==&lt;br /&gt;
Material Traders let commanders exchange materials within a category. Raw Material Traders exchange raw materials, Manufactured Material Traders exchange manufactured materials, and Encoded Material Traders exchange encoded data.&lt;br /&gt;
&lt;br /&gt;
Trading is most efficient when moving down from high-grade materials to lower-grade ones. Trading upward is expensive, and trading across material families within the same category is less efficient than trading within the same family. For that reason, many commanders farm high-value materials and trade down to fill out common blueprint costs.&lt;br /&gt;
&lt;br /&gt;
Material Traders are a convenience, not a complete replacement for gathering. They are best used to smooth out shortages after a farming run or before visiting an Engineer.&lt;br /&gt;
&lt;br /&gt;
== Engineers ==&lt;br /&gt;
Engineers are the NPC specialists who perform the modifications. Each Engineer page should cover location, access requirements, unlock cost, specialties, maximum grades, related Engineers, and sources. The directory page keeps the roster browsable at a glance.&lt;br /&gt;
&lt;br /&gt;
Ship Engineers and Odyssey Engineers should not be mixed together inside build advice. They use different equipment and material systems, and Odyssey Engineering is not available in Legacy. When an article discusses both, it should label the distinction clearly.&lt;br /&gt;
&lt;br /&gt;
See [[Engineers]] to browse individual Engineer articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Engineering Guides ==&lt;br /&gt;
Engineering guides should focus on routes and decisions rather than duplicating reference tables. A good guide explains the practical order of operations: what to unlock first, what to carry, what can be done remotely, which commodities are risky, what materials to collect in advance, and which steps can be combined in one trip.&lt;br /&gt;
&lt;br /&gt;
Examples of useful guide topics include:&lt;br /&gt;
* first-ship Engineering route for new commanders;&lt;br /&gt;
* Frame Shift Drive range preparation;&lt;br /&gt;
* combat ship weapon and defence tuning;&lt;br /&gt;
* Colonia Engineer preparation;&lt;br /&gt;
* Odyssey suit and weapon unlock routes; and&lt;br /&gt;
* material gathering loops for common blueprint families.&lt;br /&gt;
&lt;br /&gt;
See [[Unlocking Broo Tarquin]] for a worked example of a standalone unlock guide, and [[Elite Dangerous Field Manual:Creating a Guide]] for how the encyclopedia/guide split works.&lt;br /&gt;
&lt;br /&gt;
== Lists &amp;amp; Comparisons ==&lt;br /&gt;
Structured-data proof of concept, generated from [[Module:Data/Engineers/index|Module:Data/Engineers]] rather than hand-maintained — see [[Elite Dangerous Field Manual:Adding Structured Data]]. Partial (4 of 38 Engineers) until backfilled further.&lt;br /&gt;
{{Related articles|label=Lists &amp;amp; Comparisons|[[List of Engineers]] [[Engineer Capability Comparison]]}}&lt;br /&gt;
&lt;br /&gt;
As more structured Engineer and blueprint data is added, this section should become the comparison layer: who offers a blueprint, which Engineer reaches the highest grade, which unlock chain is shortest, and which Engineers are worth combining in a single route.&lt;br /&gt;
&lt;br /&gt;
== External Tools ==&lt;br /&gt;
Community tools are useful for planning Engineering because they can track large material inventories and simulate full builds before you spend anything in-game. Use them for planning, then use EDFM pages for Field Manual explanations, unlock notes, and source-backed reference details.&lt;br /&gt;
&lt;br /&gt;
See the Engineering material tracking section of [[Tools and Resources]] for community apps that track blueprint/material progress.&lt;br /&gt;
&lt;br /&gt;
== Related Categories ==&lt;br /&gt;
* [[:Category:Engineering]]&lt;br /&gt;
* [[:Category:Engineers]]&lt;br /&gt;
* [[:Category:Engineering Blueprints]]&lt;br /&gt;
* [[:Category:Experimental Effects]]&lt;br /&gt;
* [[:Category:Engineering Materials]]&lt;br /&gt;
* [[:Category:Weapon Engineering]]&lt;br /&gt;
* [[:Category:Core Internal Engineering]]&lt;br /&gt;
* [[:Category:Optional Internal Engineering]]&lt;br /&gt;
* [[:Category:Utility Engineering]]&lt;br /&gt;
* [[:Category:Odyssey Engineering]]&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Ships and Equipment]] [[Game Reference]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=604</id>
		<title>Template:EDFM style/styles.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=604"/>
		<updated>2026-08-10T17:40:15Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Compact and center article status banners&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Shared styling for EDFM&#039;s editorial templates (Article status, Draft&lt;br /&gt;
   warning, Prerequisites, Related articles, etc. -- see each template&#039;s&lt;br /&gt;
   own page for which classes it uses). Freely uses the --edfm-* custom&lt;br /&gt;
   properties defined in MediaWiki:Common.css -- see the note there under&lt;br /&gt;
   &amp;quot;6. Panels&amp;quot; for why these classes live only in this file and not&lt;br /&gt;
   duplicated in Common.css too.&lt;br /&gt;
&lt;br /&gt;
   2026-08-07 SECOND PASS: panels keep the accent-rail + corner-cut&lt;br /&gt;
   language from the first pass (both are explicitly the &amp;quot;hierarchy&lt;br /&gt;
   without a full border around everything&amp;quot; technique this redesign asks&lt;br /&gt;
   for) but get noticeably more padding/breathing room; the status module&lt;br /&gt;
   is rebuilt with a coloured header band and stacked label/value metadata&lt;br /&gt;
   instead of a plain left-rail box with inline &amp;quot;Label: value&amp;quot; text; and a&lt;br /&gt;
   new .edfm-related component replaces the old plain notice-style&lt;br /&gt;
   &amp;quot;Related articles&amp;quot; bar with a small tile row. */&lt;br /&gt;
&lt;br /&gt;
.edfm-box,&lt;br /&gt;
.edfm-panel {&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 1.1em 1.3em;&lt;br /&gt;
	margin: 1.4em 0;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-info {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-warning,&lt;br /&gt;
.edfm-box.edfm-warning {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	background: #201a12;&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-draft,&lt;br /&gt;
.edfm-box.edfm-draft {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-panel-reference {&lt;br /&gt;
	border-left-color: var( --edfm-blue );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box.edfm-disclaimer {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	font-size: 0.92em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dl,&lt;br /&gt;
.edfm-panel dl {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dt,&lt;br /&gt;
.edfm-panel dt {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	float: left;&lt;br /&gt;
	clear: left;&lt;br /&gt;
	margin-right: 0.5em;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-box dd,&lt;br /&gt;
.edfm-panel dd {&lt;br /&gt;
	margin-left: 11em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-inline-flag {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Article metadata / status module (Template:Article status) --------&lt;br /&gt;
   2026-08-08 second revision: a compact maintenance banner (RuneScape&lt;br /&gt;
   Wiki-style notice as the UX reference, not its markup/colours) rather&lt;br /&gt;
   than a small internal dashboard -- an icon, the bare status word (no&lt;br /&gt;
   mode/version appended to it), one standard sentence for that status,&lt;br /&gt;
   and a concise &amp;quot;Uncertain: ...&amp;quot; line when there&#039;s something worth&lt;br /&gt;
   flagging. The full editorial record (reviewer, mode, version, source&lt;br /&gt;
   quality, the complete uncertainty note, etc.) moves to the&lt;br /&gt;
   .edfm-status-expand collapsible below, not removed, just no longer&lt;br /&gt;
   competing with the article for attention. Semantic colouring always&lt;br /&gt;
   pairs with the visible text status/icon -- never colour alone, per the&lt;br /&gt;
   site&#039;s Verification Policy. Three colour tiers cover the seven actual&lt;br /&gt;
   status values (see Elite Dangerous Field Manual: Verification Policy):&lt;br /&gt;
   positive/confirmed (Verified, Partially verified) in cyan -- matching&lt;br /&gt;
   &amp;quot;cyan = verification information&amp;quot; from the colour system;&lt;br /&gt;
   attention-needed (Needs review, Upcoming) in orange -- matching&lt;br /&gt;
   &amp;quot;orange = important actions/emphasis&amp;quot;; and neutral (Draft, Historical,&lt;br /&gt;
   Legacy only) in a dim neutral tone -- Draft moved here from the&lt;br /&gt;
   attention tier, since &amp;quot;still being written&amp;quot; isn&#039;t the same kind of&lt;br /&gt;
   concern as &amp;quot;unchecked&amp;quot; or &amp;quot;not released yet&amp;quot;. The template sets the&lt;br /&gt;
   modifier class via #switch. */&lt;br /&gt;
.edfm-status {&lt;br /&gt;
	border-left-width: 4px;&lt;br /&gt;
	border-left-style: solid;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	max-width: 64em;&lt;br /&gt;
	margin: 1em auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention { border-left-color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }&lt;br /&gt;
&lt;br /&gt;
.edfm-status-banner {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-start;&lt;br /&gt;
	gap: 0.65em;&lt;br /&gt;
	padding: 0.55em 0.9em;&lt;br /&gt;
}&lt;br /&gt;
/* Fixed-size icon swatch -- a single CSS-safe glyph (no icon font/library),&lt;br /&gt;
   never the same shape as a hard error: a checkmark for the positive&lt;br /&gt;
   tier, a plain &amp;quot;!&amp;quot; (not a red triangle) for attention, a quiet &amp;quot;i&amp;quot; for&lt;br /&gt;
   neutral. &amp;quot;Needs review&amp;quot; means not fully verified yet, not wrong. */&lt;br /&gt;
.edfm-status-icon {&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
	width: 1.45em;&lt;br /&gt;
	height: 1.45em;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-icon { background: var( --edfm-status-positive-bg ); color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-icon { background: var( --edfm-status-attention-bg ); color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-icon { background: var( --edfm-status-neutral-bg ); color: var( --edfm-text-dim ); }&lt;br /&gt;
.edfm-status-banner-body {&lt;br /&gt;
	flex: 1 1 auto;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-heading {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.9em;&lt;br /&gt;
	margin-bottom: 0.2em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status--positive .edfm-status-heading { color: var( --edfm-status-positive ); }&lt;br /&gt;
.edfm-status--attention .edfm-status-heading { color: var( --edfm-status-attention ); }&lt;br /&gt;
.edfm-status--neutral .edfm-status-heading { color: var( --edfm-text ); }&lt;br /&gt;
.edfm-status-message {&lt;br /&gt;
	margin: 0 0 0.2em;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.86em;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-uncertain-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-details {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );&lt;br /&gt;
	gap: 0.85em 1.25em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.85em 1em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 0.2em;&lt;br /&gt;
	/* Grid items default to min-width: auto, which floors their shrink at&lt;br /&gt;
	   their content&#039;s min-content size -- a long slash-joined run like&lt;br /&gt;
	   &amp;quot;prerequisite/discovery/invitation/unlock&amp;quot; (no spaces, so no natural&lt;br /&gt;
	   break point in some engines) could floor a column wider than its&lt;br /&gt;
	   track and spill into the next one at in-between widths (2026-08-08:&lt;br /&gt;
	   found at ~820px on The Dweller). Letting the item shrink below that&lt;br /&gt;
	   floor, paired with the dd&#039;s own overflow-wrap below, keeps long&lt;br /&gt;
	   values inside their own column at every width instead. */&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dt {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	float: none;&lt;br /&gt;
	clear: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.7em;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-row dd {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.98em;&lt;br /&gt;
	overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 480px ) {&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Related content (Template:Related articles) -----------------------&lt;br /&gt;
   A small navigation strip instead of a generic bordered notice -- a&lt;br /&gt;
   quiet uppercase label above a row of individually-boxed link &amp;quot;tiles&amp;quot;,&lt;br /&gt;
   each with a trailing arrow. Deliberately styles the `&amp;lt;a&amp;gt;` elements&lt;br /&gt;
   directly (not container-level flexbox) so the freeform wikitext link&lt;br /&gt;
   list passed into the template (arbitrary separators/whitespace between&lt;br /&gt;
   links) can&#039;t break the layout -- every link gets its own tile&lt;br /&gt;
   regardless of what, if anything, sits between them in the source. */&lt;br /&gt;
.edfm-related {&lt;br /&gt;
	margin: 1.6em 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-label {&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin-bottom: 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 0.65em 1.1em;&lt;br /&gt;
	margin: 0 0.7em 0.7em 0;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-left-color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a::after {&lt;br /&gt;
	content: &#039;\2192&#039;;&lt;br /&gt;
}&lt;br /&gt;
.edfm-related-links a:hover {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- &amp;quot;View verification details&amp;quot; collapsible ---------------------------&lt;br /&gt;
   Wraps everything beyond the compact banner (Status, Last reviewed,&lt;br /&gt;
   Reviewer, Game mode, Version coverage, Source quality, the full Known&lt;br /&gt;
   uncertainty text, and the optional Legacy differences/Recent changes/&lt;br /&gt;
   Verification notes fields) behind a native mw-collapsible toggle&lt;br /&gt;
   instead of a new dependency -- jquery.makeCollapsible&lt;br /&gt;
   is core MediaWiki, loaded on every page by mediawiki.page.ready. For a&lt;br /&gt;
   plain &amp;lt;div&amp;gt; its default behaviour prepends a&lt;br /&gt;
   &amp;lt;button class=&amp;quot;mw-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;mw-collapsible-text&amp;quot;&amp;gt;&lt;br /&gt;
   as the first child and wraps the remaining content in&lt;br /&gt;
   .mw-collapsible-content -- reset here to a plain full-width text row&lt;br /&gt;
   matching this module&#039;s mono/uppercase metadata language, instead of the&lt;br /&gt;
   browser&#039;s default button chrome, which would render as a jarring light&lt;br /&gt;
   box against this site&#039;s dark surfaces (same class of fix as the Save&lt;br /&gt;
   dialog/toolbar/#filetoc native-component passes elsewhere on this&lt;br /&gt;
   site). */&lt;br /&gt;
.edfm-status-expand {&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0.45em 1em;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-size: 0.75em;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:hover,&lt;br /&gt;
.edfm-status-expand &amp;gt; .mw-collapsible-toggle:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-status-expand .mw-collapsible-content .edfm-status-details {&lt;br /&gt;
	padding-top: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* --- Fact / Field Manual Recommendation callouts ------------------------&lt;br /&gt;
   Template:Fact and Template:Field manual recommendation -- a small&lt;br /&gt;
   labelled distinction between a verified fact and EDFM&#039;s own editorial&lt;br /&gt;
   judgement (see Elite Dangerous Field Manual:Engineering Architecture on&lt;br /&gt;
   why pinning/strategy guidance is treated as editorial, not database&lt;br /&gt;
   fact). Deliberately reuses the accent-rail + cyan/orange language&lt;br /&gt;
   already used everywhere else on this site (status positive/attention,&lt;br /&gt;
   infobox labels, related-link hover) instead of inventing a new callout&lt;br /&gt;
   style: cyan marks a verified fact (&amp;quot;cyan = verification information&amp;quot;),&lt;br /&gt;
   orange marks editorial guidance (&amp;quot;orange = important actions/&lt;br /&gt;
   emphasis&amp;quot;) -- see the colour rules this mirrors in this file&#039;s own&lt;br /&gt;
   .edfm-status-- modifiers above. */&lt;br /&gt;
.edfm-fact-recommendation {&lt;br /&gt;
	border-left: 3px solid var( --edfm-border );&lt;br /&gt;
	padding: 0.5em 0.9em;&lt;br /&gt;
	margin: 0.8em 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact {&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-label {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-family: &#039;JetBrains Mono&#039;, &#039;Fira Code&#039;, Consolas, &#039;SF Mono&#039;, Menlo, &#039;Courier New&#039;, monospace;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 0.72em;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--fact .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation--recommendation .edfm-fact-recommendation-label {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-fact-recommendation-body {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Engineering&amp;diff=603</id>
		<title>Engineering</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Engineering&amp;diff=603"/>
		<updated>2026-08-10T17:31:58Z</updated>

		<summary type="html">&lt;p&gt;EDFM Site Maintenance: Fill out Engineering hub overview sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Game Systems|deck=How Engineering works, and where to find blueprints, Experimental Effects, Engineers, and materials.}}&lt;br /&gt;
{{Article status|status=Draft|mode=Both}}&lt;br /&gt;
&lt;br /&gt;
Engineering is Elite Dangerous&#039; long-term module customisation system. It lets commanders take ordinary ship modules, suits, and handheld weapons beyond their stock specifications by spending collected materials at specialist Engineer bases. The result is not one universal upgrade path: every modification has trade-offs, every Engineer has a limited set of specialties, and the best build usually comes from choosing the right blueprint, grade, and Experimental Effect for the job.&lt;br /&gt;
&lt;br /&gt;
This page is the central hub for the Engineering section of the Field Manual. Use it as the map: start here to understand the system, then jump to individual [[Engineers]], [[Engineering Blueprints|blueprints]], [[Experimental Effects]], and material pages as they are written. See [[Elite Dangerous Field Manual:Engineering Architecture]] for how this section is organised and how new articles should be added.&lt;br /&gt;
&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|label=Browse Engineering|[[Engineering Blueprints]] [[Experimental Effects]] [[Engineers]] [[Engineering Materials]] [[:Category:Modules|Browse by Module]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Key Reference Articles ==&lt;br /&gt;
The most fully worked-out Engineer chain on EDFM so far — a good starting point for what a complete Engineering article looks like:&lt;br /&gt;
{{Related articles|label=Key Reference Articles|[[Felicity Farseer]] [[Liz Ryder]] [[Hera Tani]] [[Broo Tarquin]] [[Multi-Cannon]] [[Overcharged]] [[Thermal Vent]]}}&lt;br /&gt;
&lt;br /&gt;
== What Is Engineering? ==&lt;br /&gt;
Engineering is the process of applying specialist modifications to equipment. For ships, that means taking a module such as a Frame Shift Drive, power plant, multi-cannon, shield booster, or thruster and applying a blueprint that changes its statistics. A Frame Shift Drive might be tuned for longer range; a weapon might be tuned for higher damage; a shield booster might be tuned for more raw shield strength.&lt;br /&gt;
&lt;br /&gt;
Most ship Engineering follows the same pattern:&lt;br /&gt;
* choose the module you want to modify;&lt;br /&gt;
* choose a compatible blueprint;&lt;br /&gt;
* spend the required materials to apply and improve that blueprint;&lt;br /&gt;
* optionally add one compatible Experimental Effect; and&lt;br /&gt;
* decide whether the resulting trade-offs fit the build.&lt;br /&gt;
&lt;br /&gt;
Engineering is powerful because it lets a ship specialise. It is also easy to overdo: more damage may mean more heat or distributor draw, more jump range may mean lower integrity, and stronger defences may mean more mass or power use. Treat Engineering as build tuning, not a free upgrade button.&lt;br /&gt;
&lt;br /&gt;
Odyssey suit and weapon Engineering is related, but separate. It uses different Engineers, different materials, and different equipment rules. EDFM keeps ship Engineers and Odyssey Engineers in the same Engineering section for navigation, but individual pages should be clear about which system they cover.&lt;br /&gt;
&lt;br /&gt;
== How Engineering Works ==&lt;br /&gt;
Ship Engineering is built around three things: the Engineer, the blueprint, and the materials.&lt;br /&gt;
&lt;br /&gt;
An Engineer is the specialist who performs the work. Each Engineer has a base, an unlock path, and a limited list of blueprints they can apply. Some Engineers can take a blueprint all the way to Grade 5, while others may only offer lower grades for the same module family.&lt;br /&gt;
&lt;br /&gt;
A blueprint is the modification itself, such as [[Overcharged]], Increased FSD Range, Dirty Drives, Reinforced, or Heavy Duty. Blueprints are tied to module types: the same blueprint name may apply to several compatible modules, but it does not apply to everything. A commander must bring the correct module to an Engineer who supports that blueprint.&lt;br /&gt;
&lt;br /&gt;
Materials are the cost. Ship Engineering uses Raw, Manufactured, and Encoded materials. Odyssey Engineering uses its own on-foot assets, goods, and data. Credits are rarely the limiting factor; the real preparation is collecting the right material set and knowing where to trade for missing pieces.&lt;br /&gt;
&lt;br /&gt;
A practical Engineering visit usually looks like this:&lt;br /&gt;
# Fit or store the module you want to modify.&lt;br /&gt;
# Travel to an Engineer who supports the desired blueprint and grade.&lt;br /&gt;
# Apply the blueprint through one or more grades.&lt;br /&gt;
# Add an Experimental Effect if the module and blueprint support one.&lt;br /&gt;
# Test the result in outfitting, flight, combat, or exploration conditions.&lt;br /&gt;
&lt;br /&gt;
== Engineering Grades ==&lt;br /&gt;
Most ship blueprints are divided into grades, usually Grade 1 through Grade 5. Higher grades push the module further from stock and require higher-grade materials. Grade 1 is cheap and small; Grade 5 is expensive and build-defining.&lt;br /&gt;
&lt;br /&gt;
Within a grade, Engineering progress fills as the modification is applied. Early grades usually complete quickly. Later grades may require several applications before the grade is effectively complete, especially at Grade 5. The exact material cost depends on the blueprint, module, grade, and how far the current grade has already progressed.&lt;br /&gt;
&lt;br /&gt;
Grades are not automatically better in every situation. A lower grade can be enough when the goal is to unlock the next Engineer, reduce material cost, avoid an unwanted penalty, or make a temporary module usable without fully investing in it.&lt;br /&gt;
&lt;br /&gt;
== Engineer Reputation ==&lt;br /&gt;
Each Engineer has a reputation level with the commander. Reputation gates access to higher grades at that Engineer: the more trusted you are, the further they will push a module.&lt;br /&gt;
&lt;br /&gt;
The normal way to build reputation is to perform Engineering with that Engineer. Some Engineers also accept activity related to their specialty, such as selling exploration data, trading, bounty vouchers, or combat bonds at their base. The exact reputation options vary by Engineer and should be documented on the individual Engineer page.&lt;br /&gt;
&lt;br /&gt;
A useful early habit is to engineer a low-cost module through enough grades to raise reputation before spending rare materials on the final build. This is especially helpful when arriving at a newly unlocked Engineer who can eventually provide Grade 5 work but does not offer it to you immediately.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlocks ==&lt;br /&gt;
Engineers are not all available at once. Most unlock paths have several stages:&lt;br /&gt;
* &#039;&#039;&#039;Discovery&#039;&#039;&#039; — learning that the Engineer exists, often through another Engineer or by meeting a broad career condition.&lt;br /&gt;
* &#039;&#039;&#039;Invitation&#039;&#039;&#039; — satisfying the requirement that makes the Engineer contact you.&lt;br /&gt;
* &#039;&#039;&#039;Unlock&#039;&#039;&#039; — delivering commodities, materials, vouchers, or another proof of work at the Engineer base.&lt;br /&gt;
* &#039;&#039;&#039;Reputation&#039;&#039;&#039; — increasing access to higher grades after the Engineer is unlocked.&lt;br /&gt;
&lt;br /&gt;
Some Engineers sit in chains. For example, one Engineer may refer you to the next after you build enough reputation with them. This is why EDFM separates short unlock summaries from full walkthroughs: a card can tell you the requirement, while a guide can explain the route, cargo risks, material sources, and recommended order.&lt;br /&gt;
&lt;br /&gt;
See [[Engineer Unlock Guide]] for the chain-focused view and individual Engineer articles for confirmed requirements.&lt;br /&gt;
&lt;br /&gt;
== Blueprints ==&lt;br /&gt;
Blueprints are the named modifications applied to modules. They define the positive effects, penalties, grades, material costs, and eligible module types. Examples include weapon damage blueprints, FSD range blueprints, shield booster blueprints, power plant blueprints, and scanner blueprints.&lt;br /&gt;
&lt;br /&gt;
A good blueprint page should answer four questions quickly:&lt;br /&gt;
* What module types can use this blueprint?&lt;br /&gt;
* What does each grade improve or penalise?&lt;br /&gt;
* Which Engineers can apply it, and to what maximum grade?&lt;br /&gt;
* Which Experimental Effects can be paired with it?&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Blueprints]] to browse individual blueprint articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
Experimental Effects are optional special properties added after a ship module has been engineered. They are not the same thing as grades: a blueprint changes the module&#039;s baseline statistics, while an Experimental Effect adds a specific extra behaviour or trade-off.&lt;br /&gt;
&lt;br /&gt;
Examples include effects that change heat behaviour, damage type, ammunition behaviour, shield interaction, or module utility. Not every module supports an Experimental Effect, and compatible effects depend on the module and blueprint family.&lt;br /&gt;
&lt;br /&gt;
A module can normally carry one Experimental Effect at a time. Replacing it means choosing a different effect and paying the required materials again, so the effect should match the ship&#039;s job rather than simply sounding strong on paper.&lt;br /&gt;
&lt;br /&gt;
See [[Experimental Effects]] to browse individual effect articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Pinned Blueprints ==&lt;br /&gt;
A pinned blueprint is a blueprint saved from an Engineer so it can be used later through Remote Workshop. Pinning is one of the most important quality-of-life steps in Engineering because it lets commanders continue upgrading common modules without returning to the Engineer base every time.&lt;br /&gt;
&lt;br /&gt;
Each Engineer can have one pinned blueprint. The best pin is usually a blueprint you expect to use repeatedly, such as a common Frame Shift Drive, thruster, weapon, shield, or power blueprint. Pinned choices are account-wide conveniences, not permanent commitments: you can revisit the Engineer and change the pinned blueprint if your priorities change.&lt;br /&gt;
&lt;br /&gt;
Pinned blueprints do not replace Engineer unlocks. You still need to unlock and gain reputation with the Engineer who provides the blueprint, and you still need the required materials.&lt;br /&gt;
&lt;br /&gt;
== Remote Workshop ==&lt;br /&gt;
Remote Workshop lets commanders apply pinned ship blueprints from stations that offer the service, without flying back to the Engineer base. It is useful for finishing routine upgrades, working on stored modules, or making progress while away from the Engineer&#039;s system.&lt;br /&gt;
&lt;br /&gt;
Remote Workshop has limits. It depends on pinned blueprints, uses your existing Engineer access, and does not replace the full services of an Engineer base. Most importantly, Experimental Effects must be handled at an Engineer base rather than added remotely.&lt;br /&gt;
&lt;br /&gt;
In practice, Remote Workshop is best used for repeatable baseline work: pin the blueprint, collect the materials, apply the grades remotely, then visit the Engineer only when you need to change the pin, add an Experimental Effect, or use a blueprint that is not pinned.&lt;br /&gt;
&lt;br /&gt;
== Engineering Materials ==&lt;br /&gt;
Materials are the resource cost of Engineering. They do not take cargo space in the normal ship cargo rack, but they do have storage caps. Material management is a major part of Engineering preparation.&lt;br /&gt;
&lt;br /&gt;
Ship Engineering materials are grouped into three broad categories:&lt;br /&gt;
* &#039;&#039;&#039;Raw materials&#039;&#039;&#039; — minerals and elements gathered mostly from planetary surfaces, mining by-products, and certain signal or mission sources.&lt;br /&gt;
* &#039;&#039;&#039;Manufactured materials&#039;&#039;&#039; — components recovered from ships, signal sources, mission rewards, combat aftermath, and salvage.&lt;br /&gt;
* &#039;&#039;&#039;Encoded materials&#039;&#039;&#039; — data gathered from scans, data points, wakes, missions, and signal sources.&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering uses different on-foot assets, goods, and data. Do not assume a ship material source will help with suit or weapon upgrades.&lt;br /&gt;
&lt;br /&gt;
See [[Engineering Materials]] for the materials hub.&lt;br /&gt;
&lt;br /&gt;
== Material Traders ==&lt;br /&gt;
Material Traders let commanders exchange materials within a category. Raw Material Traders exchange raw materials, Manufactured Material Traders exchange manufactured materials, and Encoded Material Traders exchange encoded data.&lt;br /&gt;
&lt;br /&gt;
Trading is most efficient when moving down from high-grade materials to lower-grade ones. Trading upward is expensive, and trading across material families within the same category is less efficient than trading within the same family. For that reason, many commanders farm high-value materials and trade down to fill out common blueprint costs.&lt;br /&gt;
&lt;br /&gt;
Material Traders are a convenience, not a complete replacement for gathering. They are best used to smooth out shortages after a farming run or before visiting an Engineer.&lt;br /&gt;
&lt;br /&gt;
== Engineers ==&lt;br /&gt;
Engineers are the NPC specialists who perform the modifications. Each Engineer page should cover location, access requirements, unlock cost, specialties, maximum grades, related Engineers, and sources. The directory page keeps the roster browsable at a glance.&lt;br /&gt;
&lt;br /&gt;
Ship Engineers and Odyssey Engineers should not be mixed together inside build advice. They use different equipment and material systems, and Odyssey Engineering is not available in Legacy. When an article discusses both, it should label the distinction clearly.&lt;br /&gt;
&lt;br /&gt;
See [[Engineers]] to browse individual Engineer articles as they are written.&lt;br /&gt;
&lt;br /&gt;
== Engineering Guides ==&lt;br /&gt;
Engineering guides should focus on routes and decisions rather than duplicating reference tables. A good guide explains the practical order of operations: what to unlock first, what to carry, what can be done remotely, which commodities are risky, what materials to collect in advance, and which steps can be combined in one trip.&lt;br /&gt;
&lt;br /&gt;
Examples of useful guide topics include:&lt;br /&gt;
* first-ship Engineering route for new commanders;&lt;br /&gt;
* Frame Shift Drive range preparation;&lt;br /&gt;
* combat ship weapon and defence tuning;&lt;br /&gt;
* Colonia Engineer preparation;&lt;br /&gt;
* Odyssey suit and weapon unlock routes; and&lt;br /&gt;
* material gathering loops for common blueprint families.&lt;br /&gt;
&lt;br /&gt;
See [[Unlocking Broo Tarquin]] for a worked example of a standalone unlock guide, and [[Elite Dangerous Field Manual:Creating a Guide]] for how the encyclopedia/guide split works.&lt;br /&gt;
&lt;br /&gt;
== Lists &amp;amp; Comparisons ==&lt;br /&gt;
Structured-data proof of concept, generated from [[Module:Data/Engineers/index|Module:Data/Engineers]] rather than hand-maintained — see [[Elite Dangerous Field Manual:Adding Structured Data]]. Partial (4 of 38 Engineers) until backfilled further.&lt;br /&gt;
{{Related articles|label=Lists &amp;amp; Comparisons|[[List of Engineers]] [[Engineer Capability Comparison]]}}&lt;br /&gt;
&lt;br /&gt;
As more structured Engineer and blueprint data is added, this section should become the comparison layer: who offers a blueprint, which Engineer reaches the highest grade, which unlock chain is shortest, and which Engineers are worth combining in a single route.&lt;br /&gt;
&lt;br /&gt;
== External Tools ==&lt;br /&gt;
Community tools are useful for planning Engineering because they can track large material inventories and simulate full builds before you spend anything in-game. Use them for planning, then use EDFM pages for Field Manual explanations, unlock notes, and source-backed reference details.&lt;br /&gt;
&lt;br /&gt;
See the Engineering material tracking section of [[Tools and Resources]] for community apps that track blueprint/material progress.&lt;br /&gt;
&lt;br /&gt;
== Related Categories ==&lt;br /&gt;
* [[:Category:Engineering]]&lt;br /&gt;
* [[:Category:Engineers]]&lt;br /&gt;
* [[:Category:Engineering Blueprints]]&lt;br /&gt;
* [[:Category:Experimental Effects]]&lt;br /&gt;
* [[:Category:Engineering Materials]]&lt;br /&gt;
* [[:Category:Weapon Engineering]]&lt;br /&gt;
* [[:Category:Core Internal Engineering]]&lt;br /&gt;
* [[:Category:Optional Internal Engineering]]&lt;br /&gt;
* [[:Category:Utility Engineering]]&lt;br /&gt;
* [[:Category:Odyssey Engineering]]&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Ships and Equipment]] [[Game Reference]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Site Maintenance</name></author>
	</entry>
</feed>