MediaWiki:Common.css: Difference between revisions

Content deleted Content added
No edit summary
Tag: Reverted
No edit summary
 
(17 intermediate revisions by the same user not shown)
Line 1,087:
/* ── Theme: EVERY wikitable, any type ── */
.wikitable { width: 100% !important; }
 
/* ── Chunk Info (summary Phase 3): per-chunk tags + data-items box.
Infobox geometry — narrow right float in the data voice — as the
ONE exception to the full-width wikitable clamp above (higher
specificity carries the !important override). Emitted by the
summary renderer as class-only markup. ── */
.mw-parser-output table.chunkinfo {
width: var(--ed-infobox-w) !important;
min-width: 0 !important;
/* the list-geometry rule positions every li (for the ::before markers),
and positioned boxes paint ABOVE floats — bullets flowing beside the
box were swallowing its clicks. Lift the box one stacking level. */
position: relative;
z-index: 1;
}
@media (min-width: 640px) {
.mw-parser-output table.chunkinfo {
float: right; clear: right;
margin: 0.5em 0 0.5em 1em;
}
}
 
table.wikitable {
Line 1,250 ⟶ 1,271:
================================================================= */
 
/* ── Webfonts. TEST: PT Serif primaryis THE site face (static 400/700 + italics — NO
truedeliberately NO 600, so: semibold requests snap to true 700), STIX Two Text keptgiving
headers/totals/labels their firm contrast). STIX Two Text stays
loaded as the fallback/comparison face. To revert to STIX-primary,
loaded as glyph fallback. @font-face is safe anywhere in
drop the four PT Serif blocks and put "STIX Two Text" first in
ResourceLoader output — never use @import here (gadget CSS is
--ed-font. @font-face is safe anywhere in ResourceLoader output —
concatenated BEFORE Common.css and breaks it, per T165040).
never use @import here (gadget CSS is concatenated BEFORE Common.css
and breaks it, per T165040). Georgia is the offline fallback. Production hardening: self-host
Production hardening: self-host the woff2 files on the S3 bucket. ── */
@font-face {
font-family: "PT Serif";
Line 1,323 ⟶ 1,344:
the old values). ── */
:root {
--ed-font: "PT Serif", "STIX Two Text", Georgia, "Times New Roman", serif; /* TEST: PT Serif primary */
--text-dark: #0d0d0d; /* THE ink: all text + all lines */
--ed-underline: #ccc1b7; /* resting link underline tint */
Line 1,332 ⟶ 1,353:
the float) — the old --ed-measure prose cap
was retired 2026-07 */
--ed-body: 1.0625rem; /* body size — 17px:, STIXuser-validated Twowith TextPT has a smallerSerif
x-height(inherited thanfrom the oldSTIX Source Serif 4, sox-height +1pxcompensation;
restoreskept thedeliberately: same"renders optical size (was 1remfine") */
--ed-small: 0.875rem; /* THE small size: tables, infobox, TOC, footer — 14px */
--ed-h-ratio: 1.15; /* HEADING LADDER — GEOMETRIC: each level is the
14px, same optical compensation (was 0.8125rem) */
one below × this ratio (h6 = body ×1, h5 ×r,
h4 ×r², h3 ×r³, h2 ×r⁴ ≈ 17/19.6/22.5/25.9/
29.7px). A constant RATIO, not a constant
increment: size perception is ratio-based, so
an arithmetic ladder (+0.2 each) compresses at
the top — h2/h3 would sit only 12% apart while
h5/h6 sat 20% apart. h6 is anchored AT body
size (it is the chunk/unit heading, and table
captions twin it); h1 stays off the ladder at
2.4rem — page identity, with the one dark rule
(leaves h1/h2 ≈ 1.29 of separation).
Expressed as repeated multiplication of
--ed-body, NOT em: an em resolves against a
parent's size and would silently scale inside
tables/divs. */
--ed-title-gap: 2.1rem; /* CALIBRATION: moves the title rule DOWN */
--ed-heading-gap: 4rem; /* space BEFORE h2 AND h3 — the SAME for both (rem, not em,
Line 1,408 ⟶ 1,444:
body { font-family: var(--ed-font); }
 
/* ── Tagline ("Unleashing intelligence", the .mw-logo::after): NO underline
unusualand onNO ahover taglineeffecthoverit feedbackreads isas thebranding, textnot itselfa warminglink to(resting ink is
coral (resting ink is set in §3; the logo still navigates home on click). ── */
.mw-logo:hover::after { color: var(--ed-accent) !important; }
 
/* ── Logo on the TOC axis. Measured on the live DOM (1120px viewport):
Line 1,538 ⟶ 1,573:
.mw-parser-output div[style*="overflow-x"] > .copy-table-scroll { margin-top: 0 !important; }
 
/* caption = the table's TITLE asin athe quieth6 EYEBROWvoice (thebold body sharedtext, kickerno
uppercase/letter-spacing — the old eyebrow treatment is retired here). */
treatment — breadcrumb / infobox header): uppercase sans, letter-spaced,
secondary ink, with air below before the grid. No glyph. */
table.wikitable caption {
font-family: var(--ed-font);
font-size: var(--ed-smallbody);
font-weight: 600700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--text-dark);
text-align: left;
padding-bottom: 0.7em5em; /* CALIBRATION: caption→grid air (~8.5px at 17px;
was 0.2em = too tight per user) */
}
 
Line 1,655 ⟶ 1,688:
.skin-minerva .content h2 {
font-family: var(--ed-font);
font-size: 1.875rem;calc(var(--ed-body) * var(--ed-h-ratio) /* 30px */var(--ed-h-ratio)
* var(--ed-h-ratio) * var(--ed-h-ratio)); /* r⁴ ≈ 30px */
line-height: 1.25;
font-weight: 600;
Line 1,670 ⟶ 1,704:
.skin-minerva .content h3 {
font-family: var(--ed-font);
font-size: 1.5rem;calc(var(--ed-body) * var(--ed-h-ratio) /* 24px */var(--ed-h-ratio)
* var(--ed-h-ratio)); /* r³ ≈ 26px */
font-weight: 600;
color: var(--text-dark) !important;
Line 1,677 ⟶ 1,712:
margin-bottom: 0.6em;
}
/* h4/h5: their own rungs on the ladder — at body size they were
indistinguishable from bold prose (and from h6) once the one-font
consolidation erased the old serif/sans distinction. Shared 2rem gap
above = half the h2/h3 gap (same shared-gap logic). */
.mw-body-content h4, .mw-body-content h5 {
font-family: var(--ed-font);
font-weight: 700;
font-size: var(--ed-body); /* body-size headings track the body token */
font-weight: 600;
color: var(--text-dark) !important;
margin-top: 2rem;
margin-bottom: 0.4em;
}
.mw-body-content h4 {
font-size: calc(var(--ed-body) * var(--ed-h-ratio) * var(--ed-h-ratio)); /* r² ≈ 22px */
}
.mw-body-content h5 {
font-size: calc(var(--ed-body) * var(--ed-h-ratio)); /* r ≈ 20px */
}
/* h6 = bold BODY text (serif, body size), not a sans heading */
Line 1,690 ⟶ 1,736:
color: var(--text-dark) !important;
}
/* h6 spacing: MORENORMAL paragraph spacing before, LESS after(0.5em, This wiki wraps headings inVector's ap
default), LESS after. The old "MORE before" (1.8em) predates the
.mw-heading<N> div that owns the layout margin (cf. the .mw-heading2 rule
chunk-page marker: the marker line now precedes every h6 and carries
above), so the margin MUST sit on the wrapper — also on the bare h6 as a
the visual separation itself, so a wide h6 top margin double-spaced
fallback for un-wrapped DOM. */
the sections (user rule 2026-07-20). This wiki wraps headings in a
.mw-heading<N> div that owns the layout margin (cf. the .mw-heading2
rule above), so the margin MUST sit on the wrapper — also on the
bare h6 as a fallback for un-wrapped DOM. */
.mw-body-content h6,
.mw-body-content .mw-heading6 {
margin: 10.8em5em 0 0.2em !important;
}
/* pull the block right after an h6 up close, so "less space after" holds even
Line 1,944 ⟶ 1,994:
line-height: 1.5; /* = the infobox / wikitable line-height */
}
/* level-2+ sits flush under level-1 (numbersmarkers aligned on one axis); flex-basis
100% drops the sublist onto its own row below the parent's title + chevron */
.vector-toc .vector-toc-list-item > .vector-toc-list {
Line 1,970 ⟶ 2,020:
}
/* NO section numbers — Vector ships .vector-toc-numb display:none and we no
longer re-show it. Depth is carried by DASHTREE markers instead:, angenerated en dashas
the first flex item of the text row off Vector's per-level li classes:
per nesting level ("–" children, "––" grandchildren), generated as the
a CSS BORDER-DRAWN squared elbow (└ shape) — vertical stub into a
first flex item of the text row (the slot the number used to occupy) off
horizontal arm, ONE continuous 1px ink stroke by construction. Glyph
Vector's per-level li classes. Top-level entries carry no marker. */
attempts ("|–" pipes, U+2514 └ from a fallback font) were rejected: two
.vector-toc .vector-toc-level-2 > .vector-toc-link .vector-toc-text::before { content: "\2013"; }
fonts never join their strokes. Depth = the ARM LENGTH (child short,
.vector-toc .vector-toc-level-3 > .vector-toc-link .vector-toc-text::before { content: "\2013\2013"; }
grandchild longer). Top-level entries carry no marker. */
.vector-toc .vector-toc-level-4 > .vector-toc-link .vector-toc-text::before { content: "\2013\2013\2013"; }
.vector-toc .vector-toc-level-2 > .vector-toc-link .vector-toc-text::before,
.vector-toc .vector-toc-level-3 > .vector-toc-link .vector-toc-text::before,
.vector-toc .vector-toc-level-4 > .vector-toc-link .vector-toc-text::before {
content: "";
flex: 0 0 auto;
height: 0.55em; /* vertical stub height */
border-left: 1px solid currentColor;
border-bottom: 1px solid currentColor;
position: relative;
bottom: 0.28em; /* CALIBRATION: lifts the arm off the text
baseline onto the dash axis (an empty flex
item baseline-aligns its bottom edge) */
margin-right: 0.4em;
white-space: nowrap;
letter-spacing: -0.08em; /* consecutive en dashes read as one rule */
}
.vector-toc .vector-toc-level-2 > .vector-toc-link .vector-toc-text::before { width: 0.6em; }
.vector-toc .vector-toc-level-3 > .vector-toc-link .vector-toc-text::before { width: 1.05em; }
.vector-toc .vector-toc-level-4 > .vector-toc-link .vector-toc-text::before { width: 1.5em; }
/* the title span is unclassed in Vector's DOM; it is the wrapping block */
.vector-toc .vector-toc-text > span:not(.vector-toc-numb) {
Line 2,092 ⟶ 2,151:
width: 100% !important;
margin: 0.8em 0 1.8em !important;
/* inner text on the BULLET-TEXT axis (= the wikitable row-label axis):
1px frame + this padding = --ed-list-indent, so "Organization" starts
exactly where list text and table labels start */
padding-left: calc(var(--ed-list-indent) - 1px);
padding-right: calc(var(--ed-list-indent) - 1px);
}
body:not(.skin-minerva) .ed-infobox-band .infobox > tbody {
Line 2,106 ⟶ 2,170:
grid-column: 1 / -1;
}
body:not(.skin-minerva) .ed-infobox-band .infobox .infobox-above { display: block; }
display: block;
padding-left: 0; /* the card variant insets the eyebrow 0.2em — in the
band the field cells have zero padding, so the
eyebrow must drop its inset to share their axis */
padding-right: 0;
}
/* each field = its two table cells stacked: small muted label over value */
body:not(.skin-minerva) .ed-infobox-band .infobox > tbody > tr > th.infobox-label,
Line 2,392 ⟶ 2,462:
.mw-parser-output .infobox { width: 100% !important; } /* full-width on mobile */
h1#firstHeading, .mw-first-heading { font-size: 1.7rem; }
/* the WHOLE ladder tightens on narrow screens via one ratio override.
.mw-body-content h2, .mw-body-content .mw-heading2 { font-size: 1.22rem; }
(Was an h2-only 1.22rem override, which INVERTED the hierarchy: h3
kept its desktop size and rendered bigger than h2.) */
:root { --ed-h-ratio: 1.08; }
.ext-aiassistant-prompt-composer { border-bottom: 1px solid var(--text-dark) !important; }
/* restate the mobile keyboard clearance — the desktop 12px inset above
Line 2,497 ⟶ 2,570:
interaction only. ── */
 
/* PDF page marker: a quiet rightLEFT-aligned "[p. N]" folio deep-linking the
source PDF at that page (#page=N) — no rule; the link's resting-grey /
coral-on-hover underline is the only ornament (house link convention). */
Left, not right: right-side placement collided with the infobox and
other right floats; on the left the marker is always alone on its
line (user rule 2026-07-20). */
.ed-pdfpage {
/* same true-center trick as .ed-chunk: shrink-wrap + auto margins
margin: 1.4em 0 0.9em;
center on the full body width even beside the infobox float */
text-align: right;
display: block;
width: max-content;
margin: 1.4em auto 0.9em;
font-size: var(--ed-small);
line-height: 1.7;
Line 2,522 ⟶ 2,601:
.ed-pdfpage a:hover,
.mw-parser-output .ed-pdfpage a.external:hover {
text-decoration-color: var(--ed-accent);
text-decoration-thickness: 2px;
}
 
/* Chunk/page provenance marker on SUMMARY pages (Template:Chunk):
"[c. 20; p. 3]" LEFT-aligned on its own line above the chunk heading,
p. 3 linking the Document: transcript's page anchor — same quiet
folio treatment as .ed-pdfpage. Left, not floated right: floats
collided with the infobox / {{Indexing}} key-figures boxes (user
rule 2026-07-20). The link is INTERNAL (no a.external specificity
war), but the strengthened selector is kept for symmetry/safety. */
.ed-chunk {
/* center on the FULL body width, floats ignored: text-align centers
within the float-narrowed line box (drifted left beside the
infobox / key-figures boxes); a shrink-wrapped block with auto
margins centers against the containing block itself. */
display: block;
width: max-content;
margin: 0 auto;
font-size: var(--ed-small);
line-height: 1.7;
}
.ed-chunk a,
.mw-parser-output .ed-chunk a {
color: var(--text-dark);
background-image: none;
padding-right: 0;
text-decoration: underline;
text-decoration-color: var(--ed-underline);
text-decoration-thickness: 1px;
text-underline-offset: 0.18em;
}
.ed-chunk a:hover,
.mw-parser-output .ed-chunk a:hover {
text-decoration-color: var(--ed-accent);
text-decoration-thickness: 2px;