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

		<summary type="html">&lt;p&gt;EDFM Maintenance: Constrain sidebar logo to fit raster artwork&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;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Heroferrari.png&amp;diff=663</id>
		<title>File:Heroferrari.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Heroferrari.png&amp;diff=663"/>
		<updated>2026-08-11T03:08:17Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Remove redundant Elite Dangerous wording from Engineer image metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of Hero Ferrari, an Odyssey Engineer.&lt;br /&gt;
 |subject = [[Hero Ferrari]]&lt;br /&gt;
 |subject_type = Odyssey 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;
 |modifications = Cropped to portrait framing (dimensions are non-standard for a full-screen capture, consistent with cropping; not confirmed against an uncropped original)&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;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
[[Category:Odyssey Engineer images]]&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Petraolmanova.png&amp;diff=662</id>
		<title>File:Petraolmanova.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Petraolmanova.png&amp;diff=662"/>
		<updated>2026-08-11T03:06:47Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Petra Olmanova]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Petra Olmanova]]&lt;br /&gt;
 |subject_type = Ship 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 [[Petra Olmanova]] 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Melbrandon.png&amp;diff=661</id>
		<title>File:Melbrandon.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Melbrandon.png&amp;diff=661"/>
		<updated>2026-08-11T03:06:46Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Mel Brandon]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Mel Brandon]]&lt;br /&gt;
 |subject_type = Ship 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 [[Mel Brandon]] 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Lorijameson.png&amp;diff=660</id>
		<title>File:Lorijameson.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Lorijameson.png&amp;diff=660"/>
		<updated>2026-08-11T03:06:45Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Lori Jameson]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Lori Jameson]]&lt;br /&gt;
 |subject_type = Ship 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 [[Lori Jameson]] 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Ramtah.png&amp;diff=659</id>
		<title>File:Ramtah.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Ramtah.png&amp;diff=659"/>
		<updated>2026-08-11T03:06:45Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of [[Ram Tah]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Ram Tah]]&lt;br /&gt;
 |subject_type = Ship 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 [[Ram Tah]] 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Thesarge.png&amp;diff=658</id>
		<title>File:Thesarge.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Thesarge.png&amp;diff=658"/>
		<updated>2026-08-11T03:06:44Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[The Sarge]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Lizryder.png&amp;diff=657</id>
		<title>File:Lizryder.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Lizryder.png&amp;diff=657"/>
		<updated>2026-08-11T03:06:43Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Liz Ryder]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Zachariahnemo.png&amp;diff=656</id>
		<title>File:Zachariahnemo.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Zachariahnemo.png&amp;diff=656"/>
		<updated>2026-08-11T03:06:42Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Zacariah Nemo]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Selenejean.png&amp;diff=655</id>
		<title>File:Selenejean.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Selenejean.png&amp;diff=655"/>
		<updated>2026-08-11T03:06:41Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Selene Jean]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Theblaster.png&amp;diff=654</id>
		<title>File:Theblaster.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Theblaster.png&amp;diff=654"/>
		<updated>2026-08-11T03:06:41Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Leicheung.png&amp;diff=653</id>
		<title>File:Leicheung.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Leicheung.png&amp;diff=653"/>
		<updated>2026-08-11T03:06:40Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Lei Cheung]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Marcoqwent.png&amp;diff=652</id>
		<title>File:Marcoqwent.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Marcoqwent.png&amp;diff=652"/>
		<updated>2026-08-11T03:06:39Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&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]], a Ship Engineer.&lt;br /&gt;
 |subject = [[Marco Qwent]]&lt;br /&gt;
 |subject_type = Ship 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;
[[Category:Ship Engineer images]]&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=File:Heroferrari.png&amp;diff=651</id>
		<title>File:Heroferrari.png</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=File:Heroferrari.png&amp;diff=651"/>
		<updated>2026-08-11T03:06:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
{{EDFM image information&lt;br /&gt;
 |description = In-game portrait of Hero Ferrari, an Odyssey Engineer in &#039;&#039;Elite Dangerous&#039;&#039;.&lt;br /&gt;
 |subject = [[Hero Ferrari]]&lt;br /&gt;
 |subject_type = Odyssey 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;
 |modifications = Cropped to portrait framing (dimensions are non-standard for a full-screen capture, consistent with cropping; not confirmed against an uncropped original)&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;
&lt;br /&gt;
[[Category:Engineer images]]&lt;br /&gt;
[[Category:Odyssey Engineer images]]&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{License-ED screenshot}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Category:Odyssey_Engineer_images&amp;diff=650</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=650"/>
		<updated>2026-08-11T03:06:37Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype guidance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Portrait and identification images of Odyssey Engineers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Category:Ship_Engineer_images&amp;diff=649</id>
		<title>Category:Ship Engineer images</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Category:Ship_Engineer_images&amp;diff=649"/>
		<updated>2026-08-11T03:06:37Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype guidance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Portrait and identification images of Ship Engineers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineer images]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Category:Engineer_images&amp;diff=648</id>
		<title>Category:Engineer images</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Category:Engineer_images&amp;diff=648"/>
		<updated>2026-08-11T03:06:36Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype guidance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Portrait and identification images of Engineers, both Ship and Odyssey. See [[:Category:Ship Engineer images]] and [[:Category:Odyssey Engineer images]] for the two sub-groups.&lt;br /&gt;
&lt;br /&gt;
[[Category:Media]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elite_Dangerous_Field_Manual:Adding_an_Image&amp;diff=647</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=647"/>
		<updated>2026-08-11T03:06:35Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Restore Ship/Odyssey Engineer image subtype guidance&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;Ship Engineer&amp;quot; vs &amp;quot;Odyssey Engineer&amp;quot; from the subject&#039;s own article (its Engineering-type category) — only use this field if that inference is wrong or the subject&#039;s article doesn&#039;t exist yet.&lt;br /&gt;
# &#039;&#039;&#039;Licensing&#039;&#039;&#039; — for an ordinary gameplay screenshot this is almost always &amp;quot;Elite Dangerous in-game screenshot.&amp;quot; See the guidance on the upload page itself, or [[Elite Dangerous Field Manual:Image Use Policy]], for the other options. Your choice here also determines the &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;media_type&amp;lt;/code&amp;gt;, and (where the license makes it clear) &amp;lt;code&amp;gt;copyright_holder&amp;lt;/code&amp;gt; fields below — you don&#039;t need to re-enter information the license already establishes.&lt;br /&gt;
# &#039;&#039;&#039;Image modifications&#039;&#039;&#039; — optional. Only state something here if you actually know the file has been altered (e.g. &amp;quot;Cropped to portrait framing&amp;quot;); leave it blank rather than guess.&lt;br /&gt;
# &#039;&#039;&#039;Additional notes&#039;&#039;&#039; — optional freeform field for anything else worth recording.&lt;br /&gt;
&lt;br /&gt;
On submission, EDFM builds the file page&#039;s &amp;lt;code&amp;gt;== Summary ==&amp;lt;/code&amp;gt; section automatically, using {{tl|EDFM image information}}:&lt;br /&gt;
* &#039;&#039;&#039;description&#039;&#039;&#039; — a short factual sentence built from the media purpose and subject (e.g. &amp;quot;In-game portrait of [[Hero Ferrari]], an Odyssey Engineer.&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;subject&#039;&#039;&#039; / &#039;&#039;&#039;subject_type&#039;&#039;&#039; — the article you named, linked if it exists, plus its inferred or overridden type.&lt;br /&gt;
* &#039;&#039;&#039;source&#039;&#039;&#039; / &#039;&#039;&#039;media_type&#039;&#039;&#039; / &#039;&#039;&#039;copyright_holder&#039;&#039;&#039; — derived from your Licensing choice (e.g. &amp;quot;Elite Dangerous, captured in-game&amp;quot; / &amp;quot;In-game screenshot&amp;quot; / &amp;quot;Frontier Developments plc&amp;quot; for an ordinary screenshot). For original work you made yourself, copyright is attributed to you as the creator, not to EDFM.&lt;br /&gt;
* &#039;&#039;&#039;captured_by&#039;&#039;&#039; — your account name, filled in automatically; you never need to type your own name.&lt;br /&gt;
* &#039;&#039;&#039;capture_date&#039;&#039;&#039; — included &#039;&#039;&#039;only&#039;&#039;&#039; if the uploaded file&#039;s own metadata contains a genuine capture date. EDFM never substitutes the upload date, and never guesses.&lt;br /&gt;
* &#039;&#039;&#039;modifications&#039;&#039;&#039; / &#039;&#039;&#039;notes&#039;&#039;&#039; — only included if you actually filled those optional fields in.&lt;br /&gt;
* &#039;&#039;&#039;intended_use&#039;&#039;&#039; — a short standard sentence built from the media purpose and subject (e.g. &amp;quot;Identification and illustration on the [[Hero Ferrari]] article and related Engineering pages.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The relevant categories (for example [[:Category:Engineer images]] and [[:Category:Odyssey Engineer images]]) and the &amp;lt;code&amp;gt;== Licensing ==&amp;lt;/code&amp;gt; section (from your Licensing choice, e.g. {{tl|License-ED screenshot}}) are added automatically as well.&lt;br /&gt;
&lt;br /&gt;
You should not need to write or edit &amp;lt;code&amp;gt;{{tl|EDFM image information}}&amp;lt;/code&amp;gt; syntax by hand for a normal upload. If something EDFM generated needs correcting, or you want to add detail beyond what the form covers, you can always edit the file page afterwards like any other page on this wiki — see [[#Advanced: editing a file page directly|below]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Uploading a new version of an existing file&#039;&#039;&#039; (replacing the image itself) does not regenerate or overwrite the existing file page&#039;s description — your original metadata is left exactly as it was.&lt;br /&gt;
&lt;br /&gt;
Once uploaded, reference the image on the article as &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[File:Name.png|thumb|caption]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, or pass it as &amp;lt;code&amp;gt;|image=Name.png&amp;lt;/code&amp;gt; to an infobox that supports one (e.g. {{tl|Engineer infobox}}).&lt;br /&gt;
&lt;br /&gt;
== Advanced: editing a file page directly ==&lt;br /&gt;
File pages are ordinary wiki pages. An experienced editor can open a file page and edit its {{tl|EDFM image information}} fields directly at any time — for example to add a &amp;lt;code&amp;gt;capture_date&amp;lt;/code&amp;gt; EDFM couldn&#039;t detect, correct a &amp;lt;code&amp;gt;subject_type&amp;lt;/code&amp;gt;, or expand on &amp;lt;code&amp;gt;notes&amp;lt;/code&amp;gt;. See {{tl|EDFM image information}}&#039;s own documentation for the full field list.&lt;br /&gt;
&lt;br /&gt;
== Captioning ==&lt;br /&gt;
Use {{tl|Screenshot caption}} for the visible caption text under the image on the article page, so credit/context is shown consistently rather than as plain prose. This is separate from {{tl|EDFM image information}} on the file page itself — see [[Elite Dangerous Field Manual:Screenshot Policy]] for the distinction.&lt;br /&gt;
&lt;br /&gt;
{{Related articles|[[Elite Dangerous Field Manual:Image Use Policy]] [[Elite Dangerous Field Manual:Screenshot Policy]] [[Elite Dangerous Field Manual:Contributing]]}}&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=579</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=579"/>
		<updated>2026-08-10T04:22:16Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Add logo spacing above sidebar Discord invite button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
	/* Polish-pass bump from 1280px -- article read as slightly too narrow&lt;br /&gt;
	   on large desktop displays, and future reference tables (engineering,&lt;br /&gt;
	   ship stats, colonisation data) will want the room. Still centred&lt;br /&gt;
	   within the workspace via --edfm-gutter below, not stretched&lt;br /&gt;
	   edge-to-edge. */&lt;br /&gt;
	--edfm-content-max: 1320px;&lt;br /&gt;
	/* RuneScape.wiki-style integrated rail: wide enough for readable labels,&lt;br /&gt;
	   but joined directly to the page plane. Width and clear match so the&lt;br /&gt;
	   article starts beside the sidebar shadow instead of after a dead gutter. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	/* The gutter is whatever&#039;s left of the workspace (viewport minus the&lt;br /&gt;
	   sidebar) after the capped content width, split evenly, never&lt;br /&gt;
	   negative. On a screen too narrow to fit sidebar+content-max, this&lt;br /&gt;
	   collapses to 0 and content just fills the workspace edge-to-edge --&lt;br /&gt;
	   see &amp;quot;GLOBAL LAYOUT&amp;quot; below for the full explanation. */&lt;br /&gt;
	--edfm-gutter: max( 0px, calc( ( 100vw - var( --edfm-sidebar-clear ) - var( --edfm-content-max ) ) / 2 ) );&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: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-title );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	margin-top: 0.15em;&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.4em;&lt;br /&gt;
	margin-top: 3.25rem;&lt;br /&gt;
	margin-bottom: 1.1rem;&lt;br /&gt;
	font-size: var( --edfm-fs-h2 );&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: &#039;// &#039;;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: 46em; /* comfortable reading measure, not the full column */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --edfm-link-external-visited );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55em;&lt;br /&gt;
	margin: 0 0 0.5em 0;&lt;br /&gt;
	padding-top: 1.1em;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&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-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	width: 8px;&lt;br /&gt;
	height: 8px;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	clip-path: polygon( 0 0, 100% 0, 100% 65%, 65% 100%, 0 100% );&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-size: 1.1rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	max-width: 42em;&lt;br /&gt;
	margin: 0.5em 0 1.7em 0;&lt;br /&gt;
	padding-bottom: 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 1.35rem );&lt;br /&gt;
	min-height: 1.78rem;&lt;br /&gt;
	margin: 0.35rem 0.675rem 1.05rem 0.675rem;&lt;br /&gt;
	padding: 0.36rem 0.56rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.76rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 2px 5px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	transition: background-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta:hover,&lt;br /&gt;
.edfm-discord-cta:focus {&lt;br /&gt;
	background: #4752c4;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 3px 8px rgba( 0, 0, 0, 0.42 );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon svg {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	fill: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: 52rem;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   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;
	min-height: 9.5rem;&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;
	min-height: 13.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;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=578</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=578"/>
		<updated>2026-08-10T04:19:25Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Slightly shrink sidebar Discord invite button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
	/* Polish-pass bump from 1280px -- article read as slightly too narrow&lt;br /&gt;
	   on large desktop displays, and future reference tables (engineering,&lt;br /&gt;
	   ship stats, colonisation data) will want the room. Still centred&lt;br /&gt;
	   within the workspace via --edfm-gutter below, not stretched&lt;br /&gt;
	   edge-to-edge. */&lt;br /&gt;
	--edfm-content-max: 1320px;&lt;br /&gt;
	/* RuneScape.wiki-style integrated rail: wide enough for readable labels,&lt;br /&gt;
	   but joined directly to the page plane. Width and clear match so the&lt;br /&gt;
	   article starts beside the sidebar shadow instead of after a dead gutter. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	/* The gutter is whatever&#039;s left of the workspace (viewport minus the&lt;br /&gt;
	   sidebar) after the capped content width, split evenly, never&lt;br /&gt;
	   negative. On a screen too narrow to fit sidebar+content-max, this&lt;br /&gt;
	   collapses to 0 and content just fills the workspace edge-to-edge --&lt;br /&gt;
	   see &amp;quot;GLOBAL LAYOUT&amp;quot; below for the full explanation. */&lt;br /&gt;
	--edfm-gutter: max( 0px, calc( ( 100vw - var( --edfm-sidebar-clear ) - var( --edfm-content-max ) ) / 2 ) );&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: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-title );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	margin-top: 0.15em;&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.4em;&lt;br /&gt;
	margin-top: 3.25rem;&lt;br /&gt;
	margin-bottom: 1.1rem;&lt;br /&gt;
	font-size: var( --edfm-fs-h2 );&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: &#039;// &#039;;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: 46em; /* comfortable reading measure, not the full column */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --edfm-link-external-visited );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55em;&lt;br /&gt;
	margin: 0 0 0.5em 0;&lt;br /&gt;
	padding-top: 1.1em;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&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-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	width: 8px;&lt;br /&gt;
	height: 8px;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	clip-path: polygon( 0 0, 100% 0, 100% 65%, 65% 100%, 0 100% );&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-size: 1.1rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	max-width: 42em;&lt;br /&gt;
	margin: 0.5em 0 1.7em 0;&lt;br /&gt;
	padding-bottom: 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 1.35rem );&lt;br /&gt;
	min-height: 1.78rem;&lt;br /&gt;
	margin: -0.35rem 0.675rem 1.05rem 0.675rem;&lt;br /&gt;
	padding: 0.36rem 0.56rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.76rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	line-height: 1.1;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 2px 5px rgba( 0, 0, 0, 0.35 );&lt;br /&gt;
	transition: background-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta:hover,&lt;br /&gt;
.edfm-discord-cta:focus {&lt;br /&gt;
	background: #4752c4;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	text-decoration: none !important;&lt;br /&gt;
	box-shadow: 0 3px 8px rgba( 0, 0, 0, 0.42 );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
}&lt;br /&gt;
.edfm-discord-cta-icon svg {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	fill: currentColor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .portal,&lt;br /&gt;
#mw-panel .vector-menu-portal {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-top: 1.45rem;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal:first-of-type,&lt;br /&gt;
#mw-panel .vector-menu-portal:first-of-type {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal .body,&lt;br /&gt;
#mw-panel .portal ul,&lt;br /&gt;
#mw-panel .vector-menu-content,&lt;br /&gt;
#mw-panel .vector-menu-content-list {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	max-width: none;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	padding-left: 0;&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding: 0.42em 0.55em;&lt;br /&gt;
	margin: 0.08em -0.35em;&lt;br /&gt;
	border-left: 2px solid transparent;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
#mw-panel .portal a:hover {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;You are here&amp;quot; -- MediaWiki&#039;s sidebar has no built-in current-page&lt;br /&gt;
   indication; MediaWiki:Common.js adds the .edfm-nav-current class to the&lt;br /&gt;
   matching list item by comparing hrefs to the current URL. Orange is&lt;br /&gt;
   reserved for exactly this kind of &amp;quot;important navigation / selected&lt;br /&gt;
   state&amp;quot; per the colour system, which is why the rest of the sidebar is&lt;br /&gt;
   deliberately muted rather than orange throughout (an all-orange sidebar&lt;br /&gt;
   would both fight this indicator and read as visually dominant). */&lt;br /&gt;
.edfm-nav-current &amp;gt; a {&lt;br /&gt;
	color: var( --edfm-orange ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
	border-left-width: 3px;&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	box-shadow: inset 0 0 0 1px rgba( 255, 138, 0, 0.08 );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	border-left: 2px solid var( --edfm-orange );&lt;br /&gt;
	padding-left: 0.5em;&lt;br /&gt;
	margin-left: -0.5em;&lt;br /&gt;
	margin-bottom: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   3. TOP BAR -- two-tier chrome&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy&#039;s #mw-head naturally has ~2.5em of empty space above the&lt;br /&gt;
   tabs row (core: `#left-navigation/#right-navigation { margin-top:2.5em }`),&lt;br /&gt;
   originally reserved just for #p-personal to float in. Painting that same&lt;br /&gt;
   box with a background gradient that stays transparent for that top&lt;br /&gt;
   band and then switches to a surface colour for the tabs band creates a&lt;br /&gt;
   real two-tier read -- &amp;quot;primary chrome&amp;quot; (personal tools/search, over the&lt;br /&gt;
   page&#039;s own background) above &amp;quot;wiki authoring controls&amp;quot; (the tabs, on&lt;br /&gt;
   their own distinct strip) below -- without touching #mw-head&#039;s own&lt;br /&gt;
   position/width mechanics, which is the same fragile absolute-position&lt;br /&gt;
   system the very first pass of this project had to debug carefully to&lt;br /&gt;
   get the persistent sidebar working at all. Not worth re-risking that&lt;br /&gt;
   for a background change. */&lt;br /&gt;
#mw-head {&lt;br /&gt;
	background-image: linear-gradient(&lt;br /&gt;
		to bottom,&lt;br /&gt;
		transparent 0,&lt;br /&gt;
		transparent 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 2.35em,&lt;br /&gt;
		var( --edfm-surface-2 ) 100%&lt;br /&gt;
	);&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	background-image: none;&lt;br /&gt;
}&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
	background-color: var( --edfm-bg-deep );&lt;br /&gt;
	/* Polish pass: thinned from 2px -- at 2px this competed visually with&lt;br /&gt;
	   the masthead&#039;s own orange marker/rule directly below it; a single&lt;br /&gt;
	   thinner accent line still reads as &amp;quot;site identity colour&amp;quot; without&lt;br /&gt;
	   the repetition. */&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Personal tools (login/logout) and the search box are the &amp;quot;primary&lt;br /&gt;
   chrome&amp;quot; tier -- pulled in by the same gutter used to centre the article,&lt;br /&gt;
   so on wide screens they visually line up with the centred column&lt;br /&gt;
   instead of hugging the browser edge, and given noticeably more visual&lt;br /&gt;
   weight than the tabs below them. */&lt;br /&gt;
#p-personal {&lt;br /&gt;
	right: calc( 0.75em + var( --edfm-gutter ) );&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal ul {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55rem;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li {&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.3em 0.2em;&lt;br /&gt;
}&lt;br /&gt;
#p-personal a:hover {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clocks {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5rem;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.3em;&lt;br /&gt;
	padding: 0.3em 0.55em;&lt;br /&gt;
	background: rgba( 66, 199, 217, 0.08 );&lt;br /&gt;
	border: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	border-left: 2px solid var( --edfm-cyan );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-label {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock time {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local {&lt;br /&gt;
	background: rgba( 255, 138, 0, 0.06 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-topbar-clock-local time {&lt;br /&gt;
	color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
#right-navigation {&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
}&lt;br /&gt;
#left-navigation {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
}&lt;br /&gt;
/* Polish pass: core caps this at `width:20vw; max-width:20em`, which read&lt;br /&gt;
   as cramped next to the rest of the (now larger-scale) interface --&lt;br /&gt;
   given more room on desktop, still capped so it can&#039;t dominate the bar. */&lt;br /&gt;
.vector-search-box-inner {&lt;br /&gt;
	width: 22vw;&lt;br /&gt;
	max-width: 24em;&lt;br /&gt;
}&lt;br /&gt;
.vector-search-box-inner input,&lt;br /&gt;
#searchInput {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
	padding: 0.5em 0.7em;&lt;br /&gt;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus {&lt;br /&gt;
	border-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: 0 0 0 2px rgba( 66, 199, 217, 0.22 );&lt;br /&gt;
	outline: none;&lt;br /&gt;
}&lt;br /&gt;
#searchInput::placeholder {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Namespace tabs (Main Page / Discussion, left) and view tabs&lt;br /&gt;
   (Read / Edit / View history, right) both use Vector legacy&#039;s&lt;br /&gt;
   .vector-menu-tabs-legacy markup. Core skin CSS paints every tab `li`&lt;br /&gt;
   with a gradient fading to white and forces the selected tab to pure&lt;br /&gt;
   white -- neither is touched by recolouring the link text alone, which is&lt;br /&gt;
   why these stayed light before this stylesheet covered the `li`&lt;br /&gt;
   background too. Core also has an `a:visited` rule (higher specificity&lt;br /&gt;
   than a plain `a` rule, since a pseudo-class counts the same as a class)&lt;br /&gt;
   that reasserts a near-black &amp;quot;visited&amp;quot; colour meant for a white&lt;br /&gt;
   background; since these tabs point at pages you&#039;ve almost always&lt;br /&gt;
   already visited, without an explicit `:visited` override here the text&lt;br /&gt;
   goes dark-on-dark. This can&#039;t be caught by reading getComputedStyle() in&lt;br /&gt;
   an automated check -- browsers deliberately report the *unvisited*&lt;br /&gt;
   colour to JS for privacy reasons, so it only shows up on an actual&lt;br /&gt;
   screen; verified with real rendered screenshots, including after&lt;br /&gt;
   genuinely visiting the linked pages first.&lt;br /&gt;
&lt;br /&gt;
   These are the &amp;quot;wiki authoring controls&amp;quot; utility tier -- deliberately&lt;br /&gt;
   smaller (--edfm-fs-utility) and quieter than personal-tools/search&lt;br /&gt;
   above them, sitting on their own background strip (see #mw-head above).&lt;br /&gt;
   Selected state stays orange (it&#039;s still real navigation, just&lt;br /&gt;
   secondary); unselected rests dim so the *selected* tab is the one that&lt;br /&gt;
   reads clearly. */&lt;br /&gt;
.vector-menu-tabs-legacy li {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected {&lt;br /&gt;
	background-image: none;&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	/* Polish pass: a small underline makes the selected tab unambiguous at&lt;br /&gt;
	   a glance instead of relying on the text colour change alone. */&lt;br /&gt;
	box-shadow: inset 0 -2px 0 var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li a:hover,&lt;br /&gt;
.vector-menu-tabs-legacy li a:visited:hover {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a,&lt;br /&gt;
.vector-menu-tabs-legacy li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-tabs-legacy li.new a,&lt;br /&gt;
.vector-menu-tabs-legacy li.new a:visited {&lt;br /&gt;
	color: var( --edfm-link-new );&lt;br /&gt;
}&lt;br /&gt;
/* &amp;quot;More&amp;quot; actions dropdown (#p-cactions) sits in the same tab row; same&lt;br /&gt;
   :visited gotcha applies to its menu items. */&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	padding-left: 8px;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:hover,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-heading:focus {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content a:visited {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: var( --edfm-fs-sidebar );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a,&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li.selected a:visited {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content li:hover {&lt;br /&gt;
	background-color: var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: 52rem;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   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;
	min-height: 9.5rem;&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;
	min-height: 13.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;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=577</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.css&amp;diff=577"/>
		<updated>2026-08-10T04:05:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Style sidebar Discord invite button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
	/* Polish-pass bump from 1280px -- article read as slightly too narrow&lt;br /&gt;
	   on large desktop displays, and future reference tables (engineering,&lt;br /&gt;
	   ship stats, colonisation data) will want the room. Still centred&lt;br /&gt;
	   within the workspace via --edfm-gutter below, not stretched&lt;br /&gt;
	   edge-to-edge. */&lt;br /&gt;
	--edfm-content-max: 1320px;&lt;br /&gt;
	/* RuneScape.wiki-style integrated rail: wide enough for readable labels,&lt;br /&gt;
	   but joined directly to the page plane. Width and clear match so the&lt;br /&gt;
	   article starts beside the sidebar shadow instead of after a dead gutter. */&lt;br /&gt;
	--edfm-sidebar-width: 12.75rem;&lt;br /&gt;
	--edfm-sidebar-clear: 12.75rem;&lt;br /&gt;
	/* The gutter is whatever&#039;s left of the workspace (viewport minus the&lt;br /&gt;
	   sidebar) after the capped content width, split evenly, never&lt;br /&gt;
	   negative. On a screen too narrow to fit sidebar+content-max, this&lt;br /&gt;
	   collapses to 0 and content just fills the workspace edge-to-edge --&lt;br /&gt;
	   see &amp;quot;GLOBAL LAYOUT&amp;quot; below for the full explanation. */&lt;br /&gt;
	--edfm-gutter: max( 0px, calc( ( 100vw - var( --edfm-sidebar-clear ) - var( --edfm-content-max ) ) / 2 ) );&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: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-title );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	margin-top: 0.15em;&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.4em;&lt;br /&gt;
	margin-top: 3.25rem;&lt;br /&gt;
	margin-bottom: 1.1rem;&lt;br /&gt;
	font-size: var( --edfm-fs-h2 );&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::before {&lt;br /&gt;
	content: &#039;// &#039;;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2:has( .edfm-section-number )::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-body h2::after {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	bottom: -1px;&lt;br /&gt;
	width: 3em;&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-number {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
}&lt;br /&gt;
.edfm-section-sep {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	margin-right: 0.15em;&lt;br /&gt;
}&lt;br /&gt;
h3, h4 {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: var( --edfm-fs-h3 );&lt;br /&gt;
}&lt;br /&gt;
h3::before {&lt;br /&gt;
	content: &#039;/ &#039;;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Body text: readable sans-serif, deliberately NOT monospace -- long-form&lt;br /&gt;
   reading in monospace hurts readability, which stays a hard requirement&lt;br /&gt;
   even with a more technical visual language elsewhere. */&lt;br /&gt;
.mw-body p,&lt;br /&gt;
.mw-body li,&lt;br /&gt;
.mw-body dd {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
.mw-body p {&lt;br /&gt;
	margin: 0 0 1.1em 0;&lt;br /&gt;
	max-width: 46em; /* comfortable reading measure, not the full column */&lt;br /&gt;
}&lt;br /&gt;
.mw-body ul,&lt;br /&gt;
.mw-body ol {&lt;br /&gt;
	line-height: 1.7;&lt;br /&gt;
	margin-bottom: 1.1em;&lt;br /&gt;
}&lt;br /&gt;
/* MW 1.46 wraps headings in a `.mw-heading2`/`.mw-heading3` div, so the&lt;br /&gt;
   sibling that immediately follows is that wrapper, not the `h2`/`h3`&lt;br /&gt;
   itself -- matching both forms since a page could still have a bare&lt;br /&gt;
   heading in edge cases (e.g. content generated without the wrapper). */&lt;br /&gt;
.mw-heading2 + p, .mw-body h2 + p,&lt;br /&gt;
.mw-heading3 + p, .mw-body h3 + p,&lt;br /&gt;
.mw-heading2 + div, .mw-body h2 + div,&lt;br /&gt;
.mw-heading3 + div, .mw-body h3 + div {&lt;br /&gt;
	margin-top: 0;&lt;br /&gt;
}&lt;br /&gt;
hr {&lt;br /&gt;
	background-color: var( --edfm-border );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Quiet, discoverable section-edit controls (logged-in editors only --&lt;br /&gt;
   MediaWiki only renders these for users who can edit). Keeping the&lt;br /&gt;
   functionality/keyboard access intact while making sure they don&#039;t&lt;br /&gt;
   compete visually with the heading they&#039;re attached to: low opacity at&lt;br /&gt;
   rest, full opacity on hover/focus of the heading OR the control itself,&lt;br /&gt;
   brackets hidden (the opacity+letter-spacing treatment already reads as&lt;br /&gt;
   a distinct control without them). */&lt;br /&gt;
.mw-editsection {&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility ) !important;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.05em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	opacity: 0.45;&lt;br /&gt;
	transition: opacity 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.mw-heading:hover .mw-editsection,&lt;br /&gt;
.mw-heading:focus-within .mw-editsection,&lt;br /&gt;
.mw-editsection:hover,&lt;br /&gt;
.mw-editsection:focus-within {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover,&lt;br /&gt;
.mw-editsection a:focus-visible {&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-bracket {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection-divider {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	margin: 0 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   8. LINKS&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
a { color: var( --edfm-link ); transition: color 0.1s ease; }&lt;br /&gt;
a:visited { color: var( --edfm-link-visited ); }&lt;br /&gt;
a:hover { color: var( --edfm-link-hover ); }&lt;br /&gt;
a.new, .new a { color: var( --edfm-link-new ); }&lt;br /&gt;
a.external { color: var( --edfm-link-external ); }&lt;br /&gt;
/* Core MediaWiki ships `.mw-parser-output a.external`/`a.extiw` (and their&lt;br /&gt;
   :visited/:hover states) at higher specificity (two classes + a tag) than&lt;br /&gt;
   a plain `a.external` rule (one class + a tag), so the line above never&lt;br /&gt;
   actually wins for real article links on its own -- the same underlying&lt;br /&gt;
   &amp;quot;core selector outranks a naive theme override&amp;quot; gotcha as the tab&lt;br /&gt;
   :visited fix further down. Matching the same selector shape here (this&lt;br /&gt;
   stylesheet loads after core skin styles) is what actually applies our&lt;br /&gt;
   colour to external links in article content. */&lt;br /&gt;
.mw-parser-output a.external,&lt;br /&gt;
.mw-parser-output a.extiw {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:visited,&lt;br /&gt;
.mw-parser-output a.extiw:visited {&lt;br /&gt;
	color: var( --edfm-link-external-visited );&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output a.external:hover,&lt;br /&gt;
.mw-parser-output a.extiw:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a {&lt;br /&gt;
	color: var( --edfm-link );&lt;br /&gt;
}&lt;br /&gt;
.mw-footer a:hover {&lt;br /&gt;
	color: var( --edfm-link-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. GLOBAL LAYOUT -- centred workspace&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* THE fix for &amp;quot;enormous unused region on the right side of wide displays&amp;quot;.&lt;br /&gt;
   Vector legacy&#039;s core layout (skins.vector.styles.legacy/layouts/&lt;br /&gt;
   screen.less) gives `.mw-body` (#content) a left margin to clear the&lt;br /&gt;
   fixed-width sidebar and otherwise lets it run edge-to-edge to the&lt;br /&gt;
   browser&#039;s right side with no max-width at all -- the first redesign&lt;br /&gt;
   pass added a max-width but left the column pinned to the sidebar&#039;s left&lt;br /&gt;
   edge, which is *why* it still read as &amp;quot;a column stuck on the left with&lt;br /&gt;
   dead space on the right&amp;quot; rather than a composed layout.&lt;br /&gt;
&lt;br /&gt;
   Fix: instead of a fixed `margin-left: 11em`, compute how much space is&lt;br /&gt;
   left over in the workspace (viewport minus the sidebar) once the&lt;br /&gt;
   content has its max-width, and split that leftover evenly between the&lt;br /&gt;
   left and right margins (via the --edfm-gutter token above) -- so the&lt;br /&gt;
   article is centred *within the workspace to the right of the sidebar*,&lt;br /&gt;
   not centred in the full viewport (which would ignore the sidebar and&lt;br /&gt;
   look off-centre) and not pinned to its left edge either. On a screen&lt;br /&gt;
   too narrow for sidebar + max-width content, --edfm-gutter naturally&lt;br /&gt;
   evaluates to 0 and this degrades to the old &amp;quot;fill the workspace&amp;quot;&lt;br /&gt;
   behaviour -- no separate narrow-screen override needed.&lt;br /&gt;
&lt;br /&gt;
   The header/tab bar&#039;s own float/absolute-position box (#mw-head) is left&lt;br /&gt;
   at its native full width deliberately -- rewriting *that* mechanism is&lt;br /&gt;
   a different, much higher-risk change (it took several rounds to get&lt;br /&gt;
   right originally) -- but its *contents* (search box, personal tools,&lt;br /&gt;
   namespace/view tabs) get their own right/left offsets pulled in by the&lt;br /&gt;
   same --edfm-gutter below, so they still visually line up with the&lt;br /&gt;
   centred column beneath them instead of hugging the browser edge. */&lt;br /&gt;
.mw-body,&lt;br /&gt;
#mw-data-after-content,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	max-width: var( --edfm-content-max );&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
/* Tables, code blocks, and preformatted content are still allowed to be&lt;br /&gt;
   wider than a comfortable reading measure (technical data often needs&lt;br /&gt;
   it) -- they scroll horizontally inside the capped column instead of&lt;br /&gt;
   being force-shrunk or breaking the layout. Ordinary images/galleries&lt;br /&gt;
   already respect the column via max-width:100% below. */&lt;br /&gt;
.mw-body table,&lt;br /&gt;
.mw-body pre,&lt;br /&gt;
.mw-body .mw-code {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable,&lt;br /&gt;
.mw-body table.mw-datatable {&lt;br /&gt;
	/* Keep real table layout so header cells and body cells share one column grid.&lt;br /&gt;
	   The earlier display:block + tbody display:table overflow hack made sortable&lt;br /&gt;
	   headers size independently from body columns, which visibly misaligned the&lt;br /&gt;
	   Engineer directory after portrait chips were added. */&lt;br /&gt;
	display: table;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	table-layout: auto;&lt;br /&gt;
}&lt;br /&gt;
.mw-body table.wikitable th,&lt;br /&gt;
.mw-body table.wikitable td,&lt;br /&gt;
.mw-body table.mw-datatable th,&lt;br /&gt;
.mw-body table.mw-datatable td {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
.mw-body img {&lt;br /&gt;
	max-width: 100%;&lt;br /&gt;
	height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   4. ARTICLE MASTHEAD (eyebrow / title / deck)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Eyebrow line is authored as ordinary wikitext (see Template:Article&lt;br /&gt;
   header) and, purely as a placement detail, a small script&lt;br /&gt;
   (MediaWiki:Common.js) moves it directly above #firstHeading on load --&lt;br /&gt;
   see the comment there for why that needs JS rather than CSS/a template&lt;br /&gt;
   (the title is rendered by the skin before the article body in the DOM,&lt;br /&gt;
   so nothing living inside the article body can appear earlier than it&lt;br /&gt;
   without either moving it in the DOM or abandoning the real semantic H1).&lt;br /&gt;
   If JS is unavailable the eyebrow still renders, just directly under the&lt;br /&gt;
   title instead of above it.&lt;br /&gt;
&lt;br /&gt;
   The eyebrow/title/deck aren&#039;t wrapped in one literal bounding box (they&lt;br /&gt;
   live at two different DOM depths -- eyebrow is a sibling of #firstHeading,&lt;br /&gt;
   deck is inside the article body further down -- wrapping them in one&lt;br /&gt;
   real container would need heavier JS than is justified here), so the&lt;br /&gt;
   &amp;quot;designed masthead&amp;quot; read comes from a matching top rule above the&lt;br /&gt;
   eyebrow and bottom rule below the deck, a small angular marker, and the&lt;br /&gt;
   larger title/subtitle type scale, rather than one drawn box. */&lt;br /&gt;
.edfm-eyebrow {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.55em;&lt;br /&gt;
	margin: 0 0 0.5em 0;&lt;br /&gt;
	padding-top: 1.1em;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&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-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-eyebrow::before {&lt;br /&gt;
	content: &#039;&#039;;&lt;br /&gt;
	width: 8px;&lt;br /&gt;
	height: 8px;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	clip-path: polygon( 0 0, 100% 0, 100% 65%, 65% 100%, 0 100% );&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-size: 1.1rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	max-width: 42em;&lt;br /&gt;
	margin: 0.5em 0 1.7em 0;&lt;br /&gt;
	padding-bottom: 1.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   1. SIDEBAR&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
	background: transparent;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: var( --edfm-sidebar-width );&lt;br /&gt;
	padding: 0 0.65rem 1.35rem 0.65rem;&lt;br /&gt;
	border-right: 0;&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
	z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
/* Logo anchors the sidebar visually. Do not draw a divider on or near&lt;br /&gt;
   #p-logo: Vector legacy fixes the logo box at 155px high and the EDFM hex&lt;br /&gt;
   mark reaches that edge, so any horizontal rule in this box cuts through&lt;br /&gt;
   the lower point of the logo. Navigation spacing below provides the break. */&lt;br /&gt;
#p-logo {&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: auto;&lt;br /&gt;
	margin: 0 -0.65rem 1.25rem -0.65rem;&lt;br /&gt;
	padding: 0.95rem 0.55rem 1.05rem 0.55rem;&lt;br /&gt;
	border-bottom: 0 !important;&lt;br /&gt;
	background: radial-gradient( circle at 50% 25%, rgba( 255, 138, 0, 0.08 ), transparent 58% );&lt;br /&gt;
}&lt;br /&gt;
/* Each nav group gets real breathing room from the one before it instead&lt;br /&gt;
   of being packed together like a stock wiki sidebar. */&lt;br /&gt;
&lt;br /&gt;
/* Sidebar Discord invite CTA: injected by MediaWiki:Common.js directly below&lt;br /&gt;
   the logo and above the first generated Vector portlet, matching the compact&lt;br /&gt;
   community-button placement shown in the reference screenshot. */&lt;br /&gt;
.edfm-discord-cta {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	gap: 0.42rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: calc( 100% - 0.7rem );&lt;br /&gt;
	min-height: 2rem;&lt;br /&gt;
	margin: -0.35rem 0.35rem 1.1rem 0.35rem;&lt;br /&gt;
	padding: 0.46rem 0.68rem;&lt;br /&gt;
	border-radius: 4px;&lt;br /&gt;
	background: #5865f2;&lt;br /&gt;
	color: #fff !important;&lt;br /&gt;
	font-size: 0.82rem;&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: 1.12rem;&lt;br /&gt;
	height: 1.12rem;&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;
/* ==========================================================================&lt;br /&gt;
   CONTENT / ARTICLE SURFACE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-body,&lt;br /&gt;
.parsoid-body {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-sans );&lt;br /&gt;
}&lt;br /&gt;
.mw-body {&lt;br /&gt;
	border-right: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
#content {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site notice chrome. The global disclaimer was moved to its dedicated&lt;br /&gt;
   legal/disclaimer page, so an empty #siteNotice must not leave behind a&lt;br /&gt;
   phantom divider at the top of the article surface. */&lt;br /&gt;
#siteNotice:empty {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) {&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-style: normal;&lt;br /&gt;
	padding-bottom: 0.7em;&lt;br /&gt;
	margin-bottom: 1.4rem;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) em, #siteNotice:not( :empty ) i {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
#siteNotice:not( :empty ) a {&lt;br /&gt;
	color: var( --edfm-link-external );&lt;br /&gt;
}&lt;br /&gt;
#siteNotice a:hover {&lt;br /&gt;
	color: var( --edfm-link-external-hover );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE DASHBOARD&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-hero {&lt;br /&gt;
	margin: 0.9rem 0 1.6rem;&lt;br /&gt;
	padding: 1.35rem 1.55rem;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.16 ), transparent 34% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.14 ), transparent 42% ),&lt;br /&gt;
		var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 4px solid var( --edfm-cyan );&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-kicker,&lt;br /&gt;
.edfm-home-card-kicker {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-title {&lt;br /&gt;
	margin-top: 0.25rem;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: clamp( 1.55rem, 1.1rem + 1.5vw, 2.2rem );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.15;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-hero-text {&lt;br /&gt;
	max-width: 52rem;&lt;br /&gt;
	margin-top: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin: 1.2rem 0 2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-four {&lt;br /&gt;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-topics {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-grid-two {&lt;br /&gt;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-left: 3px solid var( --edfm-cyan );&lt;br /&gt;
	padding: 1rem 1.1rem;&lt;br /&gt;
	box-shadow: 0 12px 24px rgba( 0, 0, 0, 0.2 );&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-primary {&lt;br /&gt;
	border-left-color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-warning {&lt;br /&gt;
	border-left-color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title,&lt;br /&gt;
.edfm-home-card-title a {&lt;br /&gt;
	margin-top: 0.35rem;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-card-text,&lt;br /&gt;
.edfm-home-link-list {&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
.edfm-home-link-list a {&lt;br /&gt;
	font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 1100px ) {&lt;br /&gt;
	.edfm-home-grid-four {&lt;br /&gt;
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 760px ) {&lt;br /&gt;
	.edfm-home-grid-four,&lt;br /&gt;
	.edfm-home-grid-topics,&lt;br /&gt;
	.edfm-home-grid-two {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   HOME PAGE NEWS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-home-news {&lt;br /&gt;
	margin: 1.8rem 0 2.2rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-feature-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );&lt;br /&gt;
	gap: 1rem;&lt;br /&gt;
	margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card,&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	box-shadow: 0 14px 26px rgba( 0, 0, 0, 0.22 );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	transition: transform 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card:hover {&lt;br /&gt;
	transform: translateY( -2px );&lt;br /&gt;
	border-color: rgba( 255, 138, 0, 0.48 );&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-art {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-end;&lt;br /&gt;
	min-height: 7rem;&lt;br /&gt;
	padding: 0.8rem 1rem;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.28 ), transparent 42% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 66, 199, 217, 0.2 ), transparent 48% ),&lt;br /&gt;
		linear-gradient( 180deg, var( --edfm-surface-4 ), var( --edfm-surface-1 ) );&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	color: rgba( 237, 240, 242, 0.72 );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.8rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.16em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-primary .edfm-news-card-art {&lt;br /&gt;
	background:&lt;br /&gt;
		linear-gradient( 135deg, rgba( 255, 138, 0, 0.38 ), transparent 46% ),&lt;br /&gt;
		linear-gradient( 315deg, rgba( 79, 159, 232, 0.26 ), transparent 52% ),&lt;br /&gt;
		var( --edfm-surface-4 );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-card-body {&lt;br /&gt;
	padding: 1rem 1.15rem 1.15rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-meta {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.35rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title,&lt;br /&gt;
.edfm-news-title a {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.1rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-title a:hover {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-summary {&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	line-height: 1.55;&lt;br /&gt;
	margin-top: 0.65rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list {&lt;br /&gt;
	padding: 1.1rem 1.25rem 1.2rem;&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list-heading {&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list ul {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-list li {&lt;br /&gt;
	margin-bottom: 0.55rem;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
}&lt;br /&gt;
.edfm-news-more {&lt;br /&gt;
	margin-top: 0.9rem;&lt;br /&gt;
	padding-top: 0.85rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 800;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 900px ) {&lt;br /&gt;
	.edfm-news-feature-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   10. JUMP NAVIGATION (table of contents)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A compact navigation strip/tile-grid rather than a traditional TOC box&lt;br /&gt;
   of small text links -- real MediaWiki anchors/markup untouched, this is&lt;br /&gt;
   all presentation. &amp;quot;Contents&amp;quot; is kept in the DOM for screen readers/&lt;br /&gt;
   no-JS/no-CSS fallback (more standard wording there anyway) and visually&lt;br /&gt;
   replaced with &amp;quot;Jump to&amp;quot; via ::before on the wrapper, with the real&lt;br /&gt;
   heading text hidden via font-size rather than display:none so it&lt;br /&gt;
   remains in the accessibility tree. */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: none;&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	margin: 1.8rem 0;&lt;br /&gt;
}&lt;br /&gt;
.toctitle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.toctitle::before {&lt;br /&gt;
	content: &#039;Jump to&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.12em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
}&lt;br /&gt;
/* Core ships `.toc h2 { font-size: 100%; ... }` (mediawiki.skinning/toc/&lt;br /&gt;
   screen.less) at the exact same specificity (one class + one tag) as a&lt;br /&gt;
   plain `.toctitle h2` rule -- same &amp;quot;tie that doesn&#039;t resolve the way&lt;br /&gt;
   naive source order would suggest&amp;quot; gotcha documented elsewhere in this&lt;br /&gt;
   file. #toc&#039;s own ID makes this one unambiguous instead of relying on&lt;br /&gt;
   cascade order. */&lt;br /&gt;
#toc .toctitle h2,&lt;br /&gt;
.toc .toctitle h2 {&lt;br /&gt;
	font-size: 0 !important;&lt;br /&gt;
	line-height: 0;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	border: none;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2::before,&lt;br /&gt;
.toctitle h2::after {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.toctogglelabel::before {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
}&lt;br /&gt;
/* Desktop: a real grid of clickable tiles (3 columns suits this site&#039;s&lt;br /&gt;
   typical 5-8 top-level sections well: commonly 2-3 rows) instead of one&lt;br /&gt;
   long line of small text. Each tile has its own surface, a visible&lt;br /&gt;
   boundary via the accent rail (not a full border -- see &amp;quot;stop using a&lt;br /&gt;
   border around everything&amp;quot;), and an obvious hover state. */&lt;br /&gt;
.toc &amp;gt; ul {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 4, 1fr );&lt;br /&gt;
	gap: 0.45rem;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.toc li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08 density pass: reverted to side-by-side number/label (from the&lt;br /&gt;
   earlier &amp;quot;stacked number-above-label&amp;quot; polish pass) specifically to cut&lt;br /&gt;
   per-tile height -- with 12 sections on articles like The Dweller, the&lt;br /&gt;
   stacked layout meant the jump nav alone filled most of the first&lt;br /&gt;
   viewport. Row layout plus tighter padding/font-size gets noticeably&lt;br /&gt;
   more sections above the fold without dropping the numbering or shrinking&lt;br /&gt;
   tap targets below a comfortable size -- see the dedicated mobile padding&lt;br /&gt;
   bump further down for keeping touch targets safe on small screens&lt;br /&gt;
   specifically. Whole tile stays one real &amp;lt;a&amp;gt;, so it&#039;s still a single&lt;br /&gt;
   click/focus target and keyboard tab stop either way. */&lt;br /&gt;
.toc a {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 0.5em;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 0.5em 0.75em 0.5em 0.7em;&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	/* Left accent rail: matches the orange section numbers and gives each&lt;br /&gt;
	   jump tile a stronger EDFM navigation affordance without boxing the&lt;br /&gt;
	   entire card. */&lt;br /&gt;
	border-left: 4px solid var( --edfm-orange );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 255, 162, 26, 0.35 );&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;&lt;br /&gt;
}&lt;br /&gt;
.toc a:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 );&lt;br /&gt;
	border-left-color: var( --edfm-cyan );&lt;br /&gt;
	box-shadow: inset 1px 0 0 rgba( 66, 199, 217, 0.45 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	transform: translateY( -1px );&lt;br /&gt;
}&lt;br /&gt;
/* Nested sub-levels (rare on this site so far) drop back to a plain&lt;br /&gt;
   indented block list inside their parent tile&#039;s grid cell rather than&lt;br /&gt;
   trying to stay gridded themselves. */&lt;br /&gt;
.toc ul ul {&lt;br /&gt;
	grid-column: unset;&lt;br /&gt;
	list-style: none;&lt;br /&gt;
	margin: 0.3em 0 0 1.2em;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul a {&lt;br /&gt;
	flex-direction: row;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border-left-width: 1px;&lt;br /&gt;
	padding: 0.3em 0.6em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .tocnumber {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.toc ul ul .toctext {&lt;br /&gt;
	font-size: 0.85em;&lt;br /&gt;
}&lt;br /&gt;
.tocnumber {&lt;br /&gt;
	color: var( --edfm-orange );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: 1.05rem;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
.toctext {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
/* 2026-08-08: rebalanced for the 4-column desktop default above -- was&lt;br /&gt;
   &amp;gt;1150px = 3 cols -&amp;gt; &amp;lt;=1150px = 2 cols -&amp;gt; &amp;lt;=560px = 1 col. A page with&lt;br /&gt;
   12 sections (e.g. The Dweller) now gets 3 rows at desktop width instead&lt;br /&gt;
   of 4, so a new &amp;lt;=860px step was added rather than dropping straight&lt;br /&gt;
   from 3 to 2 columns at 1150px, which left the same &amp;quot;Star systems,&lt;br /&gt;
   navigation and exploration&amp;quot;-style long labels cramped in the 1024px&lt;br /&gt;
   range this breakpoint set was originally tuned for. Order stays widest&lt;br /&gt;
   condition first, narrowest last, so cascade order matches the max-width&lt;br /&gt;
   overlap correctly at every width. */&lt;br /&gt;
@media ( max-width: 1150px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 3, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 860px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: repeat( 2, 1fr );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 560px ) {&lt;br /&gt;
	.toc &amp;gt; ul {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* Single-column tiles are already full-width here, so there&#039;s no&lt;br /&gt;
	   density pressure left -- restore closer to the pre-2026-08-08&lt;br /&gt;
	   padding instead of the tighter desktop value, keeping tap targets&lt;br /&gt;
	   comfortable rather than compacting mobile just because desktop&lt;br /&gt;
	   compacted. */&lt;br /&gt;
	.toc a {&lt;br /&gt;
		padding: 0.7em 0.95em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   6. PANELS / CALLOUTS, and 11. ARTICLE METADATA / STATUS MODULE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Deliberately NOT defined here. .edfm-box / .edfm-panel* / .edfm-status* /&lt;br /&gt;
   .edfm-inline-flag / .edfm-related* are used exclusively by the&lt;br /&gt;
   editorial templates (see Template:Article status, Template:Draft&lt;br /&gt;
   warning, Template:Related articles, etc.), which already load&lt;br /&gt;
   Template:EDFM style/styles.css themselves via &amp;lt;templatestyles&amp;gt;.&lt;br /&gt;
   Defining the same class names in both this file and that one would&lt;br /&gt;
   leave their relative precedence dependent on unclear/unstable ordering&lt;br /&gt;
   between a ResourceLoader &amp;quot;site&amp;quot; stylesheet and a TemplateStyles-injected&lt;br /&gt;
   &amp;lt;style&amp;gt; tag -- rather than rely on that, there is exactly one definition&lt;br /&gt;
   of each, living in Template:EDFM style/styles.css. That file freely uses&lt;br /&gt;
   the --edfm-* custom properties defined above; custom properties resolve&lt;br /&gt;
   through the DOM regardless of which stylesheet declared vs references&lt;br /&gt;
   them, so this split costs nothing. */&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   7. TABLES (wikitables, and Special: pages&#039; tables)&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
table.wikitable,&lt;br /&gt;
table.mw-datatable {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-size: var( --edfm-fs-body );&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
	background-color: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
table.wikitable &amp;gt; tr &amp;gt; td,&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.6em 0.8em;&lt;br /&gt;
}&lt;br /&gt;
/* Subtle alternating row treatment -- helps scanning wide/dense reference&lt;br /&gt;
   tables without turning them into cards. */&lt;br /&gt;
table.wikitable &amp;gt; tbody &amp;gt; tr:nth-child( even ),&lt;br /&gt;
table.wikitable &amp;gt; * &amp;gt; tr:nth-child( even ) {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   15. FOOTER&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* A real branded footer: a small wordmark line (pure CSS generated&lt;br /&gt;
   content -- decorative branding only, redundant with the sidebar logo&lt;br /&gt;
   already visible, so nothing load-bearing depends on it being&lt;br /&gt;
   selectable), a top rule with more separation from the article above it,&lt;br /&gt;
   and MediaWiki&#039;s real info/places/icon links laid out on a clean grid&lt;br /&gt;
   with the badges aligned as a group rather than floating alone. */&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	margin-left: var( --edfm-sidebar-clear );&lt;br /&gt;
	margin-right: var( --edfm-gutter );&lt;br /&gt;
	margin-top: 2.5rem;&lt;br /&gt;
	padding-top: 1.6rem;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border );&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: 1fr auto;&lt;br /&gt;
	grid-template-areas: &amp;quot;brand brand&amp;quot; &amp;quot;info icons&amp;quot; &amp;quot;places icons&amp;quot;;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	column-gap: 2em;&lt;br /&gt;
	row-gap: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer::before {&lt;br /&gt;
	grid-area: brand;&lt;br /&gt;
	content: &#039;EDFM // Elite Dangerous Field Manual&#039;;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: 0.85rem;&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	color: var( --edfm-text-muted );&lt;br /&gt;
	margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
#footer-info,&lt;br /&gt;
#footer-info li {&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	border-color: var( --edfm-border-soft );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
}&lt;br /&gt;
#footer-info {&lt;br /&gt;
	grid-area: info;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
#footer-places {&lt;br /&gt;
	grid-area: places;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
/* Same &amp;quot;small uppercase label&amp;quot; treatment used for tags/meta text&lt;br /&gt;
   elsewhere, so these read as deliberate EDFM navigation rather than&lt;br /&gt;
   default MediaWiki footer links. */&lt;br /&gt;
#footer-places li {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	margin-right: 1.4em;&lt;br /&gt;
}&lt;br /&gt;
#footer-places a {&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	letter-spacing: 0.03em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	font-size: 0.78rem;&lt;br /&gt;
}&lt;br /&gt;
/* A left rule ties the badges to the rest of the footer instead of&lt;br /&gt;
   letting them read as detached/floating in their own space. */&lt;br /&gt;
#footer-icons {&lt;br /&gt;
	grid-area: icons;&lt;br /&gt;
	align-self: center;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	gap: 0.75em;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding-left: 1.6em;&lt;br /&gt;
	border-left: 1px solid var( --edfm-border-soft );&lt;br /&gt;
}&lt;br /&gt;
#footer-icons img {&lt;br /&gt;
	background: var( --edfm-text );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
		grid-template-areas: &amp;quot;brand&amp;quot; &amp;quot;info&amp;quot; &amp;quot;places&amp;quot; &amp;quot;icons&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	#footer-icons {&lt;br /&gt;
		margin-top: 0.7em;&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
		border-left: none;&lt;br /&gt;
		border-top: 1px solid var( --edfm-border-soft );&lt;br /&gt;
		padding-top: 0.7em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   MISC MediaWiki UI chrome that ships with light backgrounds by default&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.catlinks {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
	border: none !important;&lt;br /&gt;
	border-top: 1px solid var( --edfm-border-soft ) !important;&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	padding: 0.9em 0 0 0 !important;&lt;br /&gt;
	margin-top: 1.8rem !important;&lt;br /&gt;
}&lt;br /&gt;
div.thumbinner {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.thumbimage {&lt;br /&gt;
	background-color: var( --edfm-surface-1 );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Code / preformatted text (syntaxhighlight uses its own Pygments theme,&lt;br /&gt;
   set via $wgPygmentsStyle in LocalSettings.php; this covers plain&lt;br /&gt;
   &amp;lt;pre&amp;gt;/&amp;lt;code&amp;gt; that isn&#039;t Pygments-highlighted). */&lt;br /&gt;
pre, code, .mw-code {&lt;br /&gt;
	background-color: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	border-color: var( --edfm-border );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   GENERIC INFOBOX -- see Template:Infobox&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.edfm-infobox {&lt;br /&gt;
	float: right;&lt;br /&gt;
	clear: right;&lt;br /&gt;
	width: 310px;&lt;br /&gt;
	margin: 0 0 1.2em 1.2em;&lt;br /&gt;
	border: 1px solid var( --edfm-border );&lt;br /&gt;
	border-top: 2px solid var( --edfm-orange );&lt;br /&gt;
	background: var( --edfm-surface-2 );&lt;br /&gt;
	color: var( --edfm-text );&lt;br /&gt;
	font-size: 0.92rem;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-title {&lt;br /&gt;
	background: var( --edfm-orange );&lt;br /&gt;
	color: var( --edfm-bg-deep );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	letter-spacing: 0.04em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em 0.6em;&lt;br /&gt;
	clip-path: polygon( 0 0, calc( 100% - 14px ) 0, 100% 14px, 100% 100%, 0 100% );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.6em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-image-placeholder {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	height: 160px;&lt;br /&gt;
	border: 1px dashed var( --edfm-border );&lt;br /&gt;
	background: var( --edfm-surface-1 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	letter-spacing: 0.06em;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* Optional section label (Template:Infobox&#039;s |groupN=) splitting a long&lt;br /&gt;
   infobox into scannable groups, e.g. Engineer infoboxes into &amp;quot;ENGINEER&amp;quot;&lt;br /&gt;
   and &amp;quot;ACCESS&amp;quot; (2026-08-08, part of the Engineer article layout pass). A&lt;br /&gt;
   shaded band with a bottom rule rather than a full boxed sub-header --&lt;br /&gt;
   consistent with .edfm-infobox-row&#039;s own bottom-rule-only separator, not&lt;br /&gt;
   a new visual language. */&lt;br /&gt;
.edfm-infobox-group {&lt;br /&gt;
	background: var( --edfm-surface-3 );&lt;br /&gt;
	color: var( --edfm-text-dim );&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-size: var( --edfm-fs-utility );&lt;br /&gt;
	letter-spacing: 0.08em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
	padding: 0.35em 0.7em;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	border-bottom: 1px solid var( --edfm-border-soft );&lt;br /&gt;
	padding: 0.45em 0.7em;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-row:last-child {&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-label {&lt;br /&gt;
	font-weight: 700;&lt;br /&gt;
	font-family: var( --edfm-mono );&lt;br /&gt;
	font-size: var( --edfm-fs-meta );&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	flex-shrink: 0;&lt;br /&gt;
	color: var( --edfm-cyan );&lt;br /&gt;
}&lt;br /&gt;
.edfm-infobox-value {&lt;br /&gt;
	width: 60%;&lt;br /&gt;
}&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.edfm-infobox {&lt;br /&gt;
		float: none;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		margin: 1em 0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   14. MOBILE&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
/* Vector legacy has NO built-in responsive breakpoint at all (unlike&lt;br /&gt;
   Vector 2022) -- its entire header region (#mw-head, tabs, search,&lt;br /&gt;
   personal tools/login) is built with absolute positioning and floats&lt;br /&gt;
   that all assume a fixed-width sidebar reserving 10-11em on the left,&lt;br /&gt;
   AND the page&#039;s actual DOM order is content-then-navigation-then-footer&lt;br /&gt;
   (the absolute positioning was doing double duty: both moving the header&lt;br /&gt;
   visually to the top AND compensating for that DOM order). Simply&lt;br /&gt;
   removing the positioning stacks things in DOM order, which reads oddly&lt;br /&gt;
   on a phone (article text, then the nav/sidebar, then the footer).&lt;br /&gt;
   Confirmed the actual DOM structure directly (not guessed): &amp;lt;body&amp;gt;&#039;s&lt;br /&gt;
   real children are #mw-page-base, #mw-head-base, #content,&lt;br /&gt;
   #mw-navigation (which itself contains #mw-head then #mw-panel, already&lt;br /&gt;
   in the right relative order), #footer. Since all four major regions are&lt;br /&gt;
   direct children of &amp;lt;body&amp;gt;, flexbox `order` on &amp;lt;body&amp;gt; can reorder them&lt;br /&gt;
   properly without needing to touch the DOM itself.&lt;br /&gt;
   Result: header/search/tabs, then sidebar nav, then content, then&lt;br /&gt;
   footer -- a plain stacked mobile layout, not a collapsible hamburger&lt;br /&gt;
   menu, but a correct and readable order. */&lt;br /&gt;
@media ( max-width: 800px ) {&lt;br /&gt;
	body::before {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
	body {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
	/* #mw-head-base ships with `margin-top: -5em` in Vector legacy&#039;s own&lt;br /&gt;
	   CSS -- a trick to sit it behind the absolutely-positioned header.&lt;br /&gt;
	   Now that the header is a normal flex sibling, that negative margin&lt;br /&gt;
	   drags everything after it upward. Neutralize both decorative&lt;br /&gt;
	   strips. */&lt;br /&gt;
	#mw-page-base,&lt;br /&gt;
	#mw-head-base {&lt;br /&gt;
		order: 0;&lt;br /&gt;
		height: 0;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		min-height: 0;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-navigation {&lt;br /&gt;
		order: 1;&lt;br /&gt;
	}&lt;br /&gt;
	#content {&lt;br /&gt;
		order: 2;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		order: 3;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	#mw-head {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		background-image: none;&lt;br /&gt;
		background-color: var( --edfm-surface-2 );&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation,&lt;br /&gt;
	#right-navigation {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0 !important;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		clear: both;&lt;br /&gt;
	}&lt;br /&gt;
	#left-navigation {&lt;br /&gt;
		margin-top: 0 !important;&lt;br /&gt;
	}&lt;br /&gt;
	/* Core Vector legacy floats each tab/dropdown portlet&lt;br /&gt;
	   (.vector-menu-tabs-legacy for Page/Discussion and Read/View&lt;br /&gt;
	   source/View history, .vector-menu-dropdown for the More menu) AND&lt;br /&gt;
	   floats every &amp;lt;li&amp;gt; inside their &amp;lt;ul&amp;gt;, with no wrapping at all -- at&lt;br /&gt;
	   narrow widths the labels just overflow and overlap each other&lt;br /&gt;
	   (confirmed with a real screenshot: &amp;quot;View source&amp;quot; and &amp;quot;More&amp;quot;&lt;br /&gt;
	   overlapped instead of wrapping to a new line). Switching the&lt;br /&gt;
	   portlets to inline-block and their tab lists to flex-wrap lets them&lt;br /&gt;
	   reflow onto as many rows as needed instead. */&lt;br /&gt;
	#left-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-tabs-legacy,&lt;br /&gt;
	#right-navigation .vector-menu-dropdown {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: inline-block;&lt;br /&gt;
		vertical-align: top;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy ul {&lt;br /&gt;
		float: none;&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-wrap: wrap;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-menu-tabs-legacy li {&lt;br /&gt;
		float: none;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal {&lt;br /&gt;
		position: static;&lt;br /&gt;
		text-align: right;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		margin: 0;&lt;br /&gt;
		right: auto !important;&lt;br /&gt;
		top: auto;&lt;br /&gt;
	}&lt;br /&gt;
	#p-personal ul {&lt;br /&gt;
		padding-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box {&lt;br /&gt;
		float: none;&lt;br /&gt;
		margin: 0.5em 1em;&lt;br /&gt;
		display: block;&lt;br /&gt;
	}&lt;br /&gt;
	.vector-search-box-inner {&lt;br /&gt;
		width: auto;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	#mw-panel {&lt;br /&gt;
		position: static;&lt;br /&gt;
		width: auto;&lt;br /&gt;
		padding: 0.5em 1em;&lt;br /&gt;
		float: none;&lt;br /&gt;
		background: var( --edfm-bg-deep );&lt;br /&gt;
		border-top: 1px solid var( --edfm-border );&lt;br /&gt;
		border-bottom: 1px solid var( --edfm-border );&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body,&lt;br /&gt;
	#mw-data-after-content,&lt;br /&gt;
	.mw-footer {&lt;br /&gt;
		margin-left: 0 !important;&lt;br /&gt;
		margin-right: 0 !important;&lt;br /&gt;
		max-width: none;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body {&lt;br /&gt;
		margin-top: 0;&lt;br /&gt;
		border-width: 0;&lt;br /&gt;
		padding: 1em;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-status-details {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
	/* .toc &amp;gt; ul column count is NOT overridden here -- the dedicated&lt;br /&gt;
	   1150px/560px breakpoints above already cover every width down to&lt;br /&gt;
	   the smallest phones; duplicating a rule here previously fought&lt;br /&gt;
	   those (same specificity, this position in the cascade would have&lt;br /&gt;
	   won and wrongly forced 1 column as low as 561px). */&lt;br /&gt;
	#firstHeading {&lt;br /&gt;
		font-size: 1.6rem;&lt;br /&gt;
	}&lt;br /&gt;
	.mw-body h2 {&lt;br /&gt;
		margin-top: 2.25rem;&lt;br /&gt;
	}&lt;br /&gt;
	.edfm-eyebrow {&lt;br /&gt;
		padding-top: 0.9em;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   16. OOUI DIALOGS -- VisualEditor&#039;s save dialog, and any other OOUI&lt;br /&gt;
   dialog (delete/move/protect confirmations, special-page dialogs).&lt;br /&gt;
   These render via OOUI&#039;s own bundled WikimediaUI theme stylesheet,&lt;br /&gt;
   entirely outside the .edfm-* component system this file otherwise&lt;br /&gt;
   covers, so without this they show up starkly white against the rest of&lt;br /&gt;
   the dark-themed site regardless of any variable/token used elsewhere in&lt;br /&gt;
   this file. !important is justified the same way as the h1-h6 fix above:&lt;br /&gt;
   OOUI&#039;s own stylesheet loads with equal-or-higher effective specificity,&lt;br /&gt;
   and this is a correctness/contrast fix, not decoration.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-window-frame {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog {&lt;br /&gt;
	background: rgba( 7, 9, 11, 0.75 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-navigation,&lt;br /&gt;
.oo-ui-window-head,&lt;br /&gt;
.oo-ui-window-foot {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-processDialog-title,&lt;br /&gt;
.oo-ui-labelElement-label,&lt;br /&gt;
.oo-ui-fieldLayout-header,&lt;br /&gt;
.oo-ui-fieldLayout .oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-inputWidget-input {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.ve-ui-mwSaveDialog-options,&lt;br /&gt;
.oo-ui-panelLayout,&lt;br /&gt;
.oo-ui-window-body {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-popupWidget-popup {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-buttonElement:not( .oo-ui-flaggedElement-primary ) &amp;gt; .oo-ui-buttonElement-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   17. OOUI TOOLBAR -- VisualEditor&#039;s persistent editing toolbar and its&lt;br /&gt;
   dropdown menus (Cite, Insert, paragraph style, etc.), and the equivalent&lt;br /&gt;
   toolbar/popups used when editing a single section. Same root cause as&lt;br /&gt;
   16. OOUI DIALOGS above (OOUI&#039;s own bundled theme, not touched by&lt;br /&gt;
   anything else in this file), found separately because it&#039;s a different&lt;br /&gt;
   set of OOUI classes (toolbar chrome, not dialog chrome). Icons are not&lt;br /&gt;
   overridden here and don&#039;t need to be -- they&#039;re currentColor-based, so&lt;br /&gt;
   they pick up the text colour set below automatically.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-toolbar-bar,&lt;br /&gt;
.oo-ui-toolGroup-tools,&lt;br /&gt;
.oo-ui-popupToolGroup-tools {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-tool-title,&lt;br /&gt;
.oo-ui-tool-link,&lt;br /&gt;
.oo-ui-toolGroup-tools .oo-ui-optionWidget,&lt;br /&gt;
.oo-ui-menuOptionWidget,&lt;br /&gt;
.oo-ui-labelElement-label {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-optionWidget.oo-ui-optionWidget-selected,&lt;br /&gt;
.oo-ui-optionWidget:hover,&lt;br /&gt;
.oo-ui-tool:hover .oo-ui-tool-link {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   18. OOUI GENERIC MENUS -- .oo-ui-menuSelectWidget is OOUI&#039;s general&lt;br /&gt;
   dropdown/autocomplete menu class (paragraph-style picker, citation-type&lt;br /&gt;
   picker, link/media search suggestions, etc.) -- a different class from&lt;br /&gt;
   the toolbar-specific popups in 17. above, confirmed separately via&lt;br /&gt;
   computed-style inspection to default to the same white OOUI theme&lt;br /&gt;
   background.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-menuSelectWidget {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,&lt;br /&gt;
.oo-ui-menuOptionWidget:hover {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   19. OOUI ICONS -- the toolbar/menu icons themselves (Bold, link, list,&lt;br /&gt;
   Cite, undo/redo, etc.) are rendered as background-image SVGs with a&lt;br /&gt;
   colour baked into the SVG markup, not currentColor-based masks -- so&lt;br /&gt;
   16-18 above (which only recolour backgrounds/text) left them dark and&lt;br /&gt;
   low-contrast against the now-dark surfaces. OOUI ships its own fix for&lt;br /&gt;
   exactly this, gated behind a narrow accessibility media query&lt;br /&gt;
   (forced-colors + prefers-color-scheme: dark) that doesn&#039;t apply to this&lt;br /&gt;
   site&#039;s own always-on dark theme -- reusing that exact technique&lt;br /&gt;
   unconditionally rather than inventing a different one. `:not(&lt;br /&gt;
   .oo-ui-image-invert )` is OOUI&#039;s own exclusion for icons already meant&lt;br /&gt;
   to render light (e.g. on the orange primary-button background) --&lt;br /&gt;
   inverting those too would flip them back to dark.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.oo-ui-iconElement-icon:not( .oo-ui-image-invert ),&lt;br /&gt;
.oo-ui-indicatorElement-indicator:not( .oo-ui-image-invert ) {&lt;br /&gt;
	filter: invert( 1 ) hue-rotate( 180deg );&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   20. EDIT SOURCE FORM -- MediaWiki core + WikiEditor + CodeMirror&lt;br /&gt;
&lt;br /&gt;
   The source editor is not covered by the article/component selectors above:&lt;br /&gt;
   `action=edit` loads core edit-form CSS, WikiEditor chrome, and sometimes&lt;br /&gt;
   CodeMirror with their own light neutral surfaces. Force the same EDFM dark&lt;br /&gt;
   surface stack here so the source page no longer flashes as a white island.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
.mw-editform,&lt;br /&gt;
#editform,&lt;br /&gt;
#toolbar,&lt;br /&gt;
.editOptions,&lt;br /&gt;
.mw-editTools,&lt;br /&gt;
.mw-summary-preview,&lt;br /&gt;
.mw-datatable,&lt;br /&gt;
.wikiEditor-ui,&lt;br /&gt;
.wikiEditor-ui-view,&lt;br /&gt;
.wikiEditor-ui-text,&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-top,&lt;br /&gt;
.wikiEditor-ui-controls,&lt;br /&gt;
.wikiEditor-ui-tabs,&lt;br /&gt;
.wikiEditor-ui-buttons,&lt;br /&gt;
.CodeMirror,&lt;br /&gt;
.CodeMirror-scroll {&lt;br /&gt;
	background: var( --edfm-surface-1 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editform textarea,&lt;br /&gt;
#wpTextbox1,&lt;br /&gt;
#wpSummary,&lt;br /&gt;
#wpSummaryWidget input,&lt;br /&gt;
#editform input[type=&#039;text&#039;],&lt;br /&gt;
#editform input[type=&#039;search&#039;],&lt;br /&gt;
#editform textarea,&lt;br /&gt;
.wikiEditor-ui-text textarea,&lt;br /&gt;
.CodeMirror-code,&lt;br /&gt;
.CodeMirror-lines,&lt;br /&gt;
.CodeMirror pre {&lt;br /&gt;
	background: var( --edfm-bg-deep ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
	caret-color: var( --edfm-orange-bright );&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar,&lt;br /&gt;
.wikiEditor-ui-toolbar .group,&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs,&lt;br /&gt;
.wikiEditor-ui-toolbar .page,&lt;br /&gt;
.wikiEditor-ui-toolbar .sections,&lt;br /&gt;
.wikiEditor-ui-toolbar .section,&lt;br /&gt;
.wikiEditor-ui-toolbar .options,&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet,&lt;br /&gt;
.wikiEditor-ui-toolbar .pages,&lt;br /&gt;
.CodeMirror-gutters {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text-muted ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar a,&lt;br /&gt;
.wikiEditor-ui-toolbar .label,&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a,&lt;br /&gt;
.mw-editTools a,&lt;br /&gt;
.editOptions label,&lt;br /&gt;
.mw-editform label,&lt;br /&gt;
.CodeMirror-linenumber {&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab a:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-button:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .tool-select:hover,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table th,&lt;br /&gt;
.wikiEditor-ui-toolbar .page-table td,&lt;br /&gt;
.CodeMirror-activeline-background {&lt;br /&gt;
	background: var( --edfm-surface-3 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
}&lt;br /&gt;
.wikiEditor-ui-toolbar .tab.current a,&lt;br /&gt;
.wikiEditor-ui-toolbar .section-main,&lt;br /&gt;
.CodeMirror-selected {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-cursor {&lt;br /&gt;
	border-left-color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
.CodeMirror-matchingbracket {&lt;br /&gt;
	color: var( --edfm-orange-bright ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   21. FILE PAGE CHROME -- #filetoc (the File / File history / File usage /&lt;br /&gt;
   Metadata nav on File: description pages) is defined in MediaWiki core&#039;s&lt;br /&gt;
   mediawiki.action.view.filepage.less, entirely separate from both the&lt;br /&gt;
   .edfm-* system and the OOUI fixes in 16-19 above -- a different&lt;br /&gt;
   subsystem again, only loaded on File: pages, which is why it was never&lt;br /&gt;
   touched by anything else in this file. Link colour inside it already&lt;br /&gt;
   correctly inherits the site&#039;s normal link blue; only the light neutral&lt;br /&gt;
   background/border needed overriding.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#filetoc {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
/* ==========================================================================&lt;br /&gt;
   22. FILE PAGE: METADATA TABLE + MEDIA VIEWER BUTTON -- #mw_metadata is&lt;br /&gt;
   the EXIF-style metadata table (separate from the File history table&lt;br /&gt;
   above -- that one already carries the .wikitable class and picked up&lt;br /&gt;
   dark styling from 7. TABLES automatically; this one doesn&#039;t have that&lt;br /&gt;
   class, so it never matched). The &amp;quot;Open in Media Viewer&amp;quot; button is a&lt;br /&gt;
   Codex component (MultimediaViewer extension) -- a third distinct&lt;br /&gt;
   styling subsystem from OOUI and MediaWiki core skinning, again never&lt;br /&gt;
   touched by anything else in this file.&lt;br /&gt;
   ========================================================================== */&lt;br /&gt;
#mw_metadata th,&lt;br /&gt;
#mw_metadata td {&lt;br /&gt;
	background: var( --edfm-surface-2 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-mmv-view-expanded.cdx-button {&lt;br /&gt;
	background: var( --edfm-surface-4 ) !important;&lt;br /&gt;
	color: var( --edfm-text ) !important;&lt;br /&gt;
	border-color: var( --edfm-border ) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===========================================================================&lt;br /&gt;
   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;
	min-height: 9.5rem;&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;
	min-height: 13.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;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=576</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=MediaWiki:Common.js&amp;diff=576"/>
		<updated>2026-08-10T04:05:38Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Add sidebar Discord invite button&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;
	/* 5. Sidebar Discord invite button. This mirrors the RuneScape.wiki-style&lt;br /&gt;
	 * sidebar community CTA placement: directly below the logo and above the&lt;br /&gt;
	 * first navigation group. It is injected rather than placed in&lt;br /&gt;
	 * MediaWiki:Sidebar so it stays outside the generated portlet lists and&lt;br /&gt;
	 * can keep button semantics/styling without affecting nav highlighting.&lt;br /&gt;
	 */&lt;br /&gt;
	function initSidebarDiscordButton() {&lt;br /&gt;
		var panel = document.getElementById( &#039;mw-panel&#039; );&lt;br /&gt;
		var logo = document.getElementById( &#039;p-logo&#039; );&lt;br /&gt;
		if ( !panel || !logo || document.querySelector( &#039;.edfm-discord-cta&#039; ) ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var button = document.createElement( &#039;a&#039; );&lt;br /&gt;
		button.className = &#039;edfm-discord-cta&#039;;&lt;br /&gt;
		button.href = &#039;https://discord.gg/5rjebvgd8C&#039;;&lt;br /&gt;
		button.target = &#039;_blank&#039;;&lt;br /&gt;
		button.rel = &#039;nofollow noopener noreferrer&#039;;&lt;br /&gt;
		button.setAttribute( &#039;aria-label&#039;, &#039;Chat on Discord&#039; );&lt;br /&gt;
		button.innerHTML = &#039;&amp;lt;span class=&amp;quot;edfm-discord-cta-icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;svg viewBox=&amp;quot;0 0 24 24&amp;quot; focusable=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M19.54 5.23a16.73 16.73 0 0 0-4.13-1.28.06.06 0 0 0-.07.03c-.18.32-.39.74-.53 1.07a15.47 15.47 0 0 0-4.62 0 10.9 10.9 0 0 0-.54-1.07.07.07 0 0 0-.07-.03A16.64 16.64 0 0 0 5.45 5.23a.06.06 0 0 0-.03.03C2.8 9.18 2.08 13 2.43 16.78c0 .02.01.04.03.05a16.8 16.8 0 0 0 5.06 2.56.07.07 0 0 0 .08-.03c.39-.53.73-1.09 1.03-1.69a.07.07 0 0 0-.04-.09 10.92 10.92 0 0 1-1.58-.75.07.07 0 0 1-.01-.11c.11-.08.21-.16.31-.24a.06.06 0 0 1 .07-.01c3.3 1.51 6.88 1.51 10.14 0a.06.06 0 0 1 .07.01c.1.08.2.16.31.24a.07.07 0 0 1-.01.11c-.5.3-1.03.55-1.58.75a.07.07 0 0 0-.04.09c.3.6.64 1.16 1.03 1.69a.07.07 0 0 0 .08.03 16.75 16.75 0 0 0 5.06-2.56.07.07 0 0 0 .03-.05c.42-4.37-.7-8.16-2.99-11.52a.05.05 0 0 0-.03-.03ZM8.68 14.48c-.99 0-1.81-.91-1.81-2.03s.8-2.03 1.81-2.03c1.02 0 1.83.92 1.81 2.03 0 1.12-.8 2.03-1.81 2.03Zm6.65 0c-.99 0-1.81-.91-1.81-2.03s.8-2.03 1.81-2.03c1.02 0 1.83.92 1.81 2.03 0 1.12-.8 2.03-1.81 2.03Z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;Chat on Discord&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
		if ( logo.nextSibling ) {&lt;br /&gt;
			panel.insertBefore( button, logo.nextSibling );&lt;br /&gt;
		} else {&lt;br /&gt;
			panel.appendChild( button );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	/* 6. 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;
			initSidebarDiscordButton();&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;
		initSidebarDiscordButton();&lt;br /&gt;
		initMobileChrome();&lt;br /&gt;
	}&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Zacariah_Nemo&amp;diff=522</id>
		<title>Zacariah Nemo</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Zacariah_Nemo&amp;diff=522"/>
		<updated>2026-08-08T21:30:54Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Fragment Cannon specialist based in the Yoru system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Zacariah Nemo&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (weapon)&lt;br /&gt;
 |label2 = System |row2 = Yoru&lt;br /&gt;
 |label3 = Facility |row3 = Nemo Cyber Party Base&lt;br /&gt;
 |label4 = Specialties |row4 = Fragment Cannon&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet confirmed&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet confirmed&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Xihe Companions&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Zacariah Nemo specialises in fragment cannon modifications.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Yoru&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Nemo Cyber Party Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Nemo Cyber Party Base in Yoru.&lt;br /&gt;
# Deliver **25 units of Xihe Companions**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zacariah Nemo&#039;s prerequisite Engineer is not yet confirmed, and available chain guides list no further Engineer unlocks from him.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Cannon || Damage and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Zacariah Nemo&#039;s confirmed specialties are Fragment Cannon, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Tiana_Fortune&amp;diff=521</id>
		<title>Tiana Fortune</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Tiana_Fortune&amp;diff=521"/>
		<updated>2026-08-08T21:30:52Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Scanner and limpet controller specialist based in the Achenar system, reachable through Hera Tani.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Tiana Fortune&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (utility)&lt;br /&gt;
 |label2 = System |row2 = Achenar&lt;br /&gt;
 |label3 = Facility |row3 = Fortune&#039;s Loss&lt;br /&gt;
 |label4 = Specialties |row4 = Scanners, Limpet Controllers&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Hera Tani]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Hera Tani&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 50 units of Decoded Emission Data&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tiana Fortune specialises in scanners, limpet controllers modifications. They&#039;re reached through [[Hera Tani]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Achenar&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Fortune&#039;s Loss&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Hera Tani.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Hera Tani]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Fortune&#039;s Loss in Achenar.&lt;br /&gt;
# Deliver **50 units of Decoded Emission Data** — a data-type material rather than a cargo commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tiana Fortune is listed as reachable through [[Hera Tani]] alongside [[Broo Tarquin]], but that specific relationship still needs direct verification — see the note on [[Hera Tani]]&#039;s own page.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Scanners || Range and other variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Limpet Controller || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Tiana Fortune&#039;s confirmed specialties are Scanners, Limpet Controllers, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Hera Tani]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Utility Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Lori_Jameson&amp;diff=520</id>
		<title>Lori Jameson</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Lori_Jameson&amp;diff=520"/>
		<updated>2026-08-08T21:30:49Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Scanner and utility module specialist based at Jameson Base in the Shinrarta Dezhra system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Lori Jameson&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (utility)&lt;br /&gt;
 |label2 = System |row2 = Shinrarta Dezhra&lt;br /&gt;
 |label3 = Facility |row3 = Jameson Base&lt;br /&gt;
 |label4 = Specialties |row4 = Scanners, Utility modules&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet confirmed&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet confirmed&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Elite-level rank requirement in an unspecified activity&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Kongga Ale&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Lori Jameson specialises in scanners, utility modules modifications.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Shinrarta Dezhra&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Jameson Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Elite-level rank requirement in an unspecified activity.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: Elite-level rank requirement in an unspecified activity.&lt;br /&gt;
# Travel to Jameson Base in Shinrarta Dezhra.&lt;br /&gt;
# Deliver **25 units of Kongga Ale** — a rare regional commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lori Jameson&#039;s prerequisite Engineer is not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Scanners || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Lori Jameson&#039;s confirmed specialties are Scanners, Utility modules, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Utility Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Liz_Ryder&amp;diff=519</id>
		<title>Liz Ryder</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Liz_Ryder&amp;diff=519"/>
		<updated>2026-08-08T21:30:48Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Explosives and armour specialist based in the Eurybia system, and a starting point for the chain leading to Hera Tani and Broo Tarquin.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Cross-referenced across Inara and community unlock-chain guides for the requirements below; not first-party tested|uncertainty=Maximum engineering grade was not found in the sources checked — see Available Engineering}}&lt;br /&gt;
&lt;br /&gt;
{{Engineer infobox&lt;br /&gt;
 |name = Liz Ryder&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Liz Ryder specialises in explosive weapons and defensive armour — missiles, mine launchers, torpedo pylons, and hull reinforcement/armour plating. She&#039;s a second independent starting point alongside [[Felicity Farseer]] (the two don&#039;t require each other), and is the Engineer you need before [[Hera Tani]] and, further down the chain, [[Broo Tarquin]] become reachable.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot;&amp;gt;[https://inara.cz/elite/engineer/5 Liz Ryder — engineer], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Eurybia&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Demolition Unlimited&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
No discovery step applies — Liz Ryder is known from public sources without needing a referral from another Engineer.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Reach &#039;&#039;&#039;Cordial&#039;&#039;&#039; or &#039;&#039;&#039;Friendly&#039;&#039;&#039; reputation with the Eurybia Blue Mafia minor faction.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Reach Cordial or Friendly standing with the Eurybia Blue Mafia.&lt;br /&gt;
# Travel to Demolition Unlimited in Eurybia.&lt;br /&gt;
# Deliver &#039;&#039;&#039;200 units of Landmines&#039;&#039;&#039; — a manufactured commodity rather than cargo bought from a market; commonly sourced by destroying other Landmines or from mission rewards.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Liz Ryder|Hera Tani|Broo Tarquin}}&lt;br /&gt;
&lt;br /&gt;
Liz Ryder has no prerequisite Engineer. Reputation grade 3–4 with her opens the referral to [[Hera Tani]], who in turn leads to [[Broo Tarquin]] and [[Tiana Fortune]] — the latter relationship still needs direct verification.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Blueprint !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Abrasion Blaster || Far-reaching || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Enzyme Missile Rack || High-yield || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Hull Reinforcement Package || Blast resistant, Heavy duty, Kinetic resistant, Lightweight, Thermal resistant || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Armour || Blast resistant, Heavy duty, Kinetic resistant, Lightweight, Thermal resistant || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Mine Launcher || High capacity, Lightweight, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Missile Rack || High capacity, Lightweight, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Seeker Missile Rack || Drag, High capacity, Lightweight, Lightweight thermal, Lockdown, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Torpedo Pylon || Lightweight, Sturdy || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Maximum grade per blueprint wasn&#039;t stated on the source checked.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at her workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Liz Ryder&#039;s confirmed specialties are missile/mine/torpedo weapon variants and hull reinforcement/armour modifications, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Hera Tani]] [[Broo Tarquin]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Hera_Tani&amp;diff=518</id>
		<title>Hera Tani</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Hera_Tani&amp;diff=518"/>
		<updated>2026-08-08T21:30:46Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Power systems and scanner specialist based in the Kuwemaki system, and the link between Liz Ryder and Broo Tarquin.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Cross-referenced across Inara and community unlock-chain guides for the requirements below; not first-party tested|uncertainty=Maximum engineering grade was not found in the sources checked — see Available Engineering}}&lt;br /&gt;
&lt;br /&gt;
{{Engineer infobox&lt;br /&gt;
 |name = Hera Tani&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Hera Tani specialises in power systems (Power Plant and Power Distributor modifications) and scanning equipment. She sits between [[Liz Ryder]] and [[Broo Tarquin]] in the Engineer network, and is the Engineer to unlock next once Liz Ryder is available.&amp;lt;ref name=&amp;quot;inara-tani&amp;quot;&amp;gt;[https://inara.cz/elite/engineer/12/ Hera Tani — engineer], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Kuwemaki&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; The Jet&#039;s Hole&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Hera Tani becomes known as a referral once you&#039;ve built reputation with [[Liz Ryder]] (typically around approximately grade 3–4 standing with her).&amp;lt;ref name=&amp;quot;inara-tani&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Reach Empire rank &#039;&#039;&#039;Outsider&#039;&#039;&#039; or higher.&amp;lt;ref name=&amp;quot;inara-tani&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Liz Ryder]] unlocked and build enough reputation with her to trigger the referral.&lt;br /&gt;
# Reach Empire rank Outsider or higher.&lt;br /&gt;
# Travel to The Jet&#039;s Hole in Kuwemaki.&lt;br /&gt;
# Deliver &#039;&#039;&#039;50 units of Kamitra Cigars&#039;&#039;&#039; — a rare commodity, typically bought a few tons at a time from Hammel Terminal in the Kamitra system.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
Station services may not appear immediately after unlocking — relogging may make them available.&amp;lt;ref name=&amp;quot;inara-tani&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Liz Ryder|Hera Tani|Broo Tarquin}}&lt;br /&gt;
&lt;br /&gt;
Hera Tani&#039;s only confirmed prerequisite is Liz Ryder. She in turn leads to [[Broo Tarquin]]; chain guides also list [[Tiana Fortune]] as reachable from Hera Tani, but that specific relationship still needs direct verification.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Blueprint !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Detailed Surface Scanner || Expanded probe scanning radius, Long range detailed || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Power Distributor || Balanced, Charge enhanced, Engine focused, High charge capacity, Shielded, Support focused, System focused, Weapon focused || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Power Plant || Armoured, Low emissions, Overcharged || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Sensors || Lightweight, Long range, Wide angle || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Maximum grade per blueprint wasn&#039;t stated on the source checked.&amp;lt;ref name=&amp;quot;inara-tani&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at her workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Hera Tani&#039;s confirmed specialties are Power Plant, Power Distributor, Sensors, and Detailed Surface Scanner modifications, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Liz Ryder]] [[Broo Tarquin]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Felicity_Farseer&amp;diff=517</id>
		<title>Felicity Farseer</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Felicity_Farseer&amp;diff=517"/>
		<updated>2026-08-08T21:30:45Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Frame Shift Drive specialist based in the Deciat system, and one of the earliest Engineers most commanders unlock.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Cross-referenced across Inara and community unlock-chain guides for the requirements below; not first-party tested|uncertainty=Maximum engineering grade and the full named list of blueprints beyond module/upgrade counts were not found in the sources checked — see Available Engineering}}&lt;br /&gt;
&lt;br /&gt;
{{Engineer infobox&lt;br /&gt;
 |name = Felicity Farseer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Felicity Farseer is one of the first Engineers most commanders reach, and is a common starting point for the wider Engineer network — several other Engineers are ultimately reached only after unlocking her.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot;&amp;gt;[https://inara.cz/elite/engineer/1/ Felicity Farseer — engineer], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Deciat&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Farseer Inc&lt;br /&gt;
* &#039;&#039;&#039;Navigation notes:&#039;&#039;&#039; Deciat is a frequently-visited system for new commanders reaching their first Engineer; be aware it has a reputation as a location where player-vs-player interdiction is more common than average.&amp;lt;ref name=&amp;quot;frontier-farseer-thread&amp;quot;&amp;gt;[https://forums.frontier.co.uk/threads/engineers-in-this-case-felicity-farseer.602520/ Engineers (in this case Felicity Farseer)], Frontier Forums, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
No discovery step applies — Felicity Farseer is known from public data sources without needing a referral from another Engineer.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Reach Exploration rank &#039;&#039;&#039;Scout&#039;&#039;&#039; or higher.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Reach Exploration rank Scout or higher.&lt;br /&gt;
# Travel to Farseer Inc in Deciat.&lt;br /&gt;
# Deliver &#039;&#039;&#039;1 unit of Meta-Alloys&#039;&#039;&#039; — an encoded/manufactured material rather than a purchasable commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
station services (including the ability to actually place engineering orders) may not appear immediately after unlocking — relogging may make them available.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
Felicity Farseer has no prerequisite Engineer — she&#039;s a starting point for the network rather than partway along a chain.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt; [[Liz Ryder]] is also independently available from the start; the two are separate entry points, not sequential.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot;&amp;gt;[https://inara.cz/elite/engineer/5 Liz Ryder — engineer], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Blueprint count (per Inara) !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Detailed Surface Scanner || 2 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Frame Shift Drive || 3 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Frame Shift Drive Interdictor || 2 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Power Plant || 3 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Sensors || 3 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Shield Booster || 5 variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Thrusters || 3 variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
The source checked for this pass gave module coverage and variant counts but not the specific blueprint name for each variant or the maximum grade — listing invented blueprint names here would risk stating something not actually confirmed, so this table intentionally stops at what was verifiable.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at her workshop, or by selling exploration data there.&amp;lt;ref name=&amp;quot;inara-farseer&amp;quot; /&amp;gt; Reputation mechanics common to all Engineers are covered on the main [[Engineering]] page rather than repeated here.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Felicity Farseer&#039;s confirmed specialties are Frame Shift Drive, Power Plant, Sensors, Shield Booster, Thrusters, Detailed Surface Scanner, and FSD Interdictor modifications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and specific-blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Liz Ryder]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Elvira_Martuuk&amp;diff=516</id>
		<title>Elvira Martuuk</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Elvira_Martuuk&amp;diff=516"/>
		<updated>2026-08-08T21:30:44Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Third pass: remove remaining repeated community-source phrasing from Engineer body text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Frame Shift Drive specialist based in the Khun system, reached after Felicity Farseer.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Elvira Martuuk&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (core internal)&lt;br /&gt;
 |label2 = System |row2 = Khun&lt;br /&gt;
 |label3 = Facility |row3 = Long Sight Base&lt;br /&gt;
 |label4 = Specialties |row4 = Frame Shift Drive&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Felicity Farseer]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Felicity Farseer&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 3 units of Soontil Relics&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Elvira Martuuk specialises in frame shift drive modifications. They&#039;re reached through [[Felicity Farseer]]. See Engineer Unlock Chain below for their relationship to [[Marco Qwent]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Khun&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Long Sight Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Felicity Farseer.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Felicity Farseer]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Long Sight Base in Khun.&lt;br /&gt;
# Deliver **3 units of Soontil Relics** — a rare, region-specific commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Felicity Farseer|Elvira Martuuk|Marco Qwent}}&lt;br /&gt;
&lt;br /&gt;
Elvira Martuuk sits between [[Felicity Farseer]] and [[Marco Qwent]]. She is also listed as the referral source for [[Mel Brandon]] in Colonia; that specific relationship still needs direct verification.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Frame Shift Drive || Increased range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Elvira Martuuk&#039;s confirmed specialties are Frame Shift Drive, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Felicity Farseer]] [[Marco Qwent]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Zacariah_Nemo&amp;diff=515</id>
		<title>Zacariah Nemo</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Zacariah_Nemo&amp;diff=515"/>
		<updated>2026-08-08T21:29:27Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Fragment Cannon specialist based in the Yoru system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Zacariah Nemo&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (weapon)&lt;br /&gt;
 |label2 = System |row2 = Yoru&lt;br /&gt;
 |label3 = Facility |row3 = Nemo Cyber Party Base&lt;br /&gt;
 |label4 = Specialties |row4 = Fragment Cannon&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet confirmed&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet confirmed&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Xihe Companions&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Zacariah Nemo specialises in fragment cannon modifications.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Yoru&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Nemo Cyber Party Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Nemo Cyber Party Base in Yoru.&lt;br /&gt;
# Deliver **25 units of Xihe Companions**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zacariah Nemo&#039;s prerequisite Engineer is not yet confirmed, and chain guides describe him as not leading to any further Engineer.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Cannon || Damage and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Zacariah Nemo&#039;s confirmed specialties are Fragment Cannon, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Yi_Shen&amp;diff=514</id>
		<title>Yi Shen</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Yi_Shen&amp;diff=514"/>
		<updated>2026-08-08T21:29:26Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Stealth and perception specialist at Eidolon Hold in the Einheriar system, Colonia region.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Yi Shen&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Einheriar&lt;br /&gt;
 |label3 = Settlement |row3 = Eidolon Hold&lt;br /&gt;
 |label4 = Specialties |row4 = Stealth and perception&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Yi Shen specialises in stealth and perception modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Einheriar&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Eidolon Hold&lt;br /&gt;
* &#039;&#039;&#039;Region:&#039;&#039;&#039; Colonia — this Engineer is only reachable after making the long journey to the Colonia region, separate from the core bubble.&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Eidolon Hold in Einheriar.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Stealth and perception.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Yi Shen&#039;s confirmed specialty area is Stealth and perception.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Yarden_Bond&amp;diff=513</id>
		<title>Yarden Bond</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Yarden_Bond&amp;diff=513"/>
		<updated>2026-08-08T21:29:25Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Movement and stealth specialist at Salamander Bank in the Bayan system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Yarden Bond&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Bayan&lt;br /&gt;
 |label3 = Settlement |row3 = Salamander Bank&lt;br /&gt;
 |label4 = Specialties |row4 = Movement and stealth&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Yarden Bond specialises in movement and stealth modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Bayan&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Salamander Bank&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Salamander Bank in Bayan.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Movement and stealth.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Yarden Bond&#039;s confirmed specialty area is Movement and stealth.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Wellington_Beck&amp;diff=512</id>
		<title>Wellington Beck</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Wellington_Beck&amp;diff=512"/>
		<updated>2026-08-08T21:29:24Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Tactical equipment specialist at Beck Facility in the Jolapa system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Wellington Beck&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Jolapa&lt;br /&gt;
 |label3 = Settlement |row3 = Beck Facility&lt;br /&gt;
 |label4 = Specialties |row4 = Tactical equipment&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wellington Beck specialises in tactical equipment modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Jolapa&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Beck Facility&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Beck Facility in Jolapa.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Tactical equipment.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Wellington Beck&#039;s confirmed specialty area is Tactical equipment.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Uma_Laszlo&amp;diff=511</id>
		<title>Uma Laszlo</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Uma_Laszlo&amp;diff=511"/>
		<updated>2026-08-08T21:29:23Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Combat effectiveness specialist at Laszlo&#039;s Resolve in the Xuane system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Uma Laszlo&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Xuane&lt;br /&gt;
 |label3 = Settlement |row3 = Laszlo&#039;s Resolve&lt;br /&gt;
 |label4 = Specialties |row4 = Combat effectiveness&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Uma Laszlo specialises in combat effectiveness modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Xuane&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Laszlo&#039;s Resolve&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Laszlo&#039;s Resolve in Xuane.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Combat effectiveness.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Uma Laszlo&#039;s confirmed specialty area is Combat effectiveness.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Tod_%22The_Blaster%22_McQuinn&amp;diff=510</id>
		<title>Tod &quot;The Blaster&quot; McQuinn</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Tod_%22The_Blaster%22_McQuinn&amp;diff=510"/>
		<updated>2026-08-08T21:29:23Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Cannon and Rail Gun specialist based in the Wolf 397 system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Tod &amp;quot;The Blaster&amp;quot; McQuinn&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (weapon)&lt;br /&gt;
 |label2 = System |row2 = Wolf 397&lt;br /&gt;
 |label3 = Facility |row3 = Trophy Camp&lt;br /&gt;
 |label4 = Specialties |row4 = Cannons, Rail Guns&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet confirmed&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet confirmed&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Requires 15 or more bounty vouchers redeemed before the referral appears&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver bounty vouchers worth 100,000 CR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tod &amp;quot;The Blaster&amp;quot; McQuinn specialises in cannons, rail guns modifications. See Engineer Unlock Chain below for their relationship to [[Selene Jean]] and [[Petra Olmanova]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Wolf 397&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Trophy Camp&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Requires 15 or more bounty vouchers redeemed before the referral appears.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: 15 or more bounty vouchers redeemed before the referral appears.&lt;br /&gt;
# Travel to Trophy Camp in Wolf 397.&lt;br /&gt;
# Redeem or deliver **bounty vouchers worth 100,000 CR total** at his facility.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tod McQuinn&#039;s own prerequisite Engineer is not yet confirmed. He is the referral source for both [[Selene Jean]] and [[Petra Olmanova]] (the latter in Colonia).&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Cannon || Damage and other variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Rail Gun || Damage and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Tod &amp;quot;The Blaster&amp;quot; McQuinn&#039;s confirmed specialties are Cannons, Rail Guns, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Selene Jean]] [[Petra Olmanova]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Tiana_Fortune&amp;diff=509</id>
		<title>Tiana Fortune</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Tiana_Fortune&amp;diff=509"/>
		<updated>2026-08-08T21:29:22Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Scanner and limpet controller specialist based in the Achenar system, reachable through Hera Tani.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Tiana Fortune&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (utility)&lt;br /&gt;
 |label2 = System |row2 = Achenar&lt;br /&gt;
 |label3 = Facility |row3 = Fortune&#039;s Loss&lt;br /&gt;
 |label4 = Specialties |row4 = Scanners, Limpet Controllers&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Hera Tani]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Hera Tani&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 50 units of Decoded Emission Data&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Tiana Fortune specialises in scanners, limpet controllers modifications. They&#039;re reached through [[Hera Tani]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Achenar&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Fortune&#039;s Loss&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Hera Tani.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Hera Tani]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Fortune&#039;s Loss in Achenar.&lt;br /&gt;
# Deliver **50 units of Decoded Emission Data** — a data-type material rather than a cargo commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Chain guides list Tiana Fortune as reachable through [[Hera Tani]] alongside [[Broo Tarquin]], but that specific relationship hasn&#039;t been independently checked for this pass — see the note on [[Hera Tani]]&#039;s own page.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Scanners || Range and other variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Limpet Controller || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Tiana Fortune&#039;s confirmed specialties are Scanners, Limpet Controllers, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Hera Tani]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Utility Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=The_Sarge&amp;diff=508</id>
		<title>The Sarge</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=The_Sarge&amp;diff=508"/>
		<updated>2026-08-08T21:29:21Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Limpet controller specialist based in the Beta-3 Tucani system, reachable through Juri Ishmaak.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = The Sarge&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (utility)&lt;br /&gt;
 |label2 = System |row2 = Beta-3 Tucani&lt;br /&gt;
 |label3 = Facility |row3 = The Beach&lt;br /&gt;
 |label4 = Specialties |row4 = Limpet Controllers&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Juri Ishmaak]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Juri Ishmaak&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 50 units of Aberrant Shield Pattern Analysis&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Sarge specialises in limpet controllers modifications. They&#039;re reached through [[Juri Ishmaak]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Beta-3 Tucani&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; The Beach&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Juri Ishmaak.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Juri Ishmaak]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to The Beach in Beta-3 Tucani.&lt;br /&gt;
# Deliver **50 units of Aberrant Shield Pattern Analysis** — a data-type material.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Sarge is reachable through [[Juri Ishmaak]].&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Limpet Controller || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; The Sarge&#039;s confirmed specialties are Limpet Controllers, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Juri Ishmaak]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Utility Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=The_Dweller&amp;diff=507</id>
		<title>The Dweller</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=The_Dweller&amp;diff=507"/>
		<updated>2026-08-08T21:29:20Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=The Dweller is a ship Engineer based at Black Hide in the Wyrd system, specialising in Power Distributor engineering.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location/specialty cross-referenced against Inara; prerequisite/discovery/invitation/unlock detail is single-sourced from a community guide — see Sources|uncertainty=prerequisite, discovery, invitation, and complete blueprint availability — details are treated as community-reported until directly verified; see Sources}}&lt;br /&gt;
&lt;br /&gt;
{{Engineer infobox&lt;br /&gt;
 |name = The Dweller&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Dweller specialises in Power Distributor modifications for ship-based Engineering.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Wyrd&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Black Hide&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Professor Palin is the referral source for The Dweller.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Sell exploration or other data at 5 black markets.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: sell exploration or other data at 5 black markets.&lt;br /&gt;
# Travel to Black Hide in Wyrd.&lt;br /&gt;
# Pay &#039;&#039;&#039;500,000 CR&#039;&#039;&#039; directly at the Engineer&#039;s terminal, rather than deliver a physical commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
The Dweller&#039;s own prerequisite Engineer is not yet verified. He is the referral source for both [[Lei Cheung]] and [[Marsha Hicks]] (the latter in Colonia).&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
&#039;&#039;&#039;Blueprint data pending verification.&#039;&#039;&#039; The Dweller&#039;s general specialty (Power Distributor) is established, but individual blueprint names and maximum grades have not yet passed EDFM verification — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. This table will be restored once blueprint-level data is confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Engineering modifications performed at this workshop increase Engineer reputation through the standard Engineering reputation system. See [[Engineering#Engineer Reputation]] for details.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
{{Fact|1=The Dweller&#039;s confirmed specialty is Power Distributor.}}&lt;br /&gt;
&lt;br /&gt;
{{Field manual recommendation|1=Not yet made — a pinning recommendation needs the maximum-grade and full blueprint data filled in first. See [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.}}&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Lei Cheung]] [[Marsha Hicks]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Terra_Velasquez&amp;diff=506</id>
		<title>Terra Velasquez</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Terra_Velasquez&amp;diff=506"/>
		<updated>2026-08-08T21:29:19Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Mobility and evasion specialist at Rascal&#039;s Choice in the Shou Xing system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Terra Velasquez&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Shou Xing&lt;br /&gt;
 |label3 = Settlement |row3 = Rascal&#039;s Choice&lt;br /&gt;
 |label4 = Specialties |row4 = Mobility and evasion&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Terra Velasquez specialises in mobility and evasion modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Shou Xing&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Rascal&#039;s Choice&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Rascal&#039;s Choice in Shou Xing.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Mobility and evasion.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Terra Velasquez&#039;s confirmed specialty area is Mobility and evasion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Selene_Jean&amp;diff=505</id>
		<title>Selene Jean</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Selene_Jean&amp;diff=505"/>
		<updated>2026-08-08T21:29:19Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Armour and hull reinforcement specialist based in the Kuk system, reached after Tod McQuinn.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Selene Jean&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (optional internal)&lt;br /&gt;
 |label2 = System |row2 = Kuk&lt;br /&gt;
 |label3 = Facility |row3 = Prospector&#039;s Rest&lt;br /&gt;
 |label4 = Specialties |row4 = Armour, Hull Reinforcement Package&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Tod McQuinn&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Mine or refine 500 or more tonnes of ore&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 10 units of Painite&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Selene Jean specialises in armour, hull reinforcement package modifications. They&#039;re reached through [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]. See Engineer Unlock Chain below for their relationship to [[Bill Turner]] and [[Didi Vatermann]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Kuk&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Prospector&#039;s Rest&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Tod McQuinn.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Mine or refine 500 or more tonnes of ore.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: mine or refine 500 or more tonnes of ore.&lt;br /&gt;
# Travel to Prospector&#039;s Rest in Kuk.&lt;br /&gt;
# Deliver **10 units of Painite** — a mineable commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Tod &amp;quot;The Blaster&amp;quot; McQuinn|Selene Jean|Bill Turner}}&lt;br /&gt;
&lt;br /&gt;
Selene Jean sits between [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]] and both [[Bill Turner]] and [[Didi Vatermann]] — the latter two are parallel referrals from her, not a further single-line chain.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Armour || Resistance and other variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Hull Reinforcement Package || Resistance and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Selene Jean&#039;s confirmed specialties are Armour, Hull Reinforcement Package, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Tod &amp;quot;The Blaster&amp;quot; McQuinn]] [[Bill Turner]] [[Didi Vatermann]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Optional Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Rosa_Dayette&amp;diff=504</id>
		<title>Rosa Dayette</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Rosa_Dayette&amp;diff=504"/>
		<updated>2026-08-08T21:29:18Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Range and targeting specialist at Rosa&#039;s Shop in the Kojeara system, Colonia region.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Rosa Dayette&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Kojeara&lt;br /&gt;
 |label3 = Settlement |row3 = Rosa&#039;s Shop&lt;br /&gt;
 |label4 = Specialties |row4 = Range and targeting&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Rosa Dayette specialises in range and targeting modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Kojeara&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Rosa&#039;s Shop&lt;br /&gt;
* &#039;&#039;&#039;Region:&#039;&#039;&#039; Colonia — this Engineer is only reachable after making the long journey to the Colonia region, separate from the core bubble.&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Rosa&#039;s Shop in Kojeara.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Range and targeting.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Rosa Dayette&#039;s confirmed specialty area is Range and targeting.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Ram_Tah&amp;diff=503</id>
		<title>Ram Tah</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Ram_Tah&amp;diff=503"/>
		<updated>2026-08-08T21:29:17Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Defensive and utility module specialist based in the Meene system, reachable through Lei Cheung.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Ram Tah&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (optional internal)&lt;br /&gt;
 |label2 = System |row2 = Meene&lt;br /&gt;
 |label3 = Facility |row3 = Phoenix Base&lt;br /&gt;
 |label4 = Specialties |row4 = Frame Shift Drive Interdictor, Kill Warrant Scanner&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Lei Cheung]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Lei Cheung&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 50 units of Classified Scan Databanks&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ram Tah specialises in frame shift drive interdictor, kill warrant scanner modifications. They&#039;re reached through [[Lei Cheung]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Meene&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Phoenix Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Lei Cheung.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Lei Cheung]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: not yet confirmed.&lt;br /&gt;
# Travel to Phoenix Base in Meene.&lt;br /&gt;
# Deliver **50 units of Classified Scan Databanks** — a data-type material.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ram Tah is reachable through [[Lei Cheung]].&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Kill Warrant Scanner || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Ram Tah&#039;s confirmed specialties are Frame Shift Drive Interdictor, Kill Warrant Scanner, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Lei Cheung]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Optional Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Professor_Palin&amp;diff=502</id>
		<title>Professor Palin</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Professor_Palin&amp;diff=502"/>
		<updated>2026-08-08T21:29:16Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Thruster specialist based in the Arque system, reached after Marco Qwent.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Professor Palin&lt;br /&gt;
 |image = Professorpalin.png&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (core internal)&lt;br /&gt;
 |label2 = System |row2 = Arque&lt;br /&gt;
 |label3 = Facility |row3 = Abel Laboratory&lt;br /&gt;
 |label4 = Specialties |row4 = Thrusters&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Marco Qwent]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Marco Qwent&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Travel 5,000 Ly from your starting location before the referral triggers&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Sensor Fragments&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Professor Palin specialises in thrusters modifications. They&#039;re reached through [[Marco Qwent]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Arque&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Abel Laboratory&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Marco Qwent.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Travel 5,000 Ly from your starting location before the referral triggers.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Marco Qwent]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: travel 5,000 Ly from your starting location before the referral triggers.&lt;br /&gt;
# Travel to Abel Laboratory in Arque.&lt;br /&gt;
# Deliver **25 units of Sensor Fragments** — the same requirement reported for [[Chloe Sedesi]].&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Marco Qwent|Professor Palin}}&lt;br /&gt;
&lt;br /&gt;
Professor Palin is reached through [[Marco Qwent]]. No further Engineer has been confirmed as reachable specifically through Professor Palin in the sources checked this pass.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Thrusters || Speed and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Professor Palin&#039;s confirmed specialties are Thrusters, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Marco Qwent]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Petra_Olmanova&amp;diff=501</id>
		<title>Petra Olmanova</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Petra_Olmanova&amp;diff=501"/>
		<updated>2026-08-08T21:29:16Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Defensive module specialist based at Sanctuary in the Colonia region, reachable through Tod McQuinn.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Petra Olmanova&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (optional internal)&lt;br /&gt;
 |label2 = System |row2 = Asura&lt;br /&gt;
 |label3 = Facility |row3 = Sanctuary&lt;br /&gt;
 |label4 = Specialties |row4 = Hull Reinforcement Package, Module Reinforcement Package&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Tod McQuinn&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Combat rank Expert or higher&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 200 units of Progenitor Cells&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Petra Olmanova specialises in hull reinforcement package, module reinforcement package modifications. They&#039;re reached through [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Asura&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Sanctuary&lt;br /&gt;
* &#039;&#039;&#039;Region:&#039;&#039;&#039; Colonia — this Engineer is only reachable after making the long journey to the Colonia region, separate from the core bubble.&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Tod McQuinn.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Combat rank Expert or higher.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: combat rank Expert or higher.&lt;br /&gt;
# Travel to Sanctuary in Asura.&lt;br /&gt;
# Deliver **200 units of Progenitor Cells**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Petra Olmanova is reachable through [[Tod &amp;quot;The Blaster&amp;quot; McQuinn]].&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Hull Reinforcement Package || Resistance and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Petra Olmanova&#039;s confirmed specialties are Hull Reinforcement Package, Module Reinforcement Package, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Tod &amp;quot;The Blaster&amp;quot; McQuinn]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Optional Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Oden_Geiger&amp;diff=500</id>
		<title>Oden Geiger</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Oden_Geiger&amp;diff=500"/>
		<updated>2026-08-08T21:29:15Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Odyssey Engineer|deck=Accuracy and optics specialist at Ankh&#039;s Promise in the Candiaei system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Live|version=Odyssey on-foot Engineering; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing only; discovery, invitation, and unlock requirements have not yet been researched|uncertainty=Discovery requirement, invitation requirement, unlock requirement, prerequisite Engineer, maximum grade, and specific modification names are all not yet researched. Only location and general specialty area are confirmed.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Oden Geiger&lt;br /&gt;
 |label1 = Engineer type |row1 = Odyssey (suit / weapon)&lt;br /&gt;
 |label2 = System |row2 = Candiaei&lt;br /&gt;
 |label3 = Settlement |row3 = Ankh&#039;s Promise&lt;br /&gt;
 |label4 = Specialties |row4 = Accuracy and optics&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet researched&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet researched&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Not yet researched&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Not yet researched&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Oden Geiger specialises in accuracy and optics modifications for suits and handheld weapons.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odyssey Engineering is a separate system from ship Engineering — it modifies suits and handheld weapons rather than ship modules, and exists only in Live (there is no Legacy equivalent). See [[Engineers]] for how the two systems are organised.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Candiaei&lt;br /&gt;
* &#039;&#039;&#039;Settlement:&#039;&#039;&#039; Ankh&#039;s Promise&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet researched.&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Not yet researched.&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: not yet researched.&lt;br /&gt;
# Travel to Ankh&#039;s Promise in Candiaei.&lt;br /&gt;
# Meet the unlock requirement: not yet researched.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prerequisite Engineer, if any, not yet researched.&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{{Draft warning}}&lt;br /&gt;
Specific suit/weapon modification names and maximum grades were not confirmed in the sources checked for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics. Confirmed specialty area: Accuracy and optics.&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Oden Geiger&#039;s confirmed specialty area is Accuracy and optics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the specific modification and maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Odyssey Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Mel_Brandon&amp;diff=499</id>
		<title>Mel Brandon</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Mel_Brandon&amp;diff=499"/>
		<updated>2026-08-08T21:29:14Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Laser and shield specialist based at The Brig in the Colonia region, reachable through Elvira Martuuk.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Mel Brandon&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (weapon / optional internal)&lt;br /&gt;
 |label2 = System |row2 = Luchtaine&lt;br /&gt;
 |label3 = Facility |row3 = The Brig&lt;br /&gt;
 |label4 = Specialties |row4 = Lasers, Shields&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Elvira Martuuk]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Elvira Martuuk&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Requires a Colonia Council invitation, obtained by selling exploration data at Dove Enigma in Colonia&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver bounty vouchers worth 100,000 CR&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Mel Brandon specialises in lasers, shields modifications. They&#039;re reached through [[Elvira Martuuk]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Luchtaine&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; The Brig&lt;br /&gt;
* &#039;&#039;&#039;Region:&#039;&#039;&#039; Colonia — this Engineer is only reachable after making the long journey to the Colonia region, separate from the core bubble.&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Elvira Martuuk.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Requires a Colonia Council invitation, obtained by selling exploration data at Dove Enigma in Colonia.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Elvira Martuuk]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: a Colonia Council invitation, obtained by selling exploration data at Dove Enigma in Colonia.&lt;br /&gt;
# Travel to The Brig in Luchtaine.&lt;br /&gt;
# Redeem or deliver **bounty vouchers worth 100,000 CR total**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mel Brandon is reachable through [[Elvira Martuuk]]. Like the other Colonia Engineers, reaching him also requires the long trip to the Colonia region itself.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Beam Laser || Damage and other variants || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Shield Generator || Strength and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Mel Brandon&#039;s confirmed specialties are Lasers, Shields, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Elvira Martuuk]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Optional Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Marsha_Hicks&amp;diff=498</id>
		<title>Marsha Hicks</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Marsha_Hicks&amp;diff=498"/>
		<updated>2026-08-08T21:29:13Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Kinetic weapon specialist based at The Watchtower in the Colonia region, reachable through The Dweller.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Marsha Hicks&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (weapon)&lt;br /&gt;
 |label2 = System |row2 = Tir&lt;br /&gt;
 |label3 = Facility |row3 = The Watchtower&lt;br /&gt;
 |label4 = Specialties |row4 = Multi-Cannon, Kinetic weapons&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[The Dweller]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from The Dweller&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Exploration rank Surveyor or higher&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 10 tonnes of mined Osmium&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Marsha Hicks specialises in multi-cannon, kinetic weapons modifications. They&#039;re reached through [[The Dweller]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Tir&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; The Watchtower&lt;br /&gt;
* &#039;&#039;&#039;Region:&#039;&#039;&#039; Colonia — this Engineer is only reachable after making the long journey to the Colonia region, separate from the core bubble.&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from The Dweller.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Exploration rank Surveyor or higher.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[The Dweller]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: exploration rank Surveyor or higher.&lt;br /&gt;
# Travel to The Watchtower in Tir.&lt;br /&gt;
# Deliver **10 tonnes of mined Osmium**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Marsha Hicks is reachable through [[The Dweller]].&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Multi-Cannon || Damage and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Marsha Hicks&#039;s confirmed specialties are Multi-Cannon, Kinetic weapons, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[The Dweller]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Marco_Qwent&amp;diff=497</id>
		<title>Marco Qwent</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Marco_Qwent&amp;diff=497"/>
		<updated>2026-08-08T21:29:13Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Power Plant specialist based in the Sirius system, reached after Elvira Martuuk.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Marco Qwent&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (core internal)&lt;br /&gt;
 |label2 = System |row2 = Sirius&lt;br /&gt;
 |label3 = Facility |row3 = Qwent Research Base&lt;br /&gt;
 |label4 = Specialties |row4 = Power Plant&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = [[Elvira Martuuk]]&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Referral from Elvira Martuuk&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Requires a Sirius Corporation system permit in addition to the referral; specific reputation threshold not yet confirmed&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Modular Terminals&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Marco Qwent specialises in power plant modifications. They&#039;re reached through [[Elvira Martuuk]]. See Engineer Unlock Chain below for their relationship to [[Professor Palin]] and [[Chloe Sedesi]].&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Sirius&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Qwent Research Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Referral from Elvira Martuuk.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Requires a Sirius Corporation system permit in addition to the referral; specific reputation threshold not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Have [[Elvira Martuuk]] unlocked and build reputation with them to trigger the referral.&lt;br /&gt;
# Meet the invitation requirement: a Sirius Corporation system permit in addition to the referral; specific reputation threshold not yet confirmed.&lt;br /&gt;
# Travel to Qwent Research Base in Sirius.&lt;br /&gt;
# Deliver **25 units of Modular Terminals**.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Elvira Martuuk|Marco Qwent|Professor Palin}}&lt;br /&gt;
&lt;br /&gt;
Marco Qwent sits between [[Elvira Martuuk]] and [[Professor Palin]]. He&#039;s also the referral source for [[Chloe Sedesi]] near the Witch Head Nebula.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Power Plant || Output and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Marco Qwent&#039;s confirmed specialties are Power Plant, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Elvira Martuuk]] [[Professor Palin]] [[Chloe Sedesi]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Core Internal Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Lori_Jameson&amp;diff=496</id>
		<title>Lori Jameson</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Lori_Jameson&amp;diff=496"/>
		<updated>2026-08-08T21:29:12Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Scanner and utility module specialist based at Jameson Base in the Shinrarta Dezhra system.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Location and specialty cross-referenced against Inara&#039;s Engineers listing; prerequisite/discovery/invitation/unlock detail drawn primarily from a single community unlock-chain guide — see Sources|uncertainty=Maximum engineering grade and full blueprint names were not found in the sources checked; the prerequisite/discovery/invitation chain is single-sourced and not yet directly verified.}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox&lt;br /&gt;
 |name = Lori Jameson&lt;br /&gt;
 |label1 = Engineer type |row1 = Ship (utility)&lt;br /&gt;
 |label2 = System |row2 = Shinrarta Dezhra&lt;br /&gt;
 |label3 = Facility |row3 = Jameson Base&lt;br /&gt;
 |label4 = Specialties |row4 = Scanners, Utility modules&lt;br /&gt;
 |label5 = Prerequisite Engineer |row5 = Not yet confirmed&lt;br /&gt;
 |label6 = Discovery requirement |row6 = Not yet confirmed&lt;br /&gt;
 |label7 = Invitation requirement |row7 = Elite-level rank requirement in an unspecified activity&lt;br /&gt;
 |label8 = Unlock requirement |row8 = Deliver 25 units of Kongga Ale&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Lori Jameson specialises in scanners, utility modules modifications.&amp;lt;ref name=&amp;quot;inara-list&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Shinrarta Dezhra&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Jameson Base&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
Not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;inara-list&amp;quot;&amp;gt;[https://inara.cz/elite/engineers/ Engineers], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Elite-level rank requirement in an unspecified activity.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Meet the invitation requirement: community sources report an Elite-level rank requirement in an unspecified activity.&lt;br /&gt;
# Travel to Jameson Base in Shinrarta Dezhra.&lt;br /&gt;
# Deliver **25 units of Kongga Ale** — a rare regional commodity.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
&#039;&#039;No verified multi-Engineer chain to display for this Engineer.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Lori Jameson&#039;s prerequisite Engineer is not yet confirmed.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Notes !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Scanners || Range and other variants || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Full blueprint names and maximum grades were not confirmed to the same depth as the core chain pages for this pass — see [[Elite Dangerous Field Manual:Engineering Architecture]] for the site&#039;s policy on not inventing unconfirmed specifics.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at their workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Lori Jameson&#039;s confirmed specialties are Scanners, Utility modules, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade and full blueprint data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
&#039;&#039;No related Engineers confirmed for this pass.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Utility Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
	<entry>
		<id>https://edfieldmanual.com/index.php?title=Liz_Ryder&amp;diff=495</id>
		<title>Liz Ryder</title>
		<link rel="alternate" type="text/html" href="https://edfieldmanual.com/index.php?title=Liz_Ryder&amp;diff=495"/>
		<updated>2026-08-08T21:29:11Z</updated>

		<summary type="html">&lt;p&gt;EDFM Maintenance: Second pass: streamline Engineer verification caveat wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Article header|eyebrow=EDFM // Engineer|deck=Explosives and armour specialist based in the Eurybia system, and a starting point for the chain leading to Hera Tani and Broo Tarquin.}}&lt;br /&gt;
{{Article status|status=Needs review|mode=Both|version=Live and Legacy; exact patch scope not yet directly verified|reviewed=2026-08-07|reviewer=Desk research; pending direct in-game verification — see Sources|source_quality=Cross-referenced across Inara and community unlock-chain guides for the requirements below; not first-party tested|uncertainty=Maximum engineering grade was not found in the sources checked — see Available Engineering}}&lt;br /&gt;
&lt;br /&gt;
{{Engineer infobox&lt;br /&gt;
 |name = Liz Ryder&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Liz Ryder specialises in explosive weapons and defensive armour — missiles, mine launchers, torpedo pylons, and hull reinforcement/armour plating. She&#039;s a second independent starting point alongside [[Felicity Farseer]] (the two don&#039;t require each other), and is the Engineer you need before [[Hera Tani]] and, further down the chain, [[Broo Tarquin]] become reachable.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot;&amp;gt;[https://inara.cz/elite/engineer/5 Liz Ryder — engineer], Inara, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
* &#039;&#039;&#039;System:&#039;&#039;&#039; Eurybia&lt;br /&gt;
* &#039;&#039;&#039;Facility:&#039;&#039;&#039; Demolition Unlimited&lt;br /&gt;
&lt;br /&gt;
== How to Discover This Engineer ==&lt;br /&gt;
No discovery step applies — Liz Ryder is known from public sources without needing a referral from another Engineer.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Receive an Invitation ==&lt;br /&gt;
Reach &#039;&#039;&#039;Cordial&#039;&#039;&#039; or &#039;&#039;&#039;Friendly&#039;&#039;&#039; reputation with the Eurybia Blue Mafia minor faction.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Unlock This Engineer ==&lt;br /&gt;
# Reach Cordial or Friendly standing with the Eurybia Blue Mafia.&lt;br /&gt;
# Travel to Demolition Unlimited in Eurybia.&lt;br /&gt;
# Deliver &#039;&#039;&#039;200 units of Landmines&#039;&#039;&#039; — a manufactured commodity rather than cargo bought from a market; commonly sourced by destroying other Landmines or from mission rewards.&lt;br /&gt;
# Confirm access at the Engineer&#039;s terminal.&lt;br /&gt;
&lt;br /&gt;
== Engineer Unlock Chain ==&lt;br /&gt;
{{Unlock chain|Liz Ryder|Hera Tani|Broo Tarquin}}&lt;br /&gt;
&lt;br /&gt;
Liz Ryder has no prerequisite Engineer. Reputation grade 3–4 with her opens the referral to [[Hera Tani]], who in turn leads to [[Broo Tarquin]] and, per community chain guides, [[Tiana Fortune]] — the latter relationship hasn&#039;t been independently checked for this pass.&amp;lt;ref name=&amp;quot;wanderer-chain&amp;quot;&amp;gt;[https://wanderer-toolbox.com/guides/engineering-unlock/ Engineering Unlock Guide], Wanderer&#039;s Toolbox, accessed 2026-08-07.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Available Engineering ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Module !! Blueprint !! Maximum grade&lt;br /&gt;
|-&lt;br /&gt;
| Abrasion Blaster || Far-reaching || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Enzyme Missile Rack || High-yield || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Hull Reinforcement Package || Blast resistant, Heavy duty, Kinetic resistant, Lightweight, Thermal resistant || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Armour || Blast resistant, Heavy duty, Kinetic resistant, Lightweight, Thermal resistant || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Mine Launcher || High capacity, Lightweight, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Missile Rack || High capacity, Lightweight, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Seeker Missile Rack || Drag, High capacity, Lightweight, Lightweight thermal, Lockdown, Rapid fire, Sturdy || To be confirmed&lt;br /&gt;
|-&lt;br /&gt;
| Torpedo Pylon || Lightweight, Sturdy || To be confirmed&lt;br /&gt;
|}&lt;br /&gt;
Maximum grade per blueprint wasn&#039;t stated on the source checked.&amp;lt;ref name=&amp;quot;inara-liz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Experimental Effects ==&lt;br /&gt;
To be added — not confirmed in the sources checked for this pass.&lt;br /&gt;
&lt;br /&gt;
== Increasing Engineer Reputation ==&lt;br /&gt;
Reputation increases through crafting modifications at her workshop, in line with the general mechanic covered on the main [[Engineering]] page.&lt;br /&gt;
&lt;br /&gt;
== Blueprint Pinning ==&lt;br /&gt;
&#039;&#039;&#039;Fact:&#039;&#039;&#039; Liz Ryder&#039;s confirmed specialties are missile/mine/torpedo weapon variants and hull reinforcement/armour modifications, per [[#Available Engineering|Available Engineering]] above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EDFM recommendation:&#039;&#039;&#039; Not yet made. A pinning recommendation needs the maximum-grade data above filled in first — see [[Elite Dangerous Field Manual:Engineering Architecture]] for why EDFM treats pinning guidance as editorial judgement, not a database fact.&lt;br /&gt;
&lt;br /&gt;
== Related Engineers ==&lt;br /&gt;
{{Related articles|label=Related Engineers|[[Hera Tani]] [[Broo Tarquin]]}}&lt;br /&gt;
&lt;br /&gt;
== Related Guides ==&lt;br /&gt;
{{Related articles|[[Engineering]] [[Engineer Unlock Guide]]}}&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Engineering nav}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Engineers]]&lt;br /&gt;
[[Category:Weapon Engineering]]&lt;br /&gt;
[[Category:Engineering]]&lt;/div&gt;</summary>
		<author><name>EDFM Maintenance</name></author>
	</entry>
</feed>