Template:EDFM style/styles.css

Current answers. Practical procedures. Reliable reference.
Revision as of 20:29, 10 August 2026 by EDFM Site Maintenance (talk | contribs) (Ensure article prose uses full content rail)
Jump to navigation Jump to search


/* 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-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-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;
}