<?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=Maintenance+script</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=Maintenance+script"/>
	<link rel="alternate" type="text/html" href="https://edfieldmanual.com/wiki/Special:Contributions/Maintenance_script"/>
	<updated>2026-08-25T10:07:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=1408</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=1408"/>
		<updated>2026-08-21T01:11:15Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Theme Echo alerts and notices flyouts for EDFM dark UI&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;
	/* Only hides it at its original #mw-head location, and only once JS has&lt;br /&gt;
	   confirmed it will actually relocate it into #mw-panel below (Common.js&lt;br /&gt;
	   initMobileChrome) -- nojs visitors still reach login/account through&lt;br /&gt;
	   the earlier stacked-layout #p-personal rule instead, rather than&lt;br /&gt;
	   losing the control outright. */&lt;br /&gt;
	html.client-js #mw-head #p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	/* The desktop #p-personal rule further down this file sets&lt;br /&gt;
	   `display: flex` (a plain, unscoped ID selector, so it applies&lt;br /&gt;
	   wherever the element ends up) intended for a wide horizontal header&lt;br /&gt;
	   strip. Left as flex-row inside the narrow drawer, its heading and&lt;br /&gt;
	   list get squeezed to near-zero width by flexbox&#039;s default shrink&lt;br /&gt;
	   behaviour and wrap character-by-character. Reset back to normal&lt;br /&gt;
	   block stacking here so it lays out exactly like every other&lt;br /&gt;
	   #mw-panel section (heading, then list, top to bottom). */&lt;br /&gt;
	#mw-panel #p-personal {&lt;br /&gt;
		display: block;&lt;br /&gt;
		text-align: left;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel #p-personal ul {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel #p-personal li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* #p-logo (the wiki logo) lives in #mw-panel on desktop too, so this&lt;br /&gt;
	   has to stay inside this mobile-only block rather than becoming a&lt;br /&gt;
	   bare #mw-panel #p-logo rule -- unlike #p-personal, JS never moves&lt;br /&gt;
	   this one, it&#039;s always been here. Confirmed by direct testing: the&lt;br /&gt;
	   combination already on #p-logo elsewhere in this file&lt;br /&gt;
	   (box-sizing:border-box + width:auto + overflow:hidden) ends up&lt;br /&gt;
	   shrink-to-fit instead of filling the available width once this&lt;br /&gt;
	   block&#039;s own #mw-panel padding drops to 0 -- forcing an explicit&lt;br /&gt;
	   width sidesteps the ambiguity rather than removing overflow:hidden&lt;br /&gt;
	   (which is there to clip the background-image cleanly) or relying on&lt;br /&gt;
	   auto again. */&lt;br /&gt;
	#p-logo {&lt;br /&gt;
		width: 100%;&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;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   EDFM external link icon theme fix — 2026-08-20&lt;br /&gt;
   MediaWiki Vector adds a small external-link background image after external&lt;br /&gt;
   links. On EDFM&#039;s dark theme the stock progressive-blue SVG was too subtle,&lt;br /&gt;
   leaving a visible gap before punctuation in Sources lists. Replace it with a&lt;br /&gt;
   currentColor mask so the indicator inherits the site&#039;s cyan/hover/visited&lt;br /&gt;
   external-link colors and remains visible before commas/periods.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw.external {&lt;br /&gt;
	background-image: none !important;&lt;br /&gt;
	padding-right: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external::after,&lt;br /&gt;
.mw-parser-output a.extiw.external::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 0.72em;&lt;br /&gt;
	height: 0.72em;&lt;br /&gt;
	margin-left: 0.18em;&lt;br /&gt;
	margin-right: 0.08em;&lt;br /&gt;
	vertical-align: 0.04em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	opacity: 0.9;&lt;br /&gt;
	-webkit-mask: no-repeat center / contain url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 3h6v6h-2V6.41l-7.29 7.3-1.42-1.42 7.3-7.29H11V3z&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M5 5h4v2H6v8h8v-3h2v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / contain url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 3h6v6h-2V6.41l-7.29 7.3-1.42-1.42 7.3-7.29H11V3z&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M5 5h4v2H6v8h8v-3h2v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .reference-text a.external::after {&lt;br /&gt;
	margin-left: 0.2em;&lt;br /&gt;
	margin-right: 0.12em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   ECHO NOTIFICATIONS / ALERTS -- EDFM dark flyout theme&lt;br /&gt;
&lt;br /&gt;
   Echo&#039;s alert/notices popups are injected by OOUI after page load and keep&lt;br /&gt;
   their own default white notification cards unless themed explicitly. Keep&lt;br /&gt;
   the structure/behavior intact, but make the flyouts match EDFM&#039;s dark panel&lt;br /&gt;
   template: dark chrome, orange active state, cyan focus/link accents, and&lt;br /&gt;
   muted secondary text.&lt;br /&gt;
   =========================================================================== */&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup &amp;gt; .oo-ui-popupWidget-popup {&lt;br /&gt;
	background: linear-gradient( 180deg, var( --edfm-surface-2 ) 0%, var( --edfm-surface-1 ) 100% ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: 0 18px 45px rgba( 0, 0, 0, 0.48 ), 0 0 0 1px rgba( 255, 138, 0, 0.08 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup &amp;gt; .oo-ui-popupWidget-popup &amp;gt; .oo-ui-popupWidget-head,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup &amp;gt; .oo-ui-popupWidget-popup &amp;gt; .oo-ui-popupWidget-footer {&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;
.mw-echo-ui-notificationBadgeController-popup &amp;gt; .oo-ui-popupWidget-popup &amp;gt; .oo-ui-popupWidget-head {&lt;br /&gt;
	border-left: 3px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-anchor::before,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-anchor::after {&lt;br /&gt;
	border-bottom-color: var( --edfm-surface-2 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-head .oo-ui-labelElement-label,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-footer .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-head .oo-ui-iconElement-icon,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-footer .oo-ui-iconElement-icon,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-actions .oo-ui-iconElement-icon {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-notificationsWrapper,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationsListWidget {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-unread {&lt;br /&gt;
	background: linear-gradient( 90deg, rgba( 255, 138, 0, 0.10 ) 0, var( --edfm-surface-1 ) 30% ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget:hover,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget:focus {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	box-shadow: inset 3px 0 0 var( --edfm-orange ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-message-header,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-message-header a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-message-body,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-actions-timestamp {&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-message-body a,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget a {&lt;br /&gt;
	color: var( --edfm-link ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-toggleReadCircleButtonWidget-circle {&lt;br /&gt;
	background: var( --edfm-orange ) !important;&lt;br /&gt;
	border-color: var( --edfm-orange ) !important;&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 255, 138, 0, 0.18 );&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-toggleReadCircleButtonWidget-circle-unread {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationsWidget-markAllReadButton &amp;gt; .oo-ui-buttonElement-button,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-actions .oo-ui-buttonElement-button,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-footer .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	text-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationsWidget-markAllReadButton &amp;gt; .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationItemWidget-content-actions .oo-ui-buttonElement-button:hover,&lt;br /&gt;
.mw-echo-ui-notificationBadgeController-popup .oo-ui-popupWidget-footer .oo-ui-buttonElement-button:hover {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.14 ) !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;
.mw-echo-ui-notificationBadgeController-popup .mw-echo-ui-notificationBadgeController-footer-buttons .oo-ui-buttonElement:last-child {&lt;br /&gt;
	border-left-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Special:Notifications uses the same Echo widgets outside the small flyout. */&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationsInboxWidget,&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationsInboxWidget-toolbarWrapper {&lt;br /&gt;
	background: var( --edfm-bg-page ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationItemWidget {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	border: 1px solid var( --edfm-border ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationItemWidget-content-message-header,&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationItemWidget-content-message-body,&lt;br /&gt;
.mw-special-Notifications .mw-echo-ui-notificationItemWidget-content-actions-timestamp {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	opacity: 1 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=1146</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=1146"/>
		<updated>2026-08-20T21:58:40Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Theme external link icon for EDFM dark sources lists&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;
	/* Only hides it at its original #mw-head location, and only once JS has&lt;br /&gt;
	   confirmed it will actually relocate it into #mw-panel below (Common.js&lt;br /&gt;
	   initMobileChrome) -- nojs visitors still reach login/account through&lt;br /&gt;
	   the earlier stacked-layout #p-personal rule instead, rather than&lt;br /&gt;
	   losing the control outright. */&lt;br /&gt;
	html.client-js #mw-head #p-personal {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	/* The desktop #p-personal rule further down this file sets&lt;br /&gt;
	   `display: flex` (a plain, unscoped ID selector, so it applies&lt;br /&gt;
	   wherever the element ends up) intended for a wide horizontal header&lt;br /&gt;
	   strip. Left as flex-row inside the narrow drawer, its heading and&lt;br /&gt;
	   list get squeezed to near-zero width by flexbox&#039;s default shrink&lt;br /&gt;
	   behaviour and wrap character-by-character. Reset back to normal&lt;br /&gt;
	   block stacking here so it lays out exactly like every other&lt;br /&gt;
	   #mw-panel section (heading, then list, top to bottom). */&lt;br /&gt;
	#mw-panel #p-personal {&lt;br /&gt;
		display: block;&lt;br /&gt;
		text-align: left;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel #p-personal ul {&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel #p-personal li {&lt;br /&gt;
		margin: 0;&lt;br /&gt;
	}&lt;br /&gt;
	/* #p-logo (the wiki logo) lives in #mw-panel on desktop too, so this&lt;br /&gt;
	   has to stay inside this mobile-only block rather than becoming a&lt;br /&gt;
	   bare #mw-panel #p-logo rule -- unlike #p-personal, JS never moves&lt;br /&gt;
	   this one, it&#039;s always been here. Confirmed by direct testing: the&lt;br /&gt;
	   combination already on #p-logo elsewhere in this file&lt;br /&gt;
	   (box-sizing:border-box + width:auto + overflow:hidden) ends up&lt;br /&gt;
	   shrink-to-fit instead of filling the available width once this&lt;br /&gt;
	   block&#039;s own #mw-panel padding drops to 0 -- forcing an explicit&lt;br /&gt;
	   width sidesteps the ambiguity rather than removing overflow:hidden&lt;br /&gt;
	   (which is there to clip the background-image cleanly) or relying on&lt;br /&gt;
	   auto again. */&lt;br /&gt;
	#p-logo {&lt;br /&gt;
		width: 100%;&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;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   EDFM external link icon theme fix — 2026-08-20&lt;br /&gt;
   MediaWiki Vector adds a small external-link background image after external&lt;br /&gt;
   links. On EDFM&#039;s dark theme the stock progressive-blue SVG was too subtle,&lt;br /&gt;
   leaving a visible gap before punctuation in Sources lists. Replace it with a&lt;br /&gt;
   currentColor mask so the indicator inherits the site&#039;s cyan/hover/visited&lt;br /&gt;
   external-link colors and remains visible before commas/periods.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw.external {&lt;br /&gt;
	background-image: none !important;&lt;br /&gt;
	padding-right: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external::after,&lt;br /&gt;
.mw-parser-output a.extiw.external::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	width: 0.72em;&lt;br /&gt;
	height: 0.72em;&lt;br /&gt;
	margin-left: 0.18em;&lt;br /&gt;
	margin-right: 0.08em;&lt;br /&gt;
	vertical-align: 0.04em;&lt;br /&gt;
	background-color: currentColor;&lt;br /&gt;
	opacity: 0.9;&lt;br /&gt;
	-webkit-mask: no-repeat center / contain url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 3h6v6h-2V6.41l-7.29 7.3-1.42-1.42 7.3-7.29H11V3z&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M5 5h4v2H6v8h8v-3h2v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
	mask: no-repeat center / contain url( &#039;data:image/svg+xml;utf8,&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 20 20&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M11 3h6v6h-2V6.41l-7.29 7.3-1.42-1.42 7.3-7.29H11V3z&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M5 5h4v2H6v8h8v-3h2v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output .reference-text a.external::after {&lt;br /&gt;
	margin-left: 0.2em;&lt;br /&gt;
	margin-right: 0.12em;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified-member&amp;diff=1145</id>
		<title>MediaWiki:Group-verified-member</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified-member&amp;diff=1145"/>
		<updated>2026-08-20T19:05:54Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Restore verified group member label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verified Commander&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified&amp;diff=1144</id>
		<title>MediaWiki:Group-verified</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified&amp;diff=1144"/>
		<updated>2026-08-20T19:05:53Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Restore verified group label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verified Commanders&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified-member&amp;diff=1143</id>
		<title>MediaWiki:Group-verified-member</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified-member&amp;diff=1143"/>
		<updated>2026-08-20T18:55:23Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update verified group member label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CMDR Verified Commander&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified&amp;diff=1142</id>
		<title>MediaWiki:Group-verified</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Group-verified&amp;diff=1142"/>
		<updated>2026-08-20T18:55:22Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update verified group label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CMDR Verified Commanders&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Contributing&amp;diff=1138</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=1138"/>
		<updated>2026-08-20T17:21:54Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update optional CMDR CAPI verification language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Terms_of_Use&amp;diff=1137</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=1137"/>
		<updated>2026-08-20T17:21:53Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update optional CMDR CAPI verification language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Privacy_Policy&amp;diff=1136</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=1136"/>
		<updated>2026-08-20T17:21:52Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update optional CMDR CAPI verification language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Cookie_Policy&amp;diff=872</id>
		<title>Elite Dangerous Field Manual:Cookie Policy</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Cookie_Policy&amp;diff=872"/>
		<updated>2026-08-17T14:35:43Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update GA4 analytics cookie disclosure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains EDFM&#039;s cookies and browser storage.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
EDFM uses first-party cookies/local browser storage needed for login/security, preferences, and optional site-improvement features. EDFM also uses Google Analytics 4 on eligible public pages for anonymous public-content analytics. EDFM does not use advertising cookies, cross-site marketing cookies, Meta Pixel, session replay, Google Signals, remarketing, enhanced conversions, Google Ads audiences, AdSense, or advertising personalization.&lt;br /&gt;
&lt;br /&gt;
== Cookie choices ==&lt;br /&gt;
The cookie banner offers:&lt;br /&gt;
* &#039;&#039;&#039;Accept all&#039;&#039;&#039; — enables necessary cookies and optional site-improvement/analytics cookies.&lt;br /&gt;
* &#039;&#039;&#039;Accept some&#039;&#039;&#039; — lets you choose optional site-improvement/analytics cookies.&lt;br /&gt;
* &#039;&#039;&#039;Reject optional cookies&#039;&#039;&#039; — keeps only cookies/storage needed for security, login, account creation, and remembering your cookie choice.&lt;br /&gt;
&lt;br /&gt;
Your cookie choice is stored in your browser&#039;s local storage. For server-side features that must know whether optional site-improvement cookies are accepted, EDFM may also set a small first-party consent signal cookie.&lt;br /&gt;
&lt;br /&gt;
Sensitive account, authentication, Frontier OAuth, and user/profile pages are excluded from Google Analytics regardless of cookie choice. Consent can enable Analytics only on pages that are otherwise eligible for public anonymous analytics.&lt;br /&gt;
&lt;br /&gt;
== Strictly necessary cookies ==&lt;br /&gt;
These are needed for core site operation and cannot be disabled through the banner without breaking login/security features.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Purpose !! Typical duration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edwiki_session&amp;lt;/code&amp;gt; || MediaWiki session/login/account/security state. || Session&lt;br /&gt;
|-&lt;br /&gt;
| MediaWiki login/token/user preference cookies || Login state, account preferences, edit tokens, and normal MediaWiki functionality for logged-in users. || Session to persistent, depending on MediaWiki and user choices&lt;br /&gt;
|-&lt;br /&gt;
| Cloudflare/Turnstile cookies or browser checks || Security, bot/spam prevention, and abuse protection on login/account forms. || Controlled by Cloudflare/security flow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optional site-improvement and analytics cookies ==&lt;br /&gt;
These help improve navigation, search, public content, and trending/sidebar behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Purpose !! Typical duration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edfmPopularSearch&amp;lt;/code&amp;gt; || Temporarily remembers a search term so EDFM can count which article a visitor lands on after a broad search, powering aggregate Trending Guides behavior. || About 30 minutes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;edfmCookieAnalytics&amp;lt;/code&amp;gt; || First-party consent signal used so server-side EDFM code knows optional site-improvement/analytics cookies are allowed. || About 180 days, or until changed/rejected&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;_ga&amp;lt;/code&amp;gt; and related Google Analytics cookies such as &amp;lt;code&amp;gt;_ga_*&amp;lt;/code&amp;gt; || Google Analytics 4 uses these on eligible public pages to distinguish visits/devices for aggregate site-usage analytics. EDFM does not use them for advertising features and does not intentionally send account identifiers to Google Analytics. || Controlled by Google Analytics; commonly up to about 2 years unless cleared or limited by browser settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If optional site-improvement cookies are rejected, EDFM should not set &amp;lt;code&amp;gt;edfmPopularSearch&amp;lt;/code&amp;gt;. Aggregate page-view counts for Trending Guides may still be collected as first-party site functionality without storing visitor IP, username, or account ID in the Trending Guides tables.&lt;br /&gt;
&lt;br /&gt;
== Google Analytics scope ==&lt;br /&gt;
Google Analytics is used only for eligible public pages and public search analytics. It may collect ordinary page/event data such as page URL, page title, referrer, traffic source, browser/device information, scrolls, outbound clicks, downloads, and public search engagement.&lt;br /&gt;
&lt;br /&gt;
EDFM&#039;s Analytics integration is configured not to emit the GA tag on login, logout, account creation, password reset/recovery, email confirmation, credential changes, preferences/account settings, Frontier/PluggableAuth login or callback pages, old revisions, diffs, redirects, non-existent pages, MediaWiki &amp;lt;code&amp;gt;User:&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;User talk:&amp;lt;/code&amp;gt; pages, equivalent profile/commander-style pages, or requests containing sensitive authentication/account parameters.&lt;br /&gt;
&lt;br /&gt;
EDFM does not intentionally send MediaWiki usernames, MediaWiki numeric user IDs, email addresses, CMDR names, Frontier/FDev identifiers, Discord IDs, OAuth codes, access tokens, refresh tokens, session identifiers, cookies, or comparable account-specific identifiers to Google Analytics.&lt;br /&gt;
&lt;br /&gt;
== Local storage ==&lt;br /&gt;
EDFM uses browser local storage to remember the cookie banner choice. Local storage stays in your browser until you clear it or change your cookie preferences.&lt;br /&gt;
&lt;br /&gt;
== Third-party requests ==&lt;br /&gt;
EDFM pages may link to outside sites. Login and account pages may load Cloudflare Turnstile from &amp;lt;code&amp;gt;challenges.cloudflare.com&amp;lt;/code&amp;gt;. Eligible public pages may load Google Analytics from &amp;lt;code&amp;gt;www.googletagmanager.com&amp;lt;/code&amp;gt; and send analytics requests to Google Analytics collection endpoints such as &amp;lt;code&amp;gt;www.google-analytics.com&amp;lt;/code&amp;gt; and regional Google Analytics endpoints. External sites, Cloudflare, and Google have their own policies.&lt;br /&gt;
&lt;br /&gt;
== Changing your choice ==&lt;br /&gt;
You can change your choice from the cookie banner/preferences control when available, or by clearing site data for &amp;lt;code&amp;gt;edfieldmanual.com&amp;lt;/code&amp;gt; in your browser.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
Questions about cookies or privacy: &amp;lt;code&amp;gt;contact@edfieldmanual.com&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Privacy_Policy&amp;diff=871</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=871"/>
		<updated>2026-08-17T14:35:42Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Update GA4 privacy boundaries&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 to understand anonymous 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 to understand how public EDFM content is being used. 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 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;
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;
Frontier OAuth/CAPI support is planned but not fully active until Frontier approves and activates the application credentials.&lt;br /&gt;
&lt;br /&gt;
Frontier&#039;s developer documentation describes Frontier Auth as an OAuth2 authorization-code service. When enabled, Frontier login is intended to be an alternative login/register method. EDFM expects to use Frontier authentication data only as needed to sign users in and connect a Frontier identity to an EDFM account. Intended stored or session-handled data may include:&lt;br /&gt;
* a stable Frontier customer/account 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;
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 may later request the optional Frontier `capi` scope after login to retrieve Companion API data such as commander name and ship information. CAPI access should be opt-in and user-controlled: users should be able to choose whether commander/ship data is fetched, private, or public. Ship data is intended to be fetched after login or user action and used for optional profile/personalization features, not sold or shared for advertising.&lt;br /&gt;
&lt;br /&gt;
If EDFM stores Frontier refresh tokens for future CAPI sync, 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.&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
EDFM keeps operational backups for recovery from mistakes, outages, or security incidents. Data removed from the live site may remain in backups until those backups expire under the backup retention policy. Backup retention should be documented and reviewed periodically.&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Frontier_News_-_beneath-surface-your-first-look-rhino.jpg&amp;diff=821</id>
		<title>File:Frontier News - beneath-surface-your-first-look-rhino.jpg</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Frontier_News_-_beneath-surface-your-first-look-rhino.jpg&amp;diff=821"/>
		<updated>2026-08-15T09:17:05Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Maintenance script uploaded a new version of File:Frontier News - beneath-surface-your-first-look-rhino.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Frontier Developments article preview image for the auto-updating news module.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=731</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=731"/>
		<updated>2026-08-13T03:56:26Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Theme actual VisualEditor template/infobox popup&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;
/* 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;
.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;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:What_next&amp;diff=701</id>
		<title>Template:What next</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:What_next&amp;diff=701"/>
		<updated>2026-08-12T16:01:15Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Fix Guided Encyclopedia template wikitext parsing&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-what-next&amp;quot; role=&amp;quot;navigation&amp;quot; aria-label=&amp;quot;What next&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-what-next-title&amp;quot;&amp;gt;{{{title|What next?}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-what-next-body&amp;quot;&amp;gt;&lt;br /&gt;
{{{1|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Progressive navigation from reference into guidance, or from a guide into deeper articles.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{What next|&lt;br /&gt;
* New to mining? Continue to [[Laser Mining]].&lt;br /&gt;
* Need the module details? Read [[Prospector Limpet Controller]].&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Callout&amp;diff=700</id>
		<title>Template:Callout</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Callout&amp;diff=700"/>
		<updated>2026-08-12T16:01:15Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Fix Guided Encyclopedia template wikitext parsing&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-guide-callout edfm-guide-callout--{{{type|field-note}}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;edfm-guide-callout-label&amp;quot;&amp;gt;{{{label|Field note}}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-callout-body&amp;quot;&amp;gt;&lt;br /&gt;
{{{1|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Generic Guided Encyclopedia callout. Prefer the wrapper templates when possible: {{tl|Field note}}, {{tl|Tip}}, {{tl|Warning}}, and {{tl|Important}}.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Callout|type=warning|label=Warning|Never fly without rebuy.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Guide_step&amp;diff=699</id>
		<title>Template:Guide step</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Guide_step&amp;diff=699"/>
		<updated>2026-08-12T16:01:14Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Fix Guided Encyclopedia template wikitext parsing&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-guide-step&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-step-heading&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;edfm-guide-step-number&amp;quot;&amp;gt;{{{1|Step}}}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;edfm-guide-step-title&amp;quot;&amp;gt;{{{2|Untitled step}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-step-body&amp;quot;&amp;gt;&lt;br /&gt;
{{{3|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Numbered walkthrough step. Keep each step focused on one player action or small objective.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Guide step|1|Plot a route|&lt;br /&gt;
Open the Galaxy Map, choose a nearby inhabited system, and select Plot Route.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Requirements&amp;diff=698</id>
		<title>Template:Requirements</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Requirements&amp;diff=698"/>
		<updated>2026-08-12T16:01:14Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Fix Guided Encyclopedia template wikitext parsing&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-guide-requirements&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-requirements-title&amp;quot;&amp;gt;{{{title|Before you start}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-requirements-body&amp;quot;&amp;gt;&lt;br /&gt;
{{{1|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Preparation panel for required, recommended, and optional equipment or knowledge. Explain why each item matters.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Requirements|&lt;br /&gt;
; Required : A ship with a Frame Shift Drive — every interstellar route depends on it.&lt;br /&gt;
; Recommended : Fuel scoop — prevents early fuel mistakes.&lt;br /&gt;
; Optional : Docking computer — useful while learning station approach.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Guide_info&amp;diff=697</id>
		<title>Template:Guide info</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Guide_info&amp;diff=697"/>
		<updated>2026-08-12T16:01:13Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Fix Guided Encyclopedia template wikitext parsing&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-guide-info&amp;quot; role=&amp;quot;complementary&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-info-title&amp;quot;&amp;gt;{{{title|At a glance}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-info-body&amp;quot;&amp;gt;&lt;br /&gt;
{{{1|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Flexible quick-reference panel for Guided Encyclopedia articles. Use only fields relevant to the page.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Guide info|title=At a glance|&lt;br /&gt;
; Designed for : Brand-new Commanders&lt;br /&gt;
; Starting point : Immediately after training&lt;br /&gt;
; Required ship : Starter ship&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=New_Commander_Roadmap&amp;diff=696</id>
		<title>New Commander Roadmap</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=New_Commander_Roadmap&amp;diff=696"/>
		<updated>2026-08-12T16:00:17Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Implement Guided Encyclopedia showcase roadmap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Live|uncertainty=Some activity-specific details still need screenshot-backed verification and expansion.}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;New Commander Roadmap&#039;&#039;&#039; is a guided progression for a Commander who has just started &#039;&#039;Elite Dangerous&#039;&#039;. It is not a mandatory path and it is not a checklist that must be completed before the rest of the game becomes available. &#039;&#039;Elite Dangerous&#039;&#039; is open-ended: the purpose of this roadmap is to help a new Commander become self-sufficient, understand the major systems, and choose a direction with confidence.&lt;br /&gt;
&lt;br /&gt;
Use this page in two ways:&lt;br /&gt;
&lt;br /&gt;
* as a reference for the broad early-game skills a Commander should learn; and&lt;br /&gt;
* as a practical walkthrough for what to do next when the galaxy feels too open.&lt;br /&gt;
&lt;br /&gt;
{{Guide info|title=Roadmap at a glance|&lt;br /&gt;
; Designed for : Brand-new Commanders&lt;br /&gt;
; Starting point : Immediately after training or the first live session&lt;br /&gt;
; Required credits : None&lt;br /&gt;
; Required ship : Starter ship or any early ship&lt;br /&gt;
; Recommended : Complete the flight tutorials and keep enough credits for rebuy&lt;br /&gt;
; End state : An independently capable Commander who can choose their own direction&lt;br /&gt;
; Progression length : Open-ended; move on when you understand the skill, not when a timer says so&lt;br /&gt;
; Related pages : [[Start Here]], [[Field Procedures]], [[Game Reference]], [[Ships and Equipment]], [[Engineering]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Important|This roadmap is guidance, not a required progression route. If you find an activity you enjoy, it is fine to follow that thread early and return to the roadmap later.}}&lt;br /&gt;
&lt;br /&gt;
== Before you start ==&lt;br /&gt;
{{Requirements|&lt;br /&gt;
; Required : A ship with a working Frame Shift Drive — every interstellar activity depends on travelling between systems.&lt;br /&gt;
; Required : Enough credits for rebuy before taking risks — rebuy is the insurance cost to recover your ship after destruction.&lt;br /&gt;
; Strongly recommended : Complete the basic flight tutorials — they let you practise movement, docking, and combat without risking your live ship.&lt;br /&gt;
; Strongly recommended : Learn where refuel, repair, restock, outfitting, missions, and contacts live in station services.&lt;br /&gt;
; Optional : Use docking assistance while learning — it is acceptable to reduce workload while you learn navigation and game systems.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 1 — Learn to fly ==&lt;br /&gt;
The first phase is about control, navigation, and confidence. You do not need a better ship yet. You need to understand how to leave a station, travel somewhere, and return safely.&lt;br /&gt;
&lt;br /&gt;
{{Guide step|1|Complete the flight tutorial|&lt;br /&gt;
Open the training section from the main menu and complete the basic flight tutorial. Pay attention to throttle control, landing gear, ship orientation, and the difference between normal space and supercruise. The goal is not mastery; the goal is to make the cockpit feel less unfamiliar before credits and cargo are at risk.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|2|Launch and dock successfully|&lt;br /&gt;
Launch from a station, clear the mailslot or pad area, then request docking and land again. During this exercise, learn where the compass dot appears, how speed affects control, and how your ship behaves near large station geometry.&lt;br /&gt;
&lt;br /&gt;
{{Tip|If docking feels stressful, use a docking computer at first. The important early skill is understanding what docking is doing, not proving you can manually land on day one.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|3|Travel to another system|&lt;br /&gt;
Make your first deliberate interstellar trip.&lt;br /&gt;
&lt;br /&gt;
# Open the Galaxy Map.&lt;br /&gt;
# Select a nearby inhabited system.&lt;br /&gt;
# Plot a route.&lt;br /&gt;
# Return to the cockpit.&lt;br /&gt;
# Align with the target shown on your HUD.&lt;br /&gt;
# Throttle up and charge the Frame Shift Drive.&lt;br /&gt;
# Watch your fuel gauge before and after the jump.&lt;br /&gt;
# On arrival, move away from the star before checking panels or maps.&lt;br /&gt;
&lt;br /&gt;
{{Field note|Fuel use is part of navigation. Some stars can be fuel-scooped and some cannot. Main-sequence stars of spectral classes O, B, A, F, G, K, and M are the common scoopable classes; see [[Fuel Scooping]] for the full mechanic.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|4|Return and use station services|&lt;br /&gt;
Fly back to a station and deliberately use station services. Refuel, repair if needed, inspect the mission board, open outfitting, and check contacts. You are learning where recovery and preparation tools live before you urgently need them.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 2 — Become self-sufficient ==&lt;br /&gt;
A self-sufficient Commander can travel, recover from common mistakes, and prepare a ship for a basic job.&lt;br /&gt;
&lt;br /&gt;
{{Guide step|1|Understand fuel before travelling farther|&lt;br /&gt;
Before accepting missions or plotting longer routes, check whether your ship can reach the destination and return. Learn the difference between a single jump, a plotted route, and your total fuel tank endurance.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Running out of fuel can strand your ship. If you are low on fuel, stop taking new risks, look for a station, or learn the [[Fuel Scooping]] process before continuing deeper into unknown systems.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|2|Practise a simple station loop|&lt;br /&gt;
Pick a nearby station and practise a complete loop: launch, supercruise, approach, request docking, land, refuel, repair, and restock. This loop is the foundation for missions, trading, mining sales, combat recovery, and exploration returns.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|3|Try basic outfitting changes|&lt;br /&gt;
Open outfitting and inspect your core internal, optional internal, hardpoint, and utility slots. Do not buy random modules yet. Learn the ideas of module size, module rating, power draw, mass, jump range, shields, and optional internals.&lt;br /&gt;
&lt;br /&gt;
{{Important|A ship is a tool. Early on, understanding why a module is fitted matters more than buying the most expensive part available.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|4|Accept a low-risk mission|&lt;br /&gt;
Choose a simple mission with a destination you can reach and a consequence you understand. Read the destination, cargo requirements, legality, time limit, and reward before accepting. Complete one mission slowly rather than stacking many missions you do not yet understand.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|5|Learn interdiction and recovery basics|&lt;br /&gt;
Sooner or later, another ship may attempt to pull you from supercruise. Learn what the interdiction tunnel looks like, how to submit or evade, and how to escape after dropping into normal space. Link deeper reading to [[Interdiction]] once that article is available or expanded.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 3 — Try the galaxy ==&lt;br /&gt;
This phase introduces careers. The goal is not to choose the best one immediately; the goal is to try several loops and discover what feels rewarding.&lt;br /&gt;
&lt;br /&gt;
{{Guide step|1|Try trading|&lt;br /&gt;
Move a small amount of legal cargo between stations. Learn commodity markets, cargo space, supply, demand, profit, and why losing cargo can matter. Continue to [[Trading]] for the full activity.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|2|Try exploration|&lt;br /&gt;
Plot a short route away from your starting area, scan systems as you travel, and sell exploration data after returning safely. Notice how jump range, fuel, and route planning affect comfort. Continue to [[Exploration]] and [[Fuel Scooping]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|3|Try exobiology if you own Odyssey|&lt;br /&gt;
Land on a suitable planet, use the Artemis suit and genetic sampler, and turn in biological data. Focus on learning approach, landing, surface movement, and sample spacing rather than maximizing profit. Continue to [[Exobiology]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|4|Try mining|&lt;br /&gt;
Outfit only the basic equipment needed for the type of mining you are attempting. Learn the difference between finding a resource, extracting it, collecting fragments, refining cargo, and selling the commodity. Continue to [[Mining]] and [[Laser Mining]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|5|Try combat carefully|&lt;br /&gt;
Start with low-risk combat training or low-threat targets. Learn pips, shields, hull, hardpoint deployment, target selection, and when to leave. Do not take high-threat combat missions just because the reward looks attractive.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Combat can destroy an early ship quickly. Keep rebuy credits available and leave before shields, hull, or situational awareness are gone.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|6|Try on-foot gameplay if you own Odyssey|&lt;br /&gt;
Visit a concourse, inspect terminals, take a low-risk legal mission, and learn shuttle or ship travel to settlements. Pay attention to legal status and trespass warnings. Continue to [[Odyssey]] when ready.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 4 — Build a purpose-built ship ==&lt;br /&gt;
After trying a few loops, build a ship for one job instead of forcing one ship to do everything.&lt;br /&gt;
&lt;br /&gt;
{{Guide step|1|Choose one role|&lt;br /&gt;
Pick one immediate role: short-range trading, basic exploration, beginner mining, courier missions, or low-risk combat. Define the job before buying modules. A purpose-built ship is easier to understand because every slot has a reason.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|2|Plan around the limiting systems|&lt;br /&gt;
For the chosen role, identify what limits the ship.&lt;br /&gt;
&lt;br /&gt;
* Trading cares about cargo capacity, jump range, and survivability.&lt;br /&gt;
* Exploration cares about jump range, fuel, scanners, heat, and recovery tools.&lt;br /&gt;
* Mining cares about hardpoints, collector/prospector limpets, refinery, cargo, and distributor capacity.&lt;br /&gt;
* Combat cares about weapons, distributor, shields or armour, power, and agility.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|3|Upgrade gradually and test|&lt;br /&gt;
Make a few changes, then fly the ship. Check power usage, jump range, heat, handling, and whether you forgot a required module. Avoid spending all credits on a build you have not tested.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{What next|title=Shipbuilding links|&lt;br /&gt;
* Learn the slot system in [[Ships and Equipment]].&lt;br /&gt;
* Use role pages such as [[Exploration]], [[Mining]], [[Trading]], or [[Combat]] to decide what the ship must carry.&lt;br /&gt;
* When engineering becomes relevant, continue to [[Engineering]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 5 — Begin engineering ==&lt;br /&gt;
Engineering improves ships, but it can become a grind if approached too early as a completion checklist. Treat your first engineering as a targeted upgrade to solve a problem you understand.&lt;br /&gt;
&lt;br /&gt;
{{Guide step|1|Learn what engineering changes|&lt;br /&gt;
Engineering modifies modules through blueprints and grades. Experimental effects add one additional special property. The important early idea is simple: choose an upgrade because it helps your ship&#039;s job.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|2|Understand materials|&lt;br /&gt;
Engineering uses materials rather than normal commodities. Materials have categories, grades, and storage separate from cargo racks. Learn where your material inventory is and how [[Material Trading]] helps convert excess materials into needed ones.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|3|Choose one useful first upgrade|&lt;br /&gt;
Pick one practical goal, such as improving Frame Shift Drive range for travel or making a commonly used module more comfortable. Follow the relevant Engineer invitation and unlock requirements rather than trying to unlock every Engineer immediately.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Guide step|4|Pin a blueprint when available|&lt;br /&gt;
When an Engineer allows it, pin a useful blueprint so future upgrades can be applied remotely. Learn the difference between workshop engineering, remote engineering, grades, and experimental effects.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Phase 6 — Choose your direction ==&lt;br /&gt;
At this point the roadmap stops being linear. You should know how to travel, dock, recover, outfit a ship, try activities, and follow linked references. Choose a direction and let EDFM guide you deeper.&lt;br /&gt;
&lt;br /&gt;
{{What next|title=Choose a route into the Field Manual|&lt;br /&gt;
* &#039;&#039;&#039;Explore:&#039;&#039;&#039; [[Exploration]], [[Exobiology]], [[Fuel Scooping]]&lt;br /&gt;
* &#039;&#039;&#039;Earn through cargo:&#039;&#039;&#039; [[Trading]], [[Mining]], [[Laser Mining]]&lt;br /&gt;
* &#039;&#039;&#039;Fight:&#039;&#039;&#039; [[Combat]], [[Interdiction]], Anti-Xeno combat when prepared&lt;br /&gt;
* &#039;&#039;&#039;Improve ships:&#039;&#039;&#039; [[Ships and Equipment]], [[Engineering]], [[Material Trading]]&lt;br /&gt;
* &#039;&#039;&#039;Work on progression:&#039;&#039;&#039; Federal and Imperial naval progression, [[Engineers]], Guardian technology&lt;br /&gt;
* &#039;&#039;&#039;Play the galaxy layer:&#039;&#039;&#039; [[Powerplay]], Background Simulation, Operations, System Colonisation, Squadrons&lt;br /&gt;
* &#039;&#039;&#039;Long-term ownership:&#039;&#039;&#039; Fleet Carriers and major personal projects&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Common problems ==&lt;br /&gt;
; My route says unavailable.&lt;br /&gt;
: Your ship may not have enough jump range, the route filter may be unsuitable, or the destination may require a permit. Try a nearer system, check route settings, reduce ship mass, or improve jump range.&lt;br /&gt;
&lt;br /&gt;
; I keep running out of fuel.&lt;br /&gt;
: Plot shorter routes, refuel at stations, and learn [[Fuel Scooping]]. Watch both the current tank and the route line before every long trip.&lt;br /&gt;
&lt;br /&gt;
; The station will not let me dock.&lt;br /&gt;
: Make sure you are close enough, targeting the station, using the contacts panel correctly, and not blocked by pad size, hostility, or legal status.&lt;br /&gt;
&lt;br /&gt;
; I accepted a mission I cannot finish.&lt;br /&gt;
: Read the mission details again. Check destination, cargo, legality, time limit, and required equipment. If the mission is not practical, abandon it and learn what requirement was missed.&lt;br /&gt;
&lt;br /&gt;
; I do not know which career is best.&lt;br /&gt;
: There is no single best career. Try several short loops, then build a ship around the activity you actually enjoy.&lt;br /&gt;
&lt;br /&gt;
== When are you no longer a new Commander? ==&lt;br /&gt;
There is no official line where a Commander stops being new. A practical sign is independence. You are becoming self-sufficient when you can:&lt;br /&gt;
&lt;br /&gt;
* decide what you want to do;&lt;br /&gt;
* determine what ship and equipment are appropriate;&lt;br /&gt;
* travel there safely;&lt;br /&gt;
* understand your fuel situation;&lt;br /&gt;
* recover from common mistakes;&lt;br /&gt;
* find the information you need; and&lt;br /&gt;
* understand enough of the game&#039;s systems to make your own decisions.&lt;br /&gt;
&lt;br /&gt;
{{What next|title=Continue exploring EDFM|&lt;br /&gt;
* If you want a broad index, return to the [[Main Page]].&lt;br /&gt;
* If you want practical procedures, browse [[Field Procedures]].&lt;br /&gt;
* If you want mechanics and reference pages, browse [[Game Reference]].&lt;br /&gt;
* If you want to improve ships, start with [[Ships and Equipment]] and [[Engineering]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:New Commander Content]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Guided_Encyclopedia&amp;diff=695</id>
		<title>Elite Dangerous Field Manual:Guided Encyclopedia</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Guided_Encyclopedia&amp;diff=695"/>
		<updated>2026-08-12T15:59:13Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Document Guided Encyclopedia article standard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article status|status=Draft|mode=Live}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Guided Encyclopedia&#039;&#039;&#039; is the article and guide standard for the Elite Dangerous Field Manual. EDFM articles should usually answer both of these reader questions on one canonical page:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reference:&#039;&#039;&#039; What is this, how does it work, and why should a Commander care?&lt;br /&gt;
* &#039;&#039;&#039;Guidance:&#039;&#039;&#039; What should I actually do, in what order, and what mistakes should I avoid?&lt;br /&gt;
&lt;br /&gt;
This standard borrows the structural idea of encyclopedia article plus requirements plus walkthrough, but it is not a visual clone of another wiki. Components should feel native to EDFM&#039;s dark, compact, field-manual style.&lt;br /&gt;
&lt;br /&gt;
== Philosophy ==&lt;br /&gt;
A good EDFM article is a guided encyclopedia entry. It begins with concise reference context, then gives practical preparation and a clear procedure when the subject is actionable. The walkthrough should live on the canonical article unless the guide is a larger journey through several subjects.&lt;br /&gt;
&lt;br /&gt;
Do not assume veteran knowledge. Explain enough for a new Commander to proceed, then link terminology and deeper mechanics to their own EDFM articles rather than re-teaching every system in every guide.&lt;br /&gt;
&lt;br /&gt;
== Article vs guide pages ==&lt;br /&gt;
Default behavior: put the walkthrough on the canonical subject article.&lt;br /&gt;
&lt;br /&gt;
Examples that should normally contain their own guidance:&lt;br /&gt;
&lt;br /&gt;
* [[Laser Mining]]&lt;br /&gt;
* [[Exobiology]]&lt;br /&gt;
* [[Material Trading]]&lt;br /&gt;
* [[Fuel Scooping]]&lt;br /&gt;
* [[Interdiction]]&lt;br /&gt;
* [[Engineering]]&lt;br /&gt;
* individual Engineers&lt;br /&gt;
* Powerplay mechanics&lt;br /&gt;
* Colonisation mechanics&lt;br /&gt;
&lt;br /&gt;
Separate guide pages are for larger objectives that span several independent subjects. Examples:&lt;br /&gt;
&lt;br /&gt;
* [[New Commander Roadmap]]&lt;br /&gt;
* [[Guide:Unlocking All Engineers]]&lt;br /&gt;
* [[Guide:Preparing for Anti-Xeno Combat]]&lt;br /&gt;
* [[Guide:Building Your First Exploration Ship]]&lt;br /&gt;
* [[Guide:Starting a Colonisation Project]]&lt;br /&gt;
&lt;br /&gt;
Do not automatically create &amp;lt;code&amp;gt;/Guide&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/Quick guide&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Guide:&amp;lt;/code&amp;gt; pages for a single subject.&lt;br /&gt;
&lt;br /&gt;
== Normal article anatomy ==&lt;br /&gt;
Use only the sections that fit the subject.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Lead&#039;&#039;&#039; — what the subject is, what it is used for, why it matters, and essential context.&lt;br /&gt;
# &#039;&#039;&#039;At a glance&#039;&#039;&#039; — a flexible quick-reference panel with relevant fields only.&lt;br /&gt;
# &#039;&#039;&#039;Before you start&#039;&#039;&#039; — required, recommended, and optional preparation, with reasons.&lt;br /&gt;
# &#039;&#039;&#039;Walkthrough&#039;&#039;&#039; — sequential Commander actions.&lt;br /&gt;
# &#039;&#039;&#039;Common problems&#039;&#039;&#039; — troubleshooting linked to relevant mechanics where possible.&lt;br /&gt;
# &#039;&#039;&#039;Reference material&#039;&#039;&#039; — mechanics, tables, variants, locations, rewards, history, notes, see also, and references.&lt;br /&gt;
# &#039;&#039;&#039;What next?&#039;&#039;&#039; — progressive navigation deeper into EDFM or back to a relevant guide.&lt;br /&gt;
&lt;br /&gt;
== Reusable components ==&lt;br /&gt;
&lt;br /&gt;
=== At a glance ===&lt;br /&gt;
Use {{tl|Guide info}}. Keep it flexible; do not create a huge infobox with every possible field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Guide info|title=At a glance|&lt;br /&gt;
; Activity : Laser mining&lt;br /&gt;
; Difficulty : Beginner-friendly once outfitted&lt;br /&gt;
; Recommended ship : Small or medium ship with mining hardpoints and cargo racks&lt;br /&gt;
; Related mechanics : [[Mining]], [[Prospector Limpet Controller]], [[Refinery]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Before you start ===&lt;br /&gt;
Use {{tl|Requirements}}. Explain why each item matters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Requirements|&lt;br /&gt;
; Required : Mining laser — extracts fragments from asteroids.&lt;br /&gt;
; Strongly recommended : Prospector Limpet Controller — identifies asteroid composition and increases yield.&lt;br /&gt;
; Optional : Detailed Surface Scanner — helps find hotspots before entering the ring.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Walkthrough steps ===&lt;br /&gt;
Use {{tl|Guide step}} for substantial steps.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Guide step|1|Find a suitable ring|&lt;br /&gt;
Open the System Map and look for planetary rings with metallic or icy resources. For platinum mining, prefer metallic rings with a platinum hotspot.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Steps should be sequential, scannable, and explicit about what the Commander should do.&lt;br /&gt;
&lt;br /&gt;
=== Callouts ===&lt;br /&gt;
Use callouts sparingly. Do not turn every paragraph into a colored box.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Field note|Main-sequence stars of spectral classes O, B, A, F, G, K and M can be fuel-scooped.}}&lt;br /&gt;
{{Tip|Plot shorter early routes until you understand fuel usage.}}&lt;br /&gt;
{{Important|The roadmap is guidance, not a mandatory progression path.}}&lt;br /&gt;
{{Warning|Do not fly a ship you cannot afford to rebuy.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contextual media ===&lt;br /&gt;
Use {{tl|Context media}} when an image belongs beside a specific instruction, not in a bottom gallery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Context media|image=Example galaxy map route.png|caption=The Galaxy Map with a short route plotted.|alt=Galaxy Map route plotting screen|&lt;br /&gt;
Open the Galaxy Map, select a nearby inhabited system, and choose &#039;&#039;&#039;Plot Route&#039;&#039;&#039;. Return to the cockpit after the route appears in the navigation panel.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only use screenshots that support the instruction. Avoid decorative images inside procedure steps.&lt;br /&gt;
&lt;br /&gt;
=== What next ===&lt;br /&gt;
Use {{tl|What next}} for progressive navigation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{What next|&lt;br /&gt;
* New to mining? Continue with [[Laser Mining]].&lt;br /&gt;
* Need module details? Read [[Prospector Limpet Controller]].&lt;br /&gt;
* Ready for engineering? Start with [[Engineering]].&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing style ==&lt;br /&gt;
* Write for a Commander who may be performing the activity for the first time.&lt;br /&gt;
* Use direct verbs: open, select, plot, launch, dock, scan, sell, refuel.&lt;br /&gt;
* Keep paragraphs short inside walkthrough sections.&lt;br /&gt;
* Link first-use terminology to deeper articles.&lt;br /&gt;
* Avoid unexplained veteran shorthand.&lt;br /&gt;
* Keep verified facts distinct from editorial guidance.&lt;br /&gt;
* If information is uncertain or not yet reviewed, use the article status system and concise inline notes rather than hiding uncertainty.&lt;br /&gt;
&lt;br /&gt;
== Common problems sections ==&lt;br /&gt;
Guides should include troubleshooting when common failure modes exist.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* My collector limpets immediately expire.&lt;br /&gt;
* The station will not let me dock.&lt;br /&gt;
* My Frame Shift Drive says route unavailable.&lt;br /&gt;
* My refinery is full.&lt;br /&gt;
* The mission target is not appearing.&lt;br /&gt;
&lt;br /&gt;
Explain the likely cause, the immediate fix, and link the relevant deeper mechanic.&lt;br /&gt;
&lt;br /&gt;
== Navigation expectations ==&lt;br /&gt;
Guides should lead readers deeper into EDFM. Reference pages should also point back to practical guidance.&lt;br /&gt;
&lt;br /&gt;
Example progression:&lt;br /&gt;
&lt;br /&gt;
[[New Commander Roadmap]] → [[Mining]] → [[Laser Mining]] → [[Prospector Limpet Controller]] → [[Platinum]] → [[Finding Platinum Hotspots]]&lt;br /&gt;
&lt;br /&gt;
A Commander who lands on a reference page from Google should be able to find the practical guide that uses that subject in context.&lt;br /&gt;
&lt;br /&gt;
== Implementation notes for editors ==&lt;br /&gt;
* Prefer the templates above rather than raw HTML.&lt;br /&gt;
* Use only relevant fields in {{tl|Guide info}} and {{tl|Requirements}}.&lt;br /&gt;
* Do not create deep template nesting for ordinary article content.&lt;br /&gt;
* Keep screenshots close to the step they explain.&lt;br /&gt;
* Preserve EDFM&#039;s visual identity: dark panels, compact labels, orange action accents, cyan reference accents.&lt;br /&gt;
&lt;br /&gt;
[[Category:Elite Dangerous Field Manual documentation]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:What_next&amp;diff=694</id>
		<title>Template:What next</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:What_next&amp;diff=694"/>
		<updated>2026-08-12T15:58:34Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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;nav class=&amp;quot;edfm-what-next&amp;quot; aria-label=&amp;quot;What next&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-what-next-title&amp;quot;&amp;gt;{{{title|What next?}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-what-next-body&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nav&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Progressive navigation from reference into guidance, or from a guide into deeper articles.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{What next|&lt;br /&gt;
* New to mining? Continue to [[Laser Mining]].&lt;br /&gt;
* Need the module details? Read [[Prospector Limpet Controller]].&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Warning&amp;diff=693</id>
		<title>Template:Warning</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Warning&amp;diff=693"/>
		<updated>2026-08-12T15:58:33Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Callout|type=warning|label=Warning|{{{1|}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Use for ship loss, mission failure, fines, or similarly serious consequences.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Warning|Do not launch without enough credits to rebuy your ship.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Tip&amp;diff=692</id>
		<title>Template:Tip</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Tip&amp;diff=692"/>
		<updated>2026-08-12T15:58:32Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Callout|type=tip|label=Tip|{{{1|}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Efficiency or convenience advice.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Tip|Bind a key for the Galaxy Map before making several jumps.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Requirements&amp;diff=691</id>
		<title>Template:Requirements</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Requirements&amp;diff=691"/>
		<updated>2026-08-12T15:58:32Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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-guide-requirements&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-requirements-title&amp;quot;&amp;gt;{{{title|Before you start}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-requirements-body&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Preparation panel for required, recommended, and optional equipment or knowledge. Explain why each item matters.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Requirements|&lt;br /&gt;
; Required : A ship with a Frame Shift Drive — every interstellar route depends on it.&lt;br /&gt;
; Recommended : Fuel scoop — prevents early fuel mistakes.&lt;br /&gt;
; Optional : Docking computer — useful while learning station approach.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Important&amp;diff=690</id>
		<title>Template:Important</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Important&amp;diff=690"/>
		<updated>2026-08-12T15:58:31Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Callout|type=important|label=Important|{{{1|}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Use for must-understand information that is not necessarily a danger warning.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Important|The roadmap is guidance, not a mandatory progression path.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Guide_step&amp;diff=689</id>
		<title>Template:Guide step</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Guide_step&amp;diff=689"/>
		<updated>2026-08-12T15:58:31Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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;section class=&amp;quot;edfm-guide-step&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-step-heading&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;edfm-guide-step-number&amp;quot;&amp;gt;{{{1|Step}}}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;edfm-guide-step-title&amp;quot;&amp;gt;{{{2|Untitled step}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-step-body&amp;quot;&amp;gt;{{{3|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Numbered walkthrough step. Keep each step focused on one player action or small objective.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Guide step|1|Plot a route|&lt;br /&gt;
Open the Galaxy Map, choose a nearby inhabited system, and select Plot Route.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Guide_info&amp;diff=688</id>
		<title>Template:Guide info</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Guide_info&amp;diff=688"/>
		<updated>2026-08-12T15:58:30Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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-guide-info&amp;quot; role=&amp;quot;complementary&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-info-title&amp;quot;&amp;gt;{{{title|At a glance}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-info-body&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Flexible quick-reference panel for Guided Encyclopedia articles. Use only fields relevant to the page.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Guide info|title=At a glance|&lt;br /&gt;
; Designed for : Brand-new Commanders&lt;br /&gt;
; Starting point : Immediately after training&lt;br /&gt;
; Required ship : Starter ship&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Field_note&amp;diff=687</id>
		<title>Template:Field note</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Field_note&amp;diff=687"/>
		<updated>2026-08-12T15:58:29Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Callout|type=field-note|label=Field note|{{{1|}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Context that explains the game without interrupting the walkthrough.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Field note|Main-sequence stars of classes O, B, A, F, G, K and M can be fuel-scooped.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Context_media&amp;diff=686</id>
		<title>Template:Context media</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Context_media&amp;diff=686"/>
		<updated>2026-08-12T15:58:29Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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-context-media edfm-context-media--{{{align|right}}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-context-media-body&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;{{#if:{{{image|}}}|&lt;br /&gt;
&amp;lt;figure class=&amp;quot;edfm-context-media-figure&amp;quot;&amp;gt;[[File:{{{image}}}|frameless|{{{alt|{{{caption|Context image}}}}}}]]{{#if:{{{caption|}}}|&amp;lt;figcaption class=&amp;quot;edfm-context-media-caption&amp;quot;&amp;gt;{{{caption}}}&amp;lt;/figcaption&amp;gt;}}&amp;lt;/figure&amp;gt;}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Place screenshots beside the step where they matter. On mobile, text and media stack.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Context media|image=Example.png|caption=Galaxy Map route plotting.|alt=Galaxy Map with a plotted route|&lt;br /&gt;
Open the Galaxy Map and choose a nearby destination.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:Callout&amp;diff=685</id>
		<title>Template:Callout</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:Callout&amp;diff=685"/>
		<updated>2026-08-12T15:58:28Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Create Guided Encyclopedia reusable component&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-guide-callout edfm-guide-callout--{{{type|field-note}}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;edfm-guide-callout-label&amp;quot;&amp;gt;{{{label|Field note}}}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;edfm-guide-callout-body&amp;quot;&amp;gt;{{{1|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
Generic Guided Encyclopedia callout. Prefer the wrapper templates when possible: {{tl|Field note}}, {{tl|Tip}}, {{tl|Warning}}, and {{tl|Important}}.&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Callout|type=warning|label=Warning|Never fly without rebuy.}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Guided Encyclopedia templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:EDFM_style/styles.css&amp;diff=684</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=684"/>
		<updated>2026-08-12T15:58:28Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Add Guided Encyclopedia component styles&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;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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=683</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=683"/>
		<updated>2026-08-12T14:47:25Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Temporarily remove sidebar Discord CTA styles&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. 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;
/* 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;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;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=682</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=682"/>
		<updated>2026-08-12T14:47:24Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Temporarily remove sidebar Discord CTA&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;UTC&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;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Authmanager-realname-help&amp;diff=679</id>
		<title>MediaWiki:Authmanager-realname-help</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Authmanager-realname-help&amp;diff=679"/>
		<updated>2026-08-11T21:56:51Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Elite Dangerous commander name for attribution.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Authmanager-realname-label&amp;diff=678</id>
		<title>MediaWiki:Authmanager-realname-label</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Authmanager-realname-label&amp;diff=678"/>
		<updated>2026-08-11T21:56:51Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CMDR Name&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Createacct-another-realname-tip&amp;diff=677</id>
		<title>MediaWiki:Createacct-another-realname-tip</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Createacct-another-realname-tip&amp;diff=677"/>
		<updated>2026-08-11T21:56:50Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CMDR name is optional. If provided, it can be used for attribution on Elite Dangerous Field Manual edits.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Prefs-help-realname&amp;diff=676</id>
		<title>MediaWiki:Prefs-help-realname</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Prefs-help-realname&amp;diff=676"/>
		<updated>2026-08-11T21:56:49Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Your CMDR name is optional. If provided, it can be used for attribution on Elite Dangerous Field Manual edits.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Createacct-realname&amp;diff=675</id>
		<title>MediaWiki:Createacct-realname</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Createacct-realname&amp;diff=675"/>
		<updated>2026-08-11T21:56:49Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CMDR Name (optional)&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=674</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=674"/>
		<updated>2026-08-11T21:56:48Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: &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. 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;
/* 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;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;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Adding_an_Image&amp;diff=641</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=641"/>
		<updated>2026-08-11T02:50:03Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&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 technically enabled on EDFM (PNG/JPEG/WebP, up to 30&amp;amp;nbsp;MB — see [[Elite Dangerous Field Manual:Screenshot Policy]] for the full rules), but the upload right is currently restricted to administrator accounts while public account creation is still closed — see [[Elite Dangerous Field Manual:Current Project Status]]. This is not the same as uploads being switched off; it&#039;s a temporary access restriction that will lift alongside public registration. If you have content you&#039;d like added, flag it via the article&#039;s talk page for now rather than assuming you can upload it yourself.&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;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 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 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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Category:Engineer_images&amp;diff=640</id>
		<title>Category:Engineer images</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Category:Engineer_images&amp;diff=640"/>
		<updated>2026-08-11T02:50:02Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Portrait and identification images of Engineers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Media]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Thesarge.png&amp;diff=639</id>
		<title>File:Thesarge.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Thesarge.png&amp;diff=639"/>
		<updated>2026-08-11T02:49:30Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[The Sarge]], an Engineer.&lt;br /&gt;
 |subject = [[The Sarge]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[The Sarge]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Lizryder.png&amp;diff=638</id>
		<title>File:Lizryder.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Lizryder.png&amp;diff=638"/>
		<updated>2026-08-11T02:49:29Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Liz Ryder]], an Engineer.&lt;br /&gt;
 |subject = [[Liz Ryder]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Liz Ryder]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Zachariahnemo.png&amp;diff=637</id>
		<title>File:Zachariahnemo.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Zachariahnemo.png&amp;diff=637"/>
		<updated>2026-08-11T02:49:29Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Zacariah Nemo]], an Engineer.&lt;br /&gt;
 |subject = [[Zacariah Nemo]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Zacariah Nemo]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Selenejean.png&amp;diff=636</id>
		<title>File:Selenejean.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Selenejean.png&amp;diff=636"/>
		<updated>2026-08-11T02:49:28Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Selene Jean]], an Engineer.&lt;br /&gt;
 |subject = [[Selene Jean]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Selene Jean]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Theblaster.png&amp;diff=635</id>
		<title>File:Theblaster.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Theblaster.png&amp;diff=635"/>
		<updated>2026-08-11T02:49:27Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]], an Engineer.&lt;br /&gt;
 |subject = [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Leicheung.png&amp;diff=634</id>
		<title>File:Leicheung.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Leicheung.png&amp;diff=634"/>
		<updated>2026-08-11T02:49:27Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Lei Cheung]], an Engineer.&lt;br /&gt;
 |subject = [[Lei Cheung]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Lei Cheung]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Marcoqwent.png&amp;diff=633</id>
		<title>File:Marcoqwent.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Marcoqwent.png&amp;diff=633"/>
		<updated>2026-08-11T02:49:26Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Marco Qwent]], an Engineer.&lt;br /&gt;
 |subject = [[Marco Qwent]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous, captured in-game&lt;br /&gt;
 |media_type = In-game screenshot&lt;br /&gt;
 |captured_by = [[User:Sythan|Sythan]]&lt;br /&gt;
 |intended_use = Identification and illustration on the [[Marco Qwent]] article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Template:EDFM_image_information&amp;diff=632</id>
		<title>Template:EDFM image information</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Template:EDFM_image_information&amp;diff=632"/>
		<updated>2026-08-11T02:49:26Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&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-info&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Description&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{description|&amp;lt;span class=&amp;quot;edfm-inline-flag&amp;quot;&amp;gt;Not specified&amp;lt;/span&amp;gt;}}}&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Subject&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{subject|&amp;lt;span class=&amp;quot;edfm-inline-flag&amp;quot;&amp;gt;Not specified&amp;lt;/span&amp;gt;}}}&amp;lt;/dd&amp;gt;{{#if:{{{subject_type|}}}|&lt;br /&gt;
&amp;lt;dt&amp;gt;Subject type&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{subject_type}}}&amp;lt;/dd&amp;gt;}}&lt;br /&gt;
&amp;lt;dt&amp;gt;Source&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{source|Elite Dangerous}}}&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Media type&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{media_type|In-game screenshot}}}&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Captured by&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{captured_by|&amp;lt;span class=&amp;quot;edfm-inline-flag&amp;quot;&amp;gt;Contributor name not specified&amp;lt;/span&amp;gt;}}}&amp;lt;/dd&amp;gt;{{#if:{{{capture_date|}}}|&lt;br /&gt;
&amp;lt;dt&amp;gt;Captured&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{capture_date}}}&amp;lt;/dd&amp;gt;}}{{#if:{{{modifications|}}}|&lt;br /&gt;
&amp;lt;dt&amp;gt;Modifications&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{modifications}}}&amp;lt;/dd&amp;gt;}}&lt;br /&gt;
&amp;lt;dt&amp;gt;Intended use&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{intended_use|&amp;lt;span class=&amp;quot;edfm-inline-flag&amp;quot;&amp;gt;Not specified&amp;lt;/span&amp;gt;}}}&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Copyright holder&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{copyright_holder|&amp;lt;span class=&amp;quot;edfm-inline-flag&amp;quot;&amp;gt;Not specified&amp;lt;/span&amp;gt;}}}&amp;lt;/dd&amp;gt;{{#if:{{{notes|}}}|&lt;br /&gt;
&amp;lt;dt&amp;gt;Notes&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;{{{notes}}}&amp;lt;/dd&amp;gt;}}&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
The standard media-information template for EDFM file pages — describes the &#039;&#039;&#039;asset&#039;&#039;&#039; (what it depicts, where it came from, who made/captured it, how it&#039;s been altered, what it&#039;s for). It does &#039;&#039;&#039;not&#039;&#039;&#039; handle licensing — that stays in its own &amp;lt;code&amp;gt;== Licensing ==&amp;lt;/code&amp;gt; section via the existing {{tl|License-ED screenshot}} / {{tl|License-Official Frontier media}} / etc. templates (selected from the Licensing dropdown on &amp;lt;code&amp;gt;Special:Upload&amp;lt;/code&amp;gt;), so the two responsibilities don&#039;t get tangled together on the page. See [[Elite Dangerous Field Manual:Image Use Policy]] for why this split matters.&lt;br /&gt;
&lt;br /&gt;
This template also does not duplicate the subject&#039;s own article — it describes the picture, not the Engineer/ship/location pictured. Gameplay facts (location, unlock requirements, specialties, etc.) belong on the subject&#039;s own article, not here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of Hero Ferrari, an Engineer.&lt;br /&gt;
 |subject = [[Hero Ferrari]]&lt;br /&gt;
 |subject_type = Engineer&lt;br /&gt;
 |source = Elite Dangerous&lt;br /&gt;
 |media_type = Cropped in-game screenshot&lt;br /&gt;
 |captured_by = Sythan&lt;br /&gt;
 |capture_date = 8 August 2026&lt;br /&gt;
 |modifications = Cropped to portrait framing&lt;br /&gt;
 |intended_use = Identification and illustration on the Hero Ferrari article and related Engineering pages.&lt;br /&gt;
 |copyright_holder = Frontier Developments plc&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place this under &amp;lt;code&amp;gt;== Summary ==&amp;lt;/code&amp;gt; on the file page (MediaWiki generates that heading automatically from the upload description). Put the licensing classification under a separate &amp;lt;code&amp;gt;== Licensing ==&amp;lt;/code&amp;gt; section, as already happens automatically when a Licensing option is picked at upload time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fields:&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; — a sentence describing what the image actually shows.&lt;br /&gt;
* &amp;lt;code&amp;gt;subject&amp;lt;/code&amp;gt; — what&#039;s pictured. Wikilink it yourself (e.g. &amp;lt;code&amp;gt;[[Hero Ferrari]]&amp;lt;/code&amp;gt;) when the subject has its own EDFM article and linking would actually help someone reach it — don&#039;t link just for the sake of it.&lt;br /&gt;
* &amp;lt;code&amp;gt;subject_type&amp;lt;/code&amp;gt; — optional; a short classification of the subject (e.g. &amp;quot;Engineer&amp;quot;, &amp;quot;Ship&amp;quot;, &amp;quot;Station&amp;quot;, &amp;quot;Settlement&amp;quot;, &amp;quot;UI element&amp;quot;).&lt;br /&gt;
* &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; — where the media originated; defaults to &amp;quot;Elite Dangerous&amp;quot;. Override for other cases, e.g. &amp;quot;Frontier Developments promotional/media asset&amp;quot; or &amp;quot;Created for Elite Dangerous Field Manual&amp;quot;.&lt;br /&gt;
* &amp;lt;code&amp;gt;media_type&amp;lt;/code&amp;gt; — defaults to &amp;quot;In-game screenshot&amp;quot;. Other examples: &amp;quot;Cropped in-game screenshot&amp;quot;, &amp;quot;Promotional image&amp;quot;, &amp;quot;Frontier press asset&amp;quot;, &amp;quot;Logo&amp;quot;, &amp;quot;Diagram&amp;quot;, &amp;quot;EDFM-created graphic&amp;quot;, &amp;quot;User-created illustration&amp;quot;, &amp;quot;Map&amp;quot;, &amp;quot;UI screenshot&amp;quot;.&lt;br /&gt;
* &amp;lt;code&amp;gt;captured_by&amp;lt;/code&amp;gt; — the contributor&#039;s commander name or handle. Always fill this in — leaving it out flags the file into [[:Category:Files missing source information]] rather than silently crediting nobody.&lt;br /&gt;
* &amp;lt;code&amp;gt;capture_date&amp;lt;/code&amp;gt; — optional, omitted entirely (no row shown) if not given. Use the actual capture/creation date only if it&#039;s actually known — &#039;&#039;&#039;do not substitute the upload date&#039;&#039;&#039; unless that&#039;s genuinely also the capture date.&lt;br /&gt;
* &amp;lt;code&amp;gt;modifications&amp;lt;/code&amp;gt; — optional, omitted entirely if not given. Only note changes with practical relevance (cropped, resized, background removed, colour corrected, composite, etc.) — don&#039;t list routine technical detail with no bearing on how the image should be read, and don&#039;t claim &amp;quot;original&amp;quot;/unmodified unless that&#039;s actually known.&lt;br /&gt;
* &amp;lt;code&amp;gt;intended_use&amp;lt;/code&amp;gt; — what the image is for on EDFM (e.g. &amp;quot;Identification and illustration on the Hero Ferrari article&amp;quot;).&lt;br /&gt;
* &amp;lt;code&amp;gt;copyright_holder&amp;lt;/code&amp;gt; — who actually owns the underlying material (e.g. &amp;quot;Frontier Developments plc&amp;quot; for anything showing game assets, &amp;quot;EDFM&amp;quot; or a named contributor for original diagrams/graphics, a named third party if used with permission). State only what&#039;s actually known — don&#039;t infer.&lt;br /&gt;
* &amp;lt;code&amp;gt;notes&amp;lt;/code&amp;gt; — optional, anything else worth recording.&lt;br /&gt;
&lt;br /&gt;
See [[Elite Dangerous Field Manual:Image Use Policy]] and [[Elite Dangerous Field Manual:Adding an Image]].&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Category:Odyssey_Engineer_images&amp;diff=631</id>
		<title>Category:Odyssey Engineer images</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Category:Odyssey_Engineer_images&amp;diff=631"/>
		<updated>2026-08-11T02:49:25Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Normalize Engineer image metadata wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Portrait and identification images of Engineers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>