Template:EDFM style/styles.css: Difference between revisions

Current answers. Practical procedures. Reliable reference.
Jump to navigation Jump to search
Redesign pass 2: status module rebuilt with coloured header band + stacked metadata, panels get more padding, new .edfm-related tile component
Give edfm-panel-review the same compact/centred width as edfm-panel-draft
 
(10 intermediate revisions by 4 users not shown)
Line 1: Line 1:
/* Shared styling for EDFM's editorial templates (Article status, Draft
/* Shared styling for EDFM's editorial templates (Article status, Draft
   warning, Prerequisites, Related articles, etc. -- see each template's
   warning, Prerequisites, Related articles, etc. -- see each template's
Line 22: Line 25:
padding: 1.1em 1.3em;
padding: 1.1em 1.3em;
margin: 1.4em 0;
margin: 1.4em 0;
box-sizing: border-box;
width: 100%;
clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );
clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );
}
}
Line 36: Line 41:
border-left-color: var( --edfm-text-dim );
border-left-color: var( --edfm-text-dim );
background: var( --edfm-surface-1 );
background: var( --edfm-surface-1 );
}
/* Draft/maintenance notices are intentionally compact and centred; article
  prose/nav/tables may stretch, but these banners should not become a
  full-width strip across the whole rail. */
.edfm-panel-review:not( .edfm-status ),
.edfm-panel-draft:not( .edfm-status ),
.edfm-box.edfm-draft:not( .edfm-status ) {
max-width: 44rem !important;
margin-left: auto !important;
margin-right: auto !important;
}
}
.edfm-panel-reference {
.edfm-panel-reference {
Line 66: Line 81:


/* --- Article metadata / status module (Template:Article status) --------
/* --- Article metadata / status module (Template:Article status) --------
   Immediately communicates document trust/state: a coloured header band
   2026-08-08 second revision: a compact maintenance banner (RuneScape
   (background tint + bottom rule, not a full border) carries the big
   Wiki-style notice as the UX reference, not its markup/colours) rather
   status badge plus mode/version, then a metadata grid below with each
  than a small internal dashboard -- an icon, the bare status word (no
   field as a stacked LABEL / value pair rather than inline "Label: value"
   mode/version appended to it), one standard sentence for that status,
   text -- closer to a real status panel than a definition list. Semantic
   and a concise "Uncertain: ..." line when there's something worth
   colouring always pairs with the visible text badge -- never colour
   flagging. The full editorial record (reviewer, mode, version, source
  alone, per the site's Verification Policy. Three colour tiers cover the
  quality, the complete uncertainty note, etc.) moves to the
   seven actual status values (see Elite Dangerous Field Manual:
  .edfm-status-expand collapsible below, not removed, just no longer
  Verification Policy): positive/confirmed (Verified, Partially verified)
  competing with the article for attention. Semantic colouring always
  in cyan -- matching "cyan = verification information" from the colour
   pairs with the visible text status/icon -- never colour alone, per the
   system; attention-needed (Needs review, Draft, Upcoming) in orange --
  site's Verification Policy. Three colour tiers cover the seven actual
   matching "orange = important actions/emphasis"; and neutral/non-current
   status values (see Elite Dangerous Field Manual: Verification Policy):
  (Historical, Legacy only) in a dim neutral tone. The template sets the
  positive/confirmed (Verified, Partially verified) in cyan -- matching
  "cyan = verification information" from the colour system;
   attention-needed (Needs review, Upcoming) in orange -- matching
   "orange = important actions/emphasis"; and neutral (Draft, Historical,
  Legacy only) in a dim neutral tone -- Draft moved here from the
  attention tier, since "still being written" isn't the same kind of
  concern as "unchecked" or "not released yet". The template sets the
   modifier class via #switch. */
   modifier class via #switch. */
.edfm-status {
.edfm-status {
Line 85: Line 106:
padding: 0;
padding: 0;
overflow: hidden;
overflow: hidden;
max-width: 44rem !important;
margin: 1em auto !important;
}
}
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }
Line 90: Line 113:
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }


.edfm-status-head {
.edfm-status-banner {
display: flex;
align-items: flex-start;
gap: 0.65em;
padding: 0.55em 0.9em;
}
/* Fixed-size icon swatch -- a single CSS-safe glyph (no icon font/library),
  never the same shape as a hard error: a checkmark for the positive
  tier, a plain "!" (not a red triangle) for attention, a quiet "i" for
  neutral. "Needs review" means not fully verified yet, not wrong. */
.edfm-status-icon {
flex: 0 0 auto;
width: 1.45em;
height: 1.45em;
display: flex;
display: flex;
flex-wrap: wrap;
align-items: center;
align-items: baseline;
justify-content: center;
gap: 0.4em 1.2em;
border-radius: 2px;
padding: 0.9em 1.3em;
border-bottom: 1px solid var( --edfm-border-soft );
/* TemplateStyles' CSS sanitizer rejects var() specifically inside
  font-family (even though it's otherwise valid CSS) -- spelled out
  literally here to match --edfm-mono in MediaWiki:Common.css. */
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-weight: 700;
font-size: 0.85em;
line-height: 1;
}
.edfm-status--positive .edfm-status-icon { background: var( --edfm-status-positive-bg ); color: var( --edfm-status-positive ); }
.edfm-status--attention .edfm-status-icon { background: var( --edfm-status-attention-bg ); color: var( --edfm-status-attention ); }
.edfm-status--neutral .edfm-status-icon { background: var( --edfm-status-neutral-bg ); color: var( --edfm-text-dim ); }
.edfm-status-banner-body {
flex: 1 1 auto;
min-width: 0;
}
}
.edfm-status--positive .edfm-status-head { background: var( --edfm-status-positive-bg ); }
.edfm-status-heading {
.edfm-status--attention .edfm-status-head { background: var( --edfm-status-attention-bg ); }
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
.edfm-status--neutral .edfm-status-head { background: var( --edfm-status-neutral-bg ); }
.edfm-status-badge {
font-weight: 700;
font-weight: 700;
letter-spacing: 0.06em;
letter-spacing: 0.06em;
text-transform: uppercase;
text-transform: uppercase;
font-size: 1.15em;
font-size: 0.9em;
margin-bottom: 0.2em;
}
}
.edfm-status--positive .edfm-status-badge { color: var( --edfm-status-positive ); }
.edfm-status--positive .edfm-status-heading { color: var( --edfm-status-positive ); }
.edfm-status--attention .edfm-status-badge { color: var( --edfm-status-attention ); }
.edfm-status--attention .edfm-status-heading { color: var( --edfm-status-attention ); }
.edfm-status--neutral .edfm-status-badge { color: var( --edfm-text ); }
.edfm-status--neutral .edfm-status-heading { color: var( --edfm-text ); }
.edfm-status-item {
.edfm-status-message {
margin: 0 0 0.2em;
color: var( --edfm-text-muted );
color: var( --edfm-text-muted );
font-size: 0.8em;
font-size: 0.86em;
letter-spacing: 0.04em;
line-height: 1.35;
text-transform: uppercase;
}
.edfm-status-uncertain {
margin: 0;
color: var( --edfm-text );
font-size: 0.86em;
line-height: 1.35;
}
.edfm-status-uncertain-label {
font-weight: 700;
color: var( --edfm-text-dim );
}
}
.edfm-status-details {
.edfm-status-details {
display: grid;
display: grid;
grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );
grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );
gap: 1em 1.5em;
gap: 0.85em 1.25em;
margin: 0;
margin: 0;
padding: 1.1em 1.3em;
padding: 0.85em 1em;
}
}
.edfm-status-row {
.edfm-status-row {
Line 131: Line 181:
flex-direction: column;
flex-direction: column;
gap: 0.2em;
gap: 0.2em;
/* Grid items default to min-width: auto, which floors their shrink at
  their content's min-content size -- a long slash-joined run like
  "prerequisite/discovery/invitation/unlock" (no spaces, so no natural
  break point in some engines) could floor a column wider than its
  track and spill into the next one at in-between widths (2026-08-08:
  found at ~820px on The Dweller). Letting the item shrink below that
  floor, paired with the dd's own overflow-wrap below, keeps long
  values inside their own column at every width instead. */
min-width: 0;
}
}
.edfm-status-row dt {
.edfm-status-row dt {
Line 148: Line 207:
color: var( --edfm-text );
color: var( --edfm-text );
font-size: 0.98em;
font-size: 0.98em;
overflow-wrap: anywhere;
}
}
@media ( max-width: 800px ) {
@media ( max-width: 800px ) {
Line 170: Line 230:
.edfm-related {
.edfm-related {
margin: 1.6em 0;
margin: 1.6em 0;
width: 100%;
box-sizing: border-box;
}
}
.edfm-related-label {
.edfm-related-label {
Line 179: Line 241:
color: var( --edfm-text-dim );
color: var( --edfm-text-dim );
margin-bottom: 0.6em;
margin-bottom: 0.6em;
}
.edfm-related-links {
display: grid;
grid-template-columns: repeat( auto-fit, minmax( 12rem, 1fr ) );
gap: 0.7em;
}
}
.edfm-related-links a {
.edfm-related-links a {
display: inline-flex;
display: flex;
align-items: center;
align-items: center;
justify-content: space-between;
gap: 0.5em;
gap: 0.5em;
background: var( --edfm-surface-2 );
background: var( --edfm-surface-2 );
border-left: 2px solid var( --edfm-cyan );
border-left: 2px solid var( --edfm-cyan );
padding: 0.65em 1.1em;
padding: 0.65em 1.1em;
margin: 0 0.7em 0.7em 0;
margin: 0;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-weight: 700;
font-weight: 700;
Line 204: Line 272:
transform: translateY( -1px );
transform: translateY( -1px );
}
}
/* --- "View verification details" collapsible ---------------------------
  Wraps everything beyond the compact banner (Status, Last reviewed,
  Reviewer, Game mode, Version coverage, Source quality, the full Known
  uncertainty text, and the optional Legacy differences/Recent changes/
  Verification notes fields) behind a native mw-collapsible toggle
  instead of a new dependency -- jquery.makeCollapsible
  is core MediaWiki, loaded on every page by mediawiki.page.ready. For a
  plain <div> its default behaviour prepends a
  <button class="mw-collapsible-toggle"><span class="mw-collapsible-text">
  as the first child and wraps the remaining content in
  .mw-collapsible-content -- reset here to a plain full-width text row
  matching this module's mono/uppercase metadata language, instead of the
  browser's default button chrome, which would render as a jarring light
  box against this site's dark surfaces (same class of fix as the Save
  dialog/toolbar/#filetoc native-component passes elsewhere on this
  site). */
.edfm-status-expand {
border-top: 1px solid var( --edfm-border-soft );
}
.edfm-status-expand > .mw-collapsible-toggle {
display: block;
width: 100%;
background: none;
border: none;
margin: 0;
padding: 0.45em 1em;
text-align: left;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-size: 0.75em;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var( --edfm-text-dim );
cursor: pointer;
}
.edfm-status-expand > .mw-collapsible-toggle:hover,
.edfm-status-expand > .mw-collapsible-toggle:focus {
color: var( --edfm-orange );
outline: none;
}
.edfm-status-expand .mw-collapsible-content .edfm-status-details {
padding-top: 0.3em;
}
/* --- Fact / Field Manual Recommendation callouts ------------------------
  Template:Fact and Template:Field manual recommendation -- a small
  labelled distinction between a verified fact and EDFM's own editorial
  judgement (see Elite Dangerous Field Manual:Engineering Architecture on
  why pinning/strategy guidance is treated as editorial, not database
  fact). Deliberately reuses the accent-rail + cyan/orange language
  already used everywhere else on this site (status positive/attention,
  infobox labels, related-link hover) instead of inventing a new callout
  style: cyan marks a verified fact ("cyan = verification information"),
  orange marks editorial guidance ("orange = important actions/
  emphasis") -- see the colour rules this mirrors in this file's own
  .edfm-status-- modifiers above. */
.edfm-fact-recommendation {
border-left: 3px solid var( --edfm-border );
padding: 0.5em 0.9em;
margin: 0.8em 0;
}
.edfm-fact-recommendation--fact {
border-left-color: var( --edfm-cyan );
}
.edfm-fact-recommendation--recommendation {
border-left-color: var( --edfm-orange );
}
.edfm-fact-recommendation-label {
display: block;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-weight: 700;
font-size: 0.72em;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 0.3em;
}
.edfm-fact-recommendation--fact .edfm-fact-recommendation-label {
color: var( --edfm-cyan );
}
.edfm-fact-recommendation--recommendation .edfm-fact-recommendation-label {
color: var( --edfm-orange );
}
.edfm-fact-recommendation-body {
color: var( --edfm-text );
}
/* ===========================================================================
  2026-08-10 ARTICLE RAIL WIDTH GUARANTEE
  =========================================================================== */
/* TemplateStyles is loaded after site Common.css on article pages, so this is
  the late-cascade guard that makes ordinary article prose and section blocks
  use the full article rail. Only maintenance/status/draft notice components
  keep their intentionally compact centered width. */
.mw-parser-output > p,
.mw-parser-output > ul,
.mw-parser-output > ol,
.mw-parser-output > dl,
.mw-parser-output > div {
width: 100% !important;
max-width: none !important;
box-sizing: border-box;
}
.mw-parser-output > .edfm-status,
.mw-parser-output > .edfm-panel-review,
.mw-parser-output > .edfm-panel-draft,
.mw-parser-output > .edfm-draft {
width: auto !important;
max-width: 44rem !important;
}
.mw-parser-output p,
.mw-parser-output li,
.mw-parser-output dd {
max-width: none !important;
}
/* ===========================================================================
  2026-08-12 GUIDED ENCYCLOPEDIA COMPONENTS
  =========================================================================== */
.edfm-guide-info,
.edfm-guide-requirements,
.edfm-guide-step,
.edfm-guide-callout,
.edfm-context-media,
.edfm-what-next {
width: 100%;
box-sizing: border-box;
}
.edfm-guide-info {
border-left: 4px solid var( --edfm-cyan );
background: linear-gradient( 135deg, rgba( 66, 199, 217, 0.1 ), rgba( 8, 13, 17, 0.94 ) );
padding: 1.05rem 1.2rem;
margin: 1.35rem 0;
clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );
}
.edfm-guide-info-title,
.edfm-guide-requirements-title,
.edfm-what-next-title {
margin: 0 0 0.75rem;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-size: 0.78rem;
font-weight: 800;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var( --edfm-cyan );
}
.edfm-guide-info dl,
.edfm-guide-requirements dl {
display: grid;
grid-template-columns: minmax( 10rem, 0.34fr ) 1fr;
gap: 0.45rem 0.9rem;
margin: 0;
}
.edfm-guide-info dt,
.edfm-guide-requirements dt {
float: none;
clear: none;
margin: 0;
font-weight: 800;
color: var( --edfm-text );
}
.edfm-guide-info dd,
.edfm-guide-requirements dd {
margin: 0;
color: var( --edfm-text-muted );
}
.edfm-guide-requirements {
border-left: 4px solid var( --edfm-blue );
background: var( --edfm-surface-2 );
padding: 1rem 1.2rem;
margin: 1.35rem 0;
}
.edfm-guide-requirements-title {
color: var( --edfm-blue );
}
.edfm-guide-step {
position: relative;
margin: 1.55rem 0;
padding: 1.05rem 1.15rem 1.05rem 1.35rem;
border-left: 4px solid var( --edfm-orange );
background: rgba( 12, 18, 23, 0.92 );
box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.04 );
}
.edfm-guide-step-heading {
display: flex;
align-items: baseline;
gap: 0.6rem;
margin: 0 0 0.65rem;
}
.edfm-guide-step-number {
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-size: 0.82rem;
font-weight: 900;
color: var( --edfm-orange );
}
.edfm-guide-step-title {
font-size: 1.15rem;
font-weight: 800;
color: var( --edfm-text );
}
.edfm-guide-step-body {
color: var( --edfm-text );
}
.edfm-guide-step-body > :first-child,
.edfm-guide-callout-body > :first-child,
.edfm-context-media-body > :first-child,
.edfm-what-next-body > :first-child { margin-top: 0; }
.edfm-guide-step-body > :last-child,
.edfm-guide-callout-body > :last-child,
.edfm-context-media-body > :last-child,
.edfm-what-next-body > :last-child { margin-bottom: 0; }
.edfm-guide-callout {
border-left: 4px solid var( --edfm-cyan );
background: rgba( 66, 199, 217, 0.08 );
padding: 0.8rem 1rem;
margin: 1rem 0;
}
.edfm-guide-callout--warning {
border-left-color: var( --edfm-orange );
background: rgba( 255, 138, 0, 0.1 );
}
.edfm-guide-callout--important {
border-left-color: var( --edfm-blue );
background: rgba( 89, 147, 255, 0.1 );
}
.edfm-guide-callout--tip {
border-left-color: var( --edfm-cyan );
background: rgba( 66, 199, 217, 0.08 );
}
.edfm-guide-callout--field-note {
border-left-color: var( --edfm-text-dim );
background: rgba( 108, 122, 130, 0.1 );
}
.edfm-guide-callout-label {
display: block;
margin-bottom: 0.35rem;
font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
font-size: 0.72rem;
font-weight: 900;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var( --edfm-cyan );
}
.edfm-context-media {
display: grid;
grid-template-columns: minmax( 0, 1fr ) minmax( 16rem, 0.42fr );
gap: 1rem;
align-items: start;
margin: 1.25rem 0;
padding: 1rem;
background: var( --edfm-surface-1 );
border: 1px solid var( --edfm-border );
}
.edfm-context-media--left {
grid-template-columns: minmax( 16rem, 0.42fr ) minmax( 0, 1fr );
}
.edfm-context-media--left .edfm-context-media-figure { order: -1; }
.edfm-context-media-figure {
margin: 0;
}
.edfm-context-media-figure img,
.edfm-context-media-figure .mw-file-element {
max-width: 100%;
height: auto;
border: 1px solid var( --edfm-border );
background: #05080b;
}
.edfm-context-media-caption {
margin-top: 0.45rem;
font-size: 0.86rem;
color: var( --edfm-text-muted );
}
.edfm-what-next {
border-left: 4px solid var( --edfm-cyan );
background: var( --edfm-surface-2 );
padding: 1rem 1.15rem;
margin: 1.6rem 0;
}
.edfm-what-next-title { color: var( --edfm-orange ); }
.edfm-what-next-body ul,
.edfm-what-next-body ol { margin-bottom: 0; }
@media ( max-width: 720px ) {
.edfm-guide-info dl,
.edfm-guide-requirements dl,
.edfm-context-media,
.edfm-context-media--left {
display: block;
}
.edfm-guide-info dt,
.edfm-guide-requirements dt { margin-top: 0.55rem; }
.edfm-guide-info dt:first-child,
.edfm-guide-requirements dt:first-child { margin-top: 0; }
.edfm-guide-info dd,
.edfm-guide-requirements dd { margin-top: 0.1rem; }
.edfm-context-media-figure { margin-top: 0.8rem; }
}
.edfm-guide-callout--warning .edfm-guide-callout-label { color: var( --edfm-orange ); }
.edfm-guide-callout--important .edfm-guide-callout-label { color: var( --edfm-blue ); }
.edfm-guide-callout--tip .edfm-guide-callout-label { color: var( --edfm-cyan ); }
.edfm-guide-callout--field-note .edfm-guide-callout-label { color: var( --edfm-text-dim ); }

Latest revision as of 22:25, 19 August 2026



/* Shared styling for EDFM's editorial templates (Article status, Draft
   warning, Prerequisites, Related articles, etc. -- see each template's
   own page for which classes it uses). Freely uses the --edfm-* custom
   properties defined in MediaWiki:Common.css -- see the note there under
   "6. Panels" for why these classes live only in this file and not
   duplicated in Common.css too.

   2026-08-07 SECOND PASS: panels keep the accent-rail + corner-cut
   language from the first pass (both are explicitly the "hierarchy
   without a full border around everything" technique this redesign asks
   for) but get noticeably more padding/breathing room; the status module
   is rebuilt with a coloured header band and stacked label/value metadata
   instead of a plain left-rail box with inline "Label: value" text; and a
   new .edfm-related component replaces the old plain notice-style
   "Related articles" bar with a small tile row. */

.edfm-box,
.edfm-panel {
	border-left: 4px solid var( --edfm-cyan );
	background: var( --edfm-surface-2 );
	color: var( --edfm-text );
	padding: 1.1em 1.3em;
	margin: 1.4em 0;
	box-sizing: border-box;
	width: 100%;
	clip-path: polygon( 0 0, calc( 100% - 10px ) 0, 100% 10px, 100% 100%, 0 100% );
}
.edfm-panel-info {
	border-left-color: var( --edfm-cyan );
}
.edfm-panel-warning,
.edfm-box.edfm-warning {
	border-left-color: var( --edfm-orange );
	background: #201a12;
}
.edfm-panel-draft,
.edfm-box.edfm-draft {
	border-left-color: var( --edfm-text-dim );
	background: var( --edfm-surface-1 );
}
/* Draft/maintenance notices are intentionally compact and centred; article
   prose/nav/tables may stretch, but these banners should not become a
   full-width strip across the whole rail. */
.edfm-panel-review:not( .edfm-status ),
.edfm-panel-draft:not( .edfm-status ),
.edfm-box.edfm-draft:not( .edfm-status ) {
	max-width: 44rem !important;
	margin-left: auto !important;
	margin-right: auto !important;
}
.edfm-panel-reference {
	border-left-color: var( --edfm-blue );
}
.edfm-box.edfm-disclaimer {
	border-left-color: var( --edfm-orange );
	font-size: 0.92em;
}
.edfm-box dl,
.edfm-panel dl {
	margin: 0;
}
.edfm-box dt,
.edfm-panel dt {
	font-weight: bold;
	float: left;
	clear: left;
	margin-right: 0.5em;
	color: var( --edfm-text );
}
.edfm-box dd,
.edfm-panel dd {
	margin-left: 11em;
}
.edfm-inline-flag {
	font-style: italic;
	color: var( --edfm-cyan );
}

/* --- Article metadata / status module (Template:Article status) --------
   2026-08-08 second revision: a compact maintenance banner (RuneScape
   Wiki-style notice as the UX reference, not its markup/colours) rather
   than a small internal dashboard -- an icon, the bare status word (no
   mode/version appended to it), one standard sentence for that status,
   and a concise "Uncertain: ..." line when there's something worth
   flagging. The full editorial record (reviewer, mode, version, source
   quality, the complete uncertainty note, etc.) moves to the
   .edfm-status-expand collapsible below, not removed, just no longer
   competing with the article for attention. Semantic colouring always
   pairs with the visible text status/icon -- never colour alone, per the
   site's Verification Policy. Three colour tiers cover the seven actual
   status values (see Elite Dangerous Field Manual: Verification Policy):
   positive/confirmed (Verified, Partially verified) in cyan -- matching
   "cyan = verification information" from the colour system;
   attention-needed (Needs review, Upcoming) in orange -- matching
   "orange = important actions/emphasis"; and neutral (Draft, Historical,
   Legacy only) in a dim neutral tone -- Draft moved here from the
   attention tier, since "still being written" isn't the same kind of
   concern as "unchecked" or "not released yet". The template sets the
   modifier class via #switch. */
.edfm-status {
	border-left-width: 4px;
	border-left-style: solid;
	padding: 0;
	overflow: hidden;
	max-width: 44rem !important;
	margin: 1em auto !important;
}
.edfm-status--positive { border-left-color: var( --edfm-status-positive ); }
.edfm-status--attention { border-left-color: var( --edfm-status-attention ); }
.edfm-status--neutral { border-left-color: var( --edfm-status-neutral ); }

.edfm-status-banner {
	display: flex;
	align-items: flex-start;
	gap: 0.65em;
	padding: 0.55em 0.9em;
}
/* Fixed-size icon swatch -- a single CSS-safe glyph (no icon font/library),
   never the same shape as a hard error: a checkmark for the positive
   tier, a plain "!" (not a red triangle) for attention, a quiet "i" for
   neutral. "Needs review" means not fully verified yet, not wrong. */
.edfm-status-icon {
	flex: 0 0 auto;
	width: 1.45em;
	height: 1.45em;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 2px;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-weight: 700;
	font-size: 0.85em;
	line-height: 1;
}
.edfm-status--positive .edfm-status-icon { background: var( --edfm-status-positive-bg ); color: var( --edfm-status-positive ); }
.edfm-status--attention .edfm-status-icon { background: var( --edfm-status-attention-bg ); color: var( --edfm-status-attention ); }
.edfm-status--neutral .edfm-status-icon { background: var( --edfm-status-neutral-bg ); color: var( --edfm-text-dim ); }
.edfm-status-banner-body {
	flex: 1 1 auto;
	min-width: 0;
}
.edfm-status-heading {
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-size: 0.9em;
	margin-bottom: 0.2em;
}
.edfm-status--positive .edfm-status-heading { color: var( --edfm-status-positive ); }
.edfm-status--attention .edfm-status-heading { color: var( --edfm-status-attention ); }
.edfm-status--neutral .edfm-status-heading { color: var( --edfm-text ); }
.edfm-status-message {
	margin: 0 0 0.2em;
	color: var( --edfm-text-muted );
	font-size: 0.86em;
	line-height: 1.35;
}
.edfm-status-uncertain {
	margin: 0;
	color: var( --edfm-text );
	font-size: 0.86em;
	line-height: 1.35;
}
.edfm-status-uncertain-label {
	font-weight: 700;
	color: var( --edfm-text-dim );
}
.edfm-status-details {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 11em, 1fr ) );
	gap: 0.85em 1.25em;
	margin: 0;
	padding: 0.85em 1em;
}
.edfm-status-row {
	display: flex;
	flex-direction: column;
	gap: 0.2em;
	/* Grid items default to min-width: auto, which floors their shrink at
	   their content's min-content size -- a long slash-joined run like
	   "prerequisite/discovery/invitation/unlock" (no spaces, so no natural
	   break point in some engines) could floor a column wider than its
	   track and spill into the next one at in-between widths (2026-08-08:
	   found at ~820px on The Dweller). Letting the item shrink below that
	   floor, paired with the dd's own overflow-wrap below, keeps long
	   values inside their own column at every width instead. */
	min-width: 0;
}
.edfm-status-row dt {
	color: var( --edfm-text-dim );
	font-weight: 700;
	white-space: nowrap;
	float: none;
	clear: none;
	margin: 0;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.7em;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.edfm-status-row dd {
	margin: 0;
	color: var( --edfm-text );
	font-size: 0.98em;
	overflow-wrap: anywhere;
}
@media ( max-width: 800px ) {
	.edfm-status-details {
		grid-template-columns: 1fr 1fr;
	}
}
@media ( max-width: 480px ) {
	.edfm-status-details {
		grid-template-columns: 1fr;
	}
}

/* --- Related content (Template:Related articles) -----------------------
   A small navigation strip instead of a generic bordered notice -- a
   quiet uppercase label above a row of individually-boxed link "tiles",
   each with a trailing arrow. Deliberately styles the `<a>` elements
   directly (not container-level flexbox) so the freeform wikitext link
   list passed into the template (arbitrary separators/whitespace between
   links) can't break the layout -- every link gets its own tile
   regardless of what, if anything, sits between them in the source. */
.edfm-related {
	margin: 1.6em 0;
	width: 100%;
	box-sizing: border-box;
}
.edfm-related-label {
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var( --edfm-text-dim );
	margin-bottom: 0.6em;
}
.edfm-related-links {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 12rem, 1fr ) );
	gap: 0.7em;
}
.edfm-related-links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5em;
	background: var( --edfm-surface-2 );
	border-left: 2px solid var( --edfm-cyan );
	padding: 0.65em 1.1em;
	margin: 0;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-weight: 700;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	font-size: 0.85em;
	text-decoration: none;
	transition: background-color 0.15s ease, border-left-color 0.15s ease, transform 0.15s ease;
}
.edfm-related-links a::after {
	content: '\2192';
}
.edfm-related-links a:hover {
	background: var( --edfm-surface-3 );
	border-left-color: var( --edfm-orange );
	transform: translateY( -1px );
}

/* --- "View verification details" collapsible ---------------------------
   Wraps everything beyond the compact banner (Status, Last reviewed,
   Reviewer, Game mode, Version coverage, Source quality, the full Known
   uncertainty text, and the optional Legacy differences/Recent changes/
   Verification notes fields) behind a native mw-collapsible toggle
   instead of a new dependency -- jquery.makeCollapsible
   is core MediaWiki, loaded on every page by mediawiki.page.ready. For a
   plain <div> its default behaviour prepends a
   <button class="mw-collapsible-toggle"><span class="mw-collapsible-text">
   as the first child and wraps the remaining content in
   .mw-collapsible-content -- reset here to a plain full-width text row
   matching this module's mono/uppercase metadata language, instead of the
   browser's default button chrome, which would render as a jarring light
   box against this site's dark surfaces (same class of fix as the Save
   dialog/toolbar/#filetoc native-component passes elsewhere on this
   site). */
.edfm-status-expand {
	border-top: 1px solid var( --edfm-border-soft );
}
.edfm-status-expand > .mw-collapsible-toggle {
	display: block;
	width: 100%;
	background: none;
	border: none;
	margin: 0;
	padding: 0.45em 1em;
	text-align: left;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var( --edfm-text-dim );
	cursor: pointer;
}
.edfm-status-expand > .mw-collapsible-toggle:hover,
.edfm-status-expand > .mw-collapsible-toggle:focus {
	color: var( --edfm-orange );
	outline: none;
}
.edfm-status-expand .mw-collapsible-content .edfm-status-details {
	padding-top: 0.3em;
}

/* --- Fact / Field Manual Recommendation callouts ------------------------
   Template:Fact and Template:Field manual recommendation -- a small
   labelled distinction between a verified fact and EDFM's own editorial
   judgement (see Elite Dangerous Field Manual:Engineering Architecture on
   why pinning/strategy guidance is treated as editorial, not database
   fact). Deliberately reuses the accent-rail + cyan/orange language
   already used everywhere else on this site (status positive/attention,
   infobox labels, related-link hover) instead of inventing a new callout
   style: cyan marks a verified fact ("cyan = verification information"),
   orange marks editorial guidance ("orange = important actions/
   emphasis") -- see the colour rules this mirrors in this file's own
   .edfm-status-- modifiers above. */
.edfm-fact-recommendation {
	border-left: 3px solid var( --edfm-border );
	padding: 0.5em 0.9em;
	margin: 0.8em 0;
}
.edfm-fact-recommendation--fact {
	border-left-color: var( --edfm-cyan );
}
.edfm-fact-recommendation--recommendation {
	border-left-color: var( --edfm-orange );
}
.edfm-fact-recommendation-label {
	display: block;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-weight: 700;
	font-size: 0.72em;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-bottom: 0.3em;
}
.edfm-fact-recommendation--fact .edfm-fact-recommendation-label {
	color: var( --edfm-cyan );
}
.edfm-fact-recommendation--recommendation .edfm-fact-recommendation-label {
	color: var( --edfm-orange );
}
.edfm-fact-recommendation-body {
	color: var( --edfm-text );
}

/* ===========================================================================
   2026-08-10 ARTICLE RAIL WIDTH GUARANTEE
   =========================================================================== */
/* TemplateStyles is loaded after site Common.css on article pages, so this is
   the late-cascade guard that makes ordinary article prose and section blocks
   use the full article rail. Only maintenance/status/draft notice components
   keep their intentionally compact centered width. */
.mw-parser-output > p,
.mw-parser-output > ul,
.mw-parser-output > ol,
.mw-parser-output > dl,
.mw-parser-output > div {
	width: 100% !important;
	max-width: none !important;
	box-sizing: border-box;
}
.mw-parser-output > .edfm-status,
.mw-parser-output > .edfm-panel-review,
.mw-parser-output > .edfm-panel-draft,
.mw-parser-output > .edfm-draft {
	width: auto !important;
	max-width: 44rem !important;
}
.mw-parser-output p,
.mw-parser-output li,
.mw-parser-output dd {
	max-width: none !important;
}

/* ===========================================================================
   2026-08-12 GUIDED ENCYCLOPEDIA COMPONENTS
   =========================================================================== */
.edfm-guide-info,
.edfm-guide-requirements,
.edfm-guide-step,
.edfm-guide-callout,
.edfm-context-media,
.edfm-what-next {
	width: 100%;
	box-sizing: border-box;
}
.edfm-guide-info {
	border-left: 4px solid var( --edfm-cyan );
	background: linear-gradient( 135deg, rgba( 66, 199, 217, 0.1 ), rgba( 8, 13, 17, 0.94 ) );
	padding: 1.05rem 1.2rem;
	margin: 1.35rem 0;
	clip-path: polygon( 0 0, calc( 100% - 12px ) 0, 100% 12px, 100% 100%, 0 100% );
}
.edfm-guide-info-title,
.edfm-guide-requirements-title,
.edfm-what-next-title {
	margin: 0 0 0.75rem;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var( --edfm-cyan );
}
.edfm-guide-info dl,
.edfm-guide-requirements dl {
	display: grid;
	grid-template-columns: minmax( 10rem, 0.34fr ) 1fr;
	gap: 0.45rem 0.9rem;
	margin: 0;
}
.edfm-guide-info dt,
.edfm-guide-requirements dt {
	float: none;
	clear: none;
	margin: 0;
	font-weight: 800;
	color: var( --edfm-text );
}
.edfm-guide-info dd,
.edfm-guide-requirements dd {
	margin: 0;
	color: var( --edfm-text-muted );
}
.edfm-guide-requirements {
	border-left: 4px solid var( --edfm-blue );
	background: var( --edfm-surface-2 );
	padding: 1rem 1.2rem;
	margin: 1.35rem 0;
}
.edfm-guide-requirements-title {
	color: var( --edfm-blue );
}
.edfm-guide-step {
	position: relative;
	margin: 1.55rem 0;
	padding: 1.05rem 1.15rem 1.05rem 1.35rem;
	border-left: 4px solid var( --edfm-orange );
	background: rgba( 12, 18, 23, 0.92 );
	box-shadow: inset 0 1px 0 rgba( 255, 255, 255, 0.04 );
}
.edfm-guide-step-heading {
	display: flex;
	align-items: baseline;
	gap: 0.6rem;
	margin: 0 0 0.65rem;
}
.edfm-guide-step-number {
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.82rem;
	font-weight: 900;
	color: var( --edfm-orange );
}
.edfm-guide-step-title {
	font-size: 1.15rem;
	font-weight: 800;
	color: var( --edfm-text );
}
.edfm-guide-step-body {
	color: var( --edfm-text );
}
.edfm-guide-step-body > :first-child,
.edfm-guide-callout-body > :first-child,
.edfm-context-media-body > :first-child,
.edfm-what-next-body > :first-child { margin-top: 0; }
.edfm-guide-step-body > :last-child,
.edfm-guide-callout-body > :last-child,
.edfm-context-media-body > :last-child,
.edfm-what-next-body > :last-child { margin-bottom: 0; }
.edfm-guide-callout {
	border-left: 4px solid var( --edfm-cyan );
	background: rgba( 66, 199, 217, 0.08 );
	padding: 0.8rem 1rem;
	margin: 1rem 0;
}
.edfm-guide-callout--warning {
	border-left-color: var( --edfm-orange );
	background: rgba( 255, 138, 0, 0.1 );
}
.edfm-guide-callout--important {
	border-left-color: var( --edfm-blue );
	background: rgba( 89, 147, 255, 0.1 );
}
.edfm-guide-callout--tip {
	border-left-color: var( --edfm-cyan );
	background: rgba( 66, 199, 217, 0.08 );
}
.edfm-guide-callout--field-note {
	border-left-color: var( --edfm-text-dim );
	background: rgba( 108, 122, 130, 0.1 );
}
.edfm-guide-callout-label {
	display: block;
	margin-bottom: 0.35rem;
	font-family: 'JetBrains Mono', 'Fira Code', Consolas, 'SF Mono', Menlo, 'Courier New', monospace;
	font-size: 0.72rem;
	font-weight: 900;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var( --edfm-cyan );
}
.edfm-context-media {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) minmax( 16rem, 0.42fr );
	gap: 1rem;
	align-items: start;
	margin: 1.25rem 0;
	padding: 1rem;
	background: var( --edfm-surface-1 );
	border: 1px solid var( --edfm-border );
}
.edfm-context-media--left {
	grid-template-columns: minmax( 16rem, 0.42fr ) minmax( 0, 1fr );
}
.edfm-context-media--left .edfm-context-media-figure { order: -1; }
.edfm-context-media-figure {
	margin: 0;
}
.edfm-context-media-figure img,
.edfm-context-media-figure .mw-file-element {
	max-width: 100%;
	height: auto;
	border: 1px solid var( --edfm-border );
	background: #05080b;
}
.edfm-context-media-caption {
	margin-top: 0.45rem;
	font-size: 0.86rem;
	color: var( --edfm-text-muted );
}
.edfm-what-next {
	border-left: 4px solid var( --edfm-cyan );
	background: var( --edfm-surface-2 );
	padding: 1rem 1.15rem;
	margin: 1.6rem 0;
}
.edfm-what-next-title { color: var( --edfm-orange ); }
.edfm-what-next-body ul,
.edfm-what-next-body ol { margin-bottom: 0; }
@media ( max-width: 720px ) {
	.edfm-guide-info dl,
	.edfm-guide-requirements dl,
	.edfm-context-media,
	.edfm-context-media--left {
		display: block;
	}
	.edfm-guide-info dt,
	.edfm-guide-requirements dt { margin-top: 0.55rem; }
	.edfm-guide-info dt:first-child,
	.edfm-guide-requirements dt:first-child { margin-top: 0; }
	.edfm-guide-info dd,
	.edfm-guide-requirements dd { margin-top: 0.1rem; }
	.edfm-context-media-figure { margin-top: 0.8rem; }
}

.edfm-guide-callout--warning .edfm-guide-callout-label { color: var( --edfm-orange ); }
.edfm-guide-callout--important .edfm-guide-callout-label { color: var( --edfm-blue ); }
.edfm-guide-callout--tip .edfm-guide-callout-label { color: var( --edfm-cyan ); }
.edfm-guide-callout--field-note .edfm-guide-callout-label { color: var( --edfm-text-dim ); }