Jump to content

MediaWiki:Common.css

From Insurer Brain
Revision as of 23:39, 11 June 2026 by Wikilah admin (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* =================================================================
   Common.css — Global styles for all skins
   Applies read-only mode, branding, navigation, and AI assistant.
   Logged-in overrides live in MediaWiki:Group-user.css
   ================================================================= */


/* =================================================================
   1. BASE MEDIAWIKI OVERRIDES (Fonts, Quotes, Math, References)
   ================================================================= */

cite, dfn { font-style: inherit; }
q { quotes: '"' '"' "'" "'"; }

blockquote {
    overflow: hidden;
    margin: 1em 0;
    padding: 0 40px;
}

small { font-size: 85%; }
.mw-body-content sub, .mw-body-content sup { font-size: 80%; }
.ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; }

/* --- Collapsible elements --- */
.client-js .collapsible:not(.mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
.client-js .outercollapse .innercollapse.mw-collapsible:not(.mw-made-collapsible) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not(.mw-made-collapsible) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not(.mw-made-collapsible) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not(.mw-made-collapsible) tr:not(:first-child),
.client-js .outercollapse .innercollapse.mw-collapsible:not(.mw-made-collapsible) .mw-collapsible-content,
#editpage-specialchars {
    display: none;
}

.references { margin-bottom: 0.5em; }

/* --- Cite link styling --- */
span[rel="mw:referencedBy"] { counter-reset: mw-ref-linkback 0; }
span[rel="mw:referencedBy"] > a::before {
    content: counter(mw-ref-linkback, lower-alpha);
    font-size: 80%; font-weight: bold; font-style: italic;
}
a[rel="mw:referencedBy"]::before { font-weight: bold; content: "^"; }
span[rel="mw:referencedBy"]::before { content: "^ "; }

.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
    font-weight: normal; padding-right: 0.2em; padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle { float: left; }

/* --- PDF icons --- */
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
    background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
    padding: 8px 18px 8px 0;
}

/* --- Warnings and notices --- */
.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,
div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon {
    clear: both; margin: 0.2em 0; border: 1px solid #bb7070;
    background-color: var(--background-color-error-subtle, #ffdbdb);
    padding: 0.25em 0.9em; box-sizing: border-box;
}
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {
    border-color: #fc3; background-color: var(--background-color-warning-subtle, #fef6e7);
}

@media (min-width: 640px) {
    figure[typeof~="mw:File/Thumb"], figure[typeof~="mw:File/Frame"], .thumbinner { min-width: 100px; }
}

#mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; }

/* --- Permission groups (hidden by default) --- */
.checkuser-show, .sysop-show, .abusefilter-show, .abusefilter-helper-show,
.patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show,
.autoconfirmed-show, .user-show { display: none; }

.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; }

ul.permissions-errors { margin: 0; }
ul.permissions-errors > li { list-style: none; }

/* --- Math rendering --- */
span.mwe-math-mathml-inline { font-size: 118%; }
.mwe-math-fallback-image-display, .mwe-math-mathml-display {
    margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em;
}
.mwe-math-mathml-display math { display: inline; }

@media screen {
    body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {
        background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
    }
    #siteSub { display: block; }
    .references { font-size: 90%; }
}

.flaggedrevs_draft_synced, .flaggedrevs_stable_synced, #t-upload,
.mw-special-Book #coll-downloadbox { display: none; }

/* --- Infoboxes --- */
.infobox {
    border: 1px solid #a2a9b1; color: black; padding: 0.2em;
    font-size: 88%; line-height: 1.5em; border-spacing: 3px;
}
@media screen { .infobox { background-color: #f8f9fa; } }
@media (max-width: 640px) { .infobox { width: 100%; } .infobox .nowrap { white-space: normal; } }
@media (min-width: 640px) {
    .infobox { margin: 0.5em 0 0.5em 1em; float: right; clear: right; width: 22em; }
}
.infobox-header, .infobox-label, .infobox-above, .infobox-full-data, .infobox-data,
.infobox-below, .infobox-subheader, .infobox-image, .infobox-navbar,
.infobox th, .infobox td { vertical-align: top; }
.infobox-label, .infobox-data, .infobox th, .infobox td { text-align: left; }
.infobox .infobox-above, .infobox .infobox-title, .infobox caption {
    font-size: 125%; font-weight: bold; text-align: center; padding: 0.2em;
}
.infobox .infobox-header, .infobox .infobox-subheader, .infobox .infobox-image,
.infobox .infobox-full-data, .infobox .infobox-below { text-align: center; }
.infobox .infobox-navbar { text-align: right; }

/* --- Text utilities --- */
.nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; }
.nowrap, .nowraplinks a { white-space: nowrap; }
.wrap, .wraplinks a { white-space: normal; }

span.texhtml {
    font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
    font-size: 118%; line-height: 1;
    font-variant-numeric: lining-nums tabular-nums; font-kerning: none;
}
span.texhtml span.texhtml { font-size: 100%; }
@media (min-width: 640px) { span.texhtml { white-space: nowrap; } }
@media (max-width: 640px) {
    .flagicon a > img, .flagicon noscript > img { max-width: none !important; }
}
@media screen { .nochecker .gallerybox .thumb img { background-image: none; } }

/* --- YouTube embeds --- */
.mw-parser-output iframe[src*="youtube.com"],
.mw-parser-output iframe[src*="youtube-nocookie.com"] {
    width: 100% !important; max-width: 320px; height: auto !important;
    aspect-ratio: 16 / 9; display: block; margin: 0 auto;
}


/* =================================================================
   2. LAYOUT & SPACING
   ================================================================= */

/* --- Content width & readability --- */
#content {
    max-width: 900px;
    margin: 0 auto;
    line-height: 1.6;
}

/* --- Header reset (invisible container for floating buttons) --- */
.header-container.header-chrome {
    position: fixed !important;
    top: 0 !important; left: 0 !important; right: 0 !important;
    height: 60px !important;
    z-index: 1000 !important;
    pointer-events: none !important;
}

/* Transparent header (Minerva) */
.header-container.header-chrome,
.minerva-header {
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

.header-container .navigation-drawer { display: none !important; }

/* --- Top margin resets (remove white gap) --- */
body.skin-minerva { padding-top: 0 !important; }

#content,
#content.mw-body,
.mw-body {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

.banner-container,
#siteNotice {
    padding: 0 !important;
    margin: 0 !important;
}

.pre-content,
.page-heading,
.firstHeading {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* Push title down so it clears the invisible header */
.pre-content.heading-holder {
    padding-top: 70px !important; /* 60px header + 10px visual space */
    display: block !important;
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
}


/* =================================================================
   3. BRANDING (Logo, Tagline — Desktop Header & Mobile Footer)
   ================================================================= */

/* --- Desktop: hide logo wordmark, inject tagline --- */
.mw-logo-container { display: none !important; }
.mw-logo-wordmark {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
}

.mw-logo:hover,
.mw-logo:active,
.mw-logo:focus { text-decoration: none !important; }

.mw-logo::after {
    content: "Unleashing \A intelligence";
    font-size: 0.875em;
    font-weight: 700;
    line-height: 1.4;
    color: #202122 !important;
    text-decoration: none !important;
    cursor: pointer;
    display: block;
    white-space: pre;
    margin-left: 3px;
    text-align: left;
    position: relative;
    top: 3px;
}

@media screen and (max-width: 900px) {
    .mw-logo::after { display: none !important; }
}

/* --- Mobile footer: logo image + tagline --- */
.minerva-footer-logo {
    font-size: 0 !important;
    color: transparent !important;
    display: block !important;
    text-align: left !important;
    margin-bottom: 20px !important;
}

.minerva-footer-logo::before {
    content: "" !important;
    display: block !important;
    background-image: url("https://pro-wiki.s3.eu-central-1.amazonaws.com/2776118/Logo.png");
    width: 160px;
    height: 50px;
    background-repeat: no-repeat !important;
    background-size: contain !important;
    background-position: left center !important;
    margin-bottom: 6px !important;
}

.minerva-footer-logo::after {
    content: "Unleashing intelligence" !important;
    font-size: 0.875rem !important;
    font-weight: 700 !important;
    line-height: 1.4 !important;
    color: #202122 !important;
    display: block !important;
    white-space: pre-wrap !important;
}

/* Force hidden Minerva footer links to appear */
body.skin-minerva #footer-places-about,
body.skin-minerva #footer-places-disclaimers {
    display: inline-block !important;
}

/* --- Fullscreen logo (fits content width) --- */
.fullscreen-logo {
    width: 100% !important;
    padding: 0 !important;
    margin: 0 auto !important;
    max-width: 900px !important;
}

.fullscreen-logo figure,
.fullscreen-logo .mw-default-size,
.fullscreen-logo .mw-halign-center {
    max-width: 100% !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
}

.fullscreen-logo figure > span {
    display: block !important;
    width: 100% !important;
}

.fullscreen-logo img.mw-file-element {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-width: 0 !important;
}


/* =================================================================
   4. CAPSACH MOBILE TOC OVERLAY
   ================================================================= */

/* --- Base state (JS toggles visibility) --- */
#cps-open-toc {
    position: fixed;
    display: none;
}

/* --- Full-screen scrim --- */
#cps-toc-overlay {
    position: fixed; inset: 0;
    background: rgba(0,0,0,0.4);
    display: none;
    z-index: 1004;
}
#cps-toc-overlay.is-open { display: block; }

/* --- Dropdown panel --- */
#cps-toc-panel {
    position: fixed;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    margin: 0 auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-width: 900px !important;
    max-height: calc(100vh - 60px) !important;
    border-radius: 0 !important;
    background: #ffffff !important;
    color: #202122 !important;
    box-shadow: 0 10px 30px rgba(0,0,0,0.15) !important;
    padding: 15px !important;
    box-sizing: border-box !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    z-index: 1005 !important;
    display: none;
}

.is-open #cps-toc-panel,
#cps-toc-overlay.is-open + #cps-toc-panel,
#cps-toc-panel[style*="display: block"] {
    display: block !important;
}

/* --- Panel header reset --- */
#cps-toc-header {
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    min-height: 0 !important;
}

/* --- Title bar (grey block) --- */
#cps-toc-panel > h2,
#cps-toc-title {
    background-color: #F8F9FA !important;
    margin: -15px -15px 15px !important;
    padding: 20px 0 !important;
    border-bottom: 1px solid #eaecf0 !important;
    display: block !important;
    width: auto !important;
    text-align: center !important;
    color: #202122 !important;
    font-size: 18px !important;
    font-family: sans-serif !important;
    font-weight: bold !important;
}

/* Hide close button and duplicate headings */
#cps-toc-close,
#cps-toc-panel .toctitle,
#cps-toc-panel #mw-toc-heading,
#cps-toc-panel h2 {
    display: none !important;
}

/* --- TOC list --- */
#cps-toc-list { list-style: none; margin: 0; padding: 0; }
#cps-toc-list li { margin: 0; }

#cps-toc-list a {
    display: block; padding: 12px 10px;
    border-bottom: 1px solid #f8f8f8;
    text-decoration: none;
    color: #202122;
    font-size: 15px;
    line-height: 1.4;
}

#cps-toc-list a:active {
    background: #f0f0f0;
    color: #3366cc;
}

/* Indentation levels */
#cps-toc-list li[data-level="3"] { padding-left: 15px; }
#cps-toc-list li[data-level="4"] { padding-left: 30px; }
#cps-toc-list li[data-level="5"] { padding-left: 45px; }

/* "Contents" header link — bold, orange, dark border */
#cps-toc-list a[href="#mw-toc-heading"] {
    font-weight: bold !important;
    color: #f07662 !important;
    border-bottom: 1px solid #202122 !important;
}

/* Arrow prefix (▸) for level 2 and 3 items */
#cps-toc-list li[data-level="2"] a::before,
#cps-toc-list li[data-level="3"] a::before {
    content: "▸" !important;
    color: #202122 !important;
    margin-right: 8px;
    display: inline-block;
}

/* Remove arrow from "Contents" header (technically level 2) */
#cps-toc-list li[data-level="2"] a[href="#mw-toc-heading"]::before {
    display: none !important;
    content: "" !important;
}

/* Hide default in-article TOC */
.toc,
#toc,
.mw-parser-output #toc,
.client-js .mw-content-ltr .toc {
    display: none !important;
}


/* =================================================================
   5. FLOATING BOTTOM BUTTONS (Search, Home, ToC, Email)
   ================================================================= */

/* --- Shared styles (all 4 buttons + search input) --- */
.branding-box,
#searchIcon,
#cps-open-toc,
#custom-email-btn,
body.mw-mf-search-mode .minerva-header .search-box input {
    background-color: rgba(0, 0, 0, 0.2) !important;
    opacity: 1 !important;
    border-radius: 50% !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    pointer-events: auto !important;
    box-sizing: border-box !important;
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
    padding: 0 !important;
    margin: 0 !important;
    position: fixed !important;
    top: auto !important;
    bottom: calc(15px + env(safe-area-inset-bottom)) !important;
    transform: translateZ(0);
    will-change: transform;
    left: 50% !important;
    right: auto !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    z-index: 1002 !important;
}

/* --- Individual positions --- */

/* Search (far left, offset -150px) */
#searchIcon {
    margin-left: -150px !important;
    z-index: 1003 !important;
}
#searchIcon .minerva-icon {
    font-size: 24px !important;
    color: #fff !important;
    fill: #fff !important;
    filter: brightness(0) invert(1);
}

/* Home (left of center, offset -86px) */
.branding-box {
    margin-left: -86px !important;
    flex: 0 0 44px !important;
}
.branding-box::after {
    content: "⌂";
    font-size: 30px !important;
    color: #fff !important;
    -webkit-text-stroke: 0.5px #fff !important;
    margin-top: -6px !important;
    line-height: 1 !important;
}
.branding-box a { opacity: 0 !important; position: absolute; inset: 0; }

/* ToC (center, offset -22px) */
#cps-open-toc { margin-left: -22px !important; }
#cps-open-toc .icon {
    font-size: 30px !important;
    line-height: 1 !important;
    margin-bottom: 3px !important;
    color: #fff !important;
}
#cps-open-toc .label { display: none !important; }

/* Email (right of center, offset +42px) */
#custom-email-btn { margin-left: 42px !important; }
#custom-email-btn::after {
    content: "\2709\FE0E"; /* Text-mode envelope glyph */
    font-size: 26px !important;
    line-height: 1 !important;
    margin-top: -2px !important;
    color: transparent !important;
    text-shadow: 0 0 0 #fff !important;
}

/* --- Search input (expanded state) --- */
body:not(.mw-mf-search-mode) .minerva-header .search-box {
    display: none !important;
}

body.mw-mf-search-mode .minerva-header .search-box {
    display: block !important;
    position: fixed !important;
    top: 8px !important;
    height: 44px !important;
    z-index: 1001 !important;
    left: 10px !important;
    right: 10px !important;
    width: auto !important;
    padding: 0 !important; margin: 0 !important;
    background: transparent !important;
    border-radius: 0 !important;
}

body.mw-mf-search-mode .minerva-header .search-box input {
    width: 100% !important;
    font-size: 16px !important;
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
    padding-left: 55px !important;
    padding-right: 55px !important;
    position: static !important;
    margin: 0 !important;
}

.minerva-header .search-box .search-box-icon-overlay { display: none !important; }

body.mw-mf-search-mode .minerva-header .search-box input::placeholder {
    color: rgba(255, 255, 255, 0.7) !important;
    -webkit-text-fill-color: rgba(255, 255, 255, 0.7) !important;
}

.search-box .search-box-cancel {
    display: block !important;
    position: absolute !important;
    top: 0 !important; right: 0 !important;
    width: 44px !important; height: 44px !important;
    line-height: 44px !important;
    text-align: center !important;
    color: #fff !important;
    z-index: 1004 !important;
}


/* =================================================================
   6. GLOBAL HIDE (Read-Only Mode)
   Hidden for everyone; un-hidden in MediaWiki:Group-user.css
   ================================================================= */

/* --- User links (includes Vector 2022 sticky header IDs) --- */
#vector-user-links,
#p-personal,
#pt-login,
#pt-login-2,
#pt-createaccount,
#pt-createaccount-2,
#pt-userpage,
#pt-mytalk,
#pt-preferences,
#pt-watchlist,
#pt-mycontris,
#pt-logout {
    display: none !important;
}

/* --- Tools (sidebar, dropdowns, tabs) --- */
#p-tb,
#vector-page-tools,
#vector-page-tools-dropdown,
.vector-p-tb,
#ca-viewsource,
#ca-history,
#ca-talk {
    display: none !important;
}

/* --- Categories --- */
#catlinks,
.catlinks,
.mw-normal-catlinks {
    display: none !important;
}

/* --- Page actions (Language, Watch, Edit, etc.) --- */
#p-views,
.page-actions-menu__list,
.page-actions-menu {
    display: none !important;
}

/* --- Vector 2022 page toolbar & pre-content --- */
.vector-page-toolbar { display: none !important; }
.vector-body-before-content { display: none !important; }

/* --- Language selector & main menu --- */
#p-vector-user-menu-preferences { display: none !important; }
.vector-main-menu-landmark { display: none !important; }

/* --- Color theme (anonymous only) --- */
body:not(.group-user) #skin-client-prefs-skin-theme { display: none !important; }

/* --- Mobile: history bar --- */
.last-modified-bar,
a.last-modified-bar {
    display: none !important;
    visibility: hidden !important;
}
.last-modified-bar__text,
.modified-enhancement,
.minerva-icon--modified-history {
    display: none !important;
}

/* --- Mobile: user/login menu --- */
.minerva-user-menu { display: none !important; }
.toggle-list__toggle#minerva-user-menu-toggle { display: none !important; }
.minerva-icon--userAvatarOutline { display: none !important; }

/* --- Mobile: sidebar items --- */
#mw-mf-page-left a[href*="Special:RecentChanges"],
#mw-mf-page-left a[data-event-name="recentchanges"],
#mw-mf-page-left a[href*="Special:SpecialPages"],
#mw-mf-page-left a[href*="Community_portal"] {
    display: none !important;
}


/* =================================================================
   7. TYPOGRAPHY & LINKS
   ================================================================= */

/* --- Heading colors --- */
.mw-heading1, h1,
.mw-heading2, h2,
h3, h4, h5, h6,
.firstHeading,
.mw-page-title-main,
.page-heading,
.section-heading,
.vector-sticky-header-context-bar-primary,
.mw-headline,
.vector-pinnable-header-label {
    color: #202122 !important;
}

/* --- Heading borders --- */
.mw-heading1, h1,
.mw-heading2, h2,
.section-heading {
    border-bottom: 1px solid #202122 !important;
    margin-bottom: 0.6em;
}

.mw-first-heading {
    border-bottom: 2px solid #202122 !important;
    margin-bottom: 0.5em;
}

/* Remove Vector 2022 default title underline */
.vector-page-titlebar::after {
    background-color: transparent !important;
    display: none !important;
    height: 0 !important;
}

/* Contents sidebar heading (no border) */
h2.vector-pinnable-header-label { border-bottom: none !important; }

/* --- Link colors (legacy blue #1d70b8) --- */
a,
a:visited,
.mw-parser-output a,
.mw-parser-output a:visited,
.mw-body-content a.external,
.mw-body-content a.external:visited,
.mw-collapsible-toggle-default .mw-collapsible-text {
    color: #000099 !important;
}

/* Red links (missing pages) */
a.new,
a.new:visited { color: #d73333 !important; }

/* UI buttons stay white */
a.mw-ui-button,
a.mw-ui-button:visited { color: #fff !important; }

/* --- Edit section links --- */
.mw-editsection, .mw-editsection a {
    color: #202122 !important;
    opacity: 0.7;
}

/* --- Footer borders --- */
#footer,
.mw-footer,
.minerva-footer,
.printfooter {
    border-top: 1px solid #202122 !important;
}

#footer-icons { display: none !important; }

.minerva-footer .footer-content,
.minerva-footer .branding-box,
.minerva-footer-logo,
#footer-info,
#footer-places {
    border: none !important;
}

/* Mobile section expand icon */
.skin-minerva .section-heading .mw-ui-icon-wikimedia-expand-small {
    filter: grayscale(1) brightness(0.2);
}

/* --- Navigation menu paragraphs --- */
.navigation-menu .infobox-data p {
    font-size: 1em !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* --- Main page menu --- */
.main-page-menu {
    line-height: 1.8;
    margin-bottom: 0;
    font-size: 1em;
}

/* --- Read pill (inline badge) --- */
.read-pill {
    display: inline;
    white-space: nowrap;
    padding: 1px 0.4em;
    position: relative;
    top: -1px;
    border-radius: 4px;
    margin: 0 0.2em 0 0;
    font-size: 0.85em;
    font-weight: 500;
    color: #202122 !important;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}

.read-pill a,
.read-pill a:visited {
    color: #202122 !important;
    text-decoration: none !important;
}

.read-pill a.new {
    color: red !important;
    padding: 0 4px;
    border-radius: 3px;
}

/* --- Minerva bullet indentation fix --- */
body.skin-minerva .mw-parser-output ul,
body.skin-minerva .collapsible-block ul {
    padding-left: 1em;
    margin-left: 0;
}
body.skin-minerva .mw-parser-output ul ul,
body.skin-minerva .collapsible-block ul ul {
    padding-left: 1em;
}


/* =================================================================
   8. AI ASSISTANT PANEL
   ================================================================= */

/* --- Z-index: sits behind floating buttons (z-index 1002) --- */
.ext-aiassistant,
.ext-aiassistant-panel {
    z-index: 1001 !important;
}

/* --- Panel shell --- */
.ext-aiassistant-panel {
    border: 1px solid #202122 !important;
    box-shadow: none !important;
}

/* --- Header --- */
.ext-aiassistant-header {
    border-bottom: 1px solid #202122 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
}

/* --- Message area --- */
.ext-aiassistant-body {
    padding-left: 20px !important;
    padding-right: 20px !important;
    box-sizing: border-box !important;
}

.ext-aiassistant-message {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.ext-aiassistant-message + .ext-aiassistant-message {
    margin-top: 0 !important;
}

/* --- User bubble --- */
.ext-aiassistant-message-user {
    margin-left: 100px !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.ext-aiassistant-message-user .ext-aiassistant-message__content {
    background-color: #202122 !important;
    color: white !important;
    border-radius: 18px !important;
    border: none !important;
    padding: 6px 12px !important;
}

.ext-aiassistant-message-user .ext-aiassistant-message__content p {
    color: white !important;
    margin: 0 !important;
}

/* --- Assistant typography (matches article style) --- */
.ext-aiassistant-message-assistant {
    font-family: sans-serif !important;
    font-size: 1em !important;
    color: #202122 !important;
    overflow-wrap: break-word !important;
    white-space: normal !important;
    max-width: 100% !important;
}

.ext-aiassistant-message-assistant p {
    margin: 0 0 0.6em !important;
}

.ext-aiassistant-message-assistant p,
.ext-aiassistant-message-assistant li,
.ext-aiassistant-message-assistant ul,
.ext-aiassistant-message-assistant ol {
    line-height: 1.6 !important;
}

.ext-aiassistant-message-assistant ul,
.ext-aiassistant-message-assistant ol {
    margin: 0.3em 0 0.6em !important;
    margin-left: 0 !important;
    padding-top: 0 !important;
}

.ext-aiassistant-message-assistant ul {
    list-style-type: disc !important;
    padding-left: 1.2em !important;
}

.ext-aiassistant-message-assistant ul ul {
    list-style-type: disc !important;
    padding-left: 1.5em !important;
}

.ext-aiassistant-message-assistant li {
    margin-bottom: 0.2em !important;
    white-space: normal !important;
}

.ext-aiassistant-message-assistant pre,
.ext-aiassistant-message-assistant code {
    white-space: pre-wrap !important;
    word-wrap: break-word !important;
    font-family: inherit !important;
    background: transparent !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* --- Action buttons (copy, source) --- */
.ext-aiassistant-message-assistant .ext-aiassistant-actions {
    display: flex !important;
    flex-direction: row-reverse !important;
}

.ext-aiassistant-message-user .ext-aiassistant-actions {
    display: flex !important;
    justify-content: flex-end !important;
}

/* --- Citations --- */
.ext-aiassistant-cite {
    line-height: 1 !important;
    font-size: 80% !important;
    vertical-align: super !important;
}

/* --- Sources --- */
.ext-aiassistant-sources {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin-bottom: 12px !important;
}

/* --- "New Chat" label --- */
.ext-aiassistant-panel .cdx-button--weight-quiet:not(.cdx-button--icon-only) {
    font-size: 0 !important;
}
.ext-aiassistant-panel .cdx-button--weight-quiet:not(.cdx-button--icon-only)::before {
    content: "New" !important;
    font-size: 0.875rem !important;
    font-weight: bold !important;
    color: #202122 !important;
    visibility: visible !important;
}

/* --- Footer + Composer --- */
.ext-aiassistant-footer {
    border-top: 1px solid #202122 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    background-color: #f8f9fa !important;
}

.ext-aiassistant-prompt-composer {
    margin: 0 !important;
    width: 100% !important;
    background-color: #fff !important;
    padding: 10px 20px !important;
    border: none !important;
    border-radius: 0 !important;
}

.ext-aiassistant-prompt-composer__toolbar {
    display: flex !important;
    align-items: center !important;
}

/* --- Composer focus --- */
.ext-aiassistant-prompt-composer:focus-within .ext-aiassistant-prompt-composer__input,
.ext-aiassistant-prompt-composer__input:focus {
    border-color: #202122 !important;
    outline: none !important;
    box-shadow: none !important;
}

/* --- Send button --- */
.ext-aiassistant-prompt-composer__send {
    border-radius: 50% !important;
    width: 32px !important;
    height: 32px !important;
    min-width: 0 !important;
    padding: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin-left: 4px !important;
}

.ext-aiassistant-prompt-composer__send:not(:disabled) {
    background-color: #202122 !important;
    border-color: #202122 !important;
    color: #ffffff !important;
}

.ext-aiassistant-prompt-composer__send:disabled {
    background-color: #EAECF0 !important;
    border-color: #EAECF0 !important;
}

.ext-aiassistant-prompt-composer__send:disabled .cdx-icon svg {
    fill: #72777d !important;
}


/* =================================================================
   9. RESPONSIVE OVERRIDES
   ================================================================= */

/* --- Mobile (max-width: 768px) --- */
@media screen and (max-width: 768px) {
    /* AI assistant: fullscreen mode */
    .ext-aiassistant-panel {
        position: fixed !important;
        box-sizing: border-box !important;
        width: 100% !important;
        height: 100% !important;
        max-width: none !important;
        max-height: none !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        border-radius: 0 !important;
        margin: 0 !important;
    }
    .ext-aiassistant-body {
        height: auto !important;
        flex-grow: 1 !important;
    }
    /* Push input above sticky buttons */
    .ext-aiassistant-footer {
        padding-bottom: calc(70px + env(safe-area-inset-bottom)) !important;
    }

    /* Add a line to separate with the sticky buttons */
    .ext-aiassistant-prompt-composer {
        border-bottom: 1px solid #202122 !important;
        border-radius: 0 !important;
        padding-bottom: 10px !important;
    }

    /* Prevent iOS zoom on AI input */
    .ext-aiassistant-panel input,
    .ext-aiassistant-panel textarea,
    .ext-aiassistant-panel .cdx-text-input__input {
        font-size: 16px !important;
    }

    /* Prevent horizontal scroll */
    html, body {
        overflow-x: hidden !important;
        width: 100% !important;
        position: relative;
    }

    /* Hide AI shortcut hint */
    .ext-aiassistant-shortcut-hint { display: none !important; }
}

/* --- Tablet (min-width: 768px) --- */
@media screen and (min-width: 768px) {
    /* Lock home button shape */
    .branding-box {
        width: 44px !important;
        min-width: 44px !important;
        max-width: 44px !important;
        flex: 0 0 44px !important;
        margin-left: -86px !important;
    }

    /* Keep ToC centered */
    #cps-open-toc {
        display: flex !important;
        visibility: visible !important;
        opacity: 1 !important;
        z-index: 9999 !important;
        margin-left: -22px !important;
        background-color: rgba(0, 0, 0, 0.2) !important;
        width: 44px !important;
        height: 44px !important;
        border-radius: 50% !important;
    }
}

/* --- Desktop (min-width: 1000px) --- */
@media screen and (min-width: 1000px) {
    /* Wider content column */
    #content { max-width: 1200px !important; }

    /* Match logo to wider content */
    .fullscreen-logo { max-width: 100% !important; }
    .fullscreen-logo img.mw-file-element {
        max-width: min(100%, 1200px) !important;
        margin: 0 auto !important;
    }

    /* Hide ToC button on desktop Vector 2022 (full sidebar available) */
    body.skin-vector-2022 #cps-open-toc { display: none !important; }
}


/* =================================================================
   10. PRINT STYLES
   ================================================================= */

@media print {

    /* --- Hide floating buttons, overlays, and AI assistant --- */
    #searchIcon,
    .branding-box,
    #cps-open-toc,
    #custom-email-btn,
    #cps-toc-panel,
    #cps-toc-overlay,
    .minerva-header .search-box,
    .ext-aiassistant,
    .ext-aiassistant-panel,
    .ext-aiassistant-trigger {
        display: none !important;
    }

    /* --- Hide standard MediaWiki UI elements to free up space --- */
    #mw-navigation,
    #footer,
    .printfooter,
    .mw-editsection {
        display: none !important;
    }

    /* --- Font consistency for lists --- */
    .mw-parser-output ul,
    .mw-parser-output ol,
    .mw-parser-output li {
        font-family: inherit !important;
    }

    /* --- Remove underlines specifically from internal links in print --- */
    .mw-parser-output a:not(.external),
    .mw-parser-output a:not(.external):visited {
        text-decoration: none !important;
    }
}


/* =================================================================
   11. WIKITABLES
   All table styling lives here: design knobs (:root), base look,
   structural rules, text hierarchy, column widths, the sticky first
   column, responsive borders, and print. Horizontal scroll is
   handled by the CopyTable gadget wrapper, NOT here (overflow on a
   <table> element is ignored).
   ================================================================= */

/* ── Design knobs — tunable here, no re-publishing needed ── */
:root {
  --wt-col: 6em;         /* data columns (class="col") */
  --wt-col-wide: 9em;    /* wide data columns (class="col-wide") */
  --wt-border: #eceef1;  /* hairline grid — barely visible */
  --wt-rule: #72777d;    /* structural rules: table top, header bottom, table bottom */
  --wt-edge: #dadde1;    /* frozen-column right edge (one notch stronger than grid) */
  --wt-th-bg: #f6f7f9;   /* header tint (try #fff once the rules carry the structure) */
  --wt-th-text: #54595d; /* header text — muted vs. the near-black data */
  --wt-pad-y: 0.5em;     /* vertical cell padding = row height knob */
}

/* --- Full width (scroll lives on the gadget's .copy-table-scroll wrapper) --- */
.wikitable { width: 100% !important; }

/* --- Base look: hairline frame, roomy rows, aligned digits, air between
       adjacent tables --- */
table.wikitable {
    font-size: 0.85em;
    background-color: #fff;
    border: 1px solid var(--wt-border);
    font-variant-numeric: tabular-nums;   /* digits align vertically */
    margin-top: 0.3em;
    margin-bottom: 2em;                   /* separation between stacked tables */
}
table.wikitable td { background-color: #fff; }
table.wikitable caption {
    text-align: left;
    font-weight: bold;
    background-color: #fff;
    padding-bottom: 0.45em;               /* air between caption and table */
}
table.wikitable > tr > th,
table.wikitable > tr > td,
table.wikitable > * > tr > th,
table.wikitable > * > tr > td {
    border: 1px solid var(--wt-border);
    padding: var(--wt-pad-y) 0.6em;
}
table.wikitable > * > tr > th {
    background-color: var(--wt-th-bg);
    color: var(--wt-th-text);             /* muted headers: caption > data > header */
}
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
    font-weight: normal;
    text-align: left;
}

/* --- Structural rules (booktabs): top, below the header block, bottom.
       Painted on cells, not the table — with border-collapse a cell border
       beats a table border, and an upper cell's bottom beats the next
       cell's top, so these exact selectors are what makes the dark lines
       win over the hairlines. --- */
table.wikitable > * > tr:first-child > th,
table.wikitable > * > tr:first-child > td {
    border-top: 1px solid var(--wt-rule);          /* top rule, under the caption */
}
table.wikitable > * > tr:has(> th):has(+ tr > td) > th {
    border-bottom: 1px solid var(--wt-rule);       /* rule under the LAST header row */
}
table.wikitable > * > tr:last-child > td,
table.wikitable > * > tr:last-child > th {
    border-bottom: 1px solid var(--wt-rule);       /* bottom rule */
}

/* Optional refinements — uncomment to test:
table.wikitable th { font-weight: normal; }
table.wikitable > * > tr:has(> th) > th:first-child { font-weight: normal; }
*/

/* Row hover — readability across wide rows without permanent zebra weight */
table.wikitable > tbody > tr:hover > td { background-color: #f8f9fa; }

/* ── House column widths: markers from the emitter, values here ── */
/* Floor for legacy pages published with inline widths (safe to keep wiki-wide) */
.wikitable th:not(:first-child),
.wikitable td:not(:first-child) { min-width: var(--wt-col); }
/* Marked data columns: pinned width + floor */
.wikitable th.col,
.wikitable td.col { width: var(--wt-col); min-width: var(--wt-col); }
.wikitable th.col-wide,
.wikitable td.col-wide { width: var(--wt-col-wide); min-width: var(--wt-col-wide); }

/* --- Cell content (Minerva fixes + alignment) --- */
table.wikitable td p { font-size: inherit !important; }   /* respect table font size */
.wikitable td ul,
.wikitable td ol,
.wikitable td dl { text-align: left; }
table.wikitable td ul {
    list-style-position: outside !important;              /* fix Minerva bullet position */
    margin-left: 1.5em !important;                        /* push bullets off the border */
    padding-left: 0 !important;
}
table.wikitable td > p:first-child,
table.wikitable td > ul:first-child,
table.wikitable td > ol:first-child {
    margin-top: 0 !important;                             /* align first block with inline text */
}

/* --- Row-label (first) column: single-line, readable minimum, frozen while
       scrolling, opaque background. border-collapse drops a sticky cell's
       own borders, so the right edge is painted with box-shadow — it stays
       put with the sticky cell. --- */
.wikitable th:first-child,
.wikitable td:first-child {
    white-space: nowrap;
    min-width: 16em;
    position: sticky;
    left: 0;
    z-index: 1;
    box-shadow: 1px 0 0 var(--wt-edge);  /* right edge only — marks the frozen column */
}
.wikitable td:first-child { background-color: #fff; }            /* body cells  */
.wikitable th:first-child { background-color: var(--wt-th-bg); } /* header cell */

/* --- Mobile borders (<= 719px): table border dropped, redrawn per cell --- */
@media screen and (max-width: 719px) {
    table.wikitable { border: none !important; }
    table.wikitable > tr > th,
    table.wikitable > tr > td,
    table.wikitable > tbody > tr > th,
    table.wikitable > tbody > tr > td {
        border: 1px solid var(--wt-border);
    }
}

/* --- Print --- */
@media print {
    table.wikitable p {
        font-size: inherit !important;
        text-align: inherit !important;       /* no justification on print */
        margin-top: 0.25em !important;
        margin-bottom: 0.25em !important;
    }
    table.wikitable a.external.text::after {
        content: none !important;             /* hide expanded URLs */
    }
}

/* =================================================================
   12. EDITORIAL DESIGN SYSTEM v5.3 ("paper & ink")
   Appended LAST deliberately: later rules of equal specificity win,
   so this section restyles typography / color / spacing WITHOUT
   editing sections 1-11 (it even re-points section 11's --wt-*
   color variables from here — a later :root wins). Delete the whole
   section to revert.
   v5.3: infobox width ENFORCED over inline widths (exact text axis on
   hand-written pages too); scrollbar in the header tint.
   ================================================================= */

/* ── Webfont: Source Serif 4 (variable; ONE file covers 400-600).
      @font-face is safe anywhere in ResourceLoader output — never use
      @import here (gadget CSS is concatenated BEFORE Common.css and
      breaks it, per T165040). If the font fails to load, Georgia
      takes over seamlessly. Production hardening: copy the two woff2
      files to the S3 bucket and swap the URLs. ── */
@font-face {
  font-family: "Source Serif 4";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourceserif4/v14/vEFF2_tTDB4M7-auWDN0ahZJW3IX2ih5nk3AucvUHf6kDXr4.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Source Serif 4";
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/sourceserif4/v14/vEF02_tTDB4M7-auWDN0ahZJW1ge6NmXpVAHV83Bfb_US2D2QYxoUKIkn98pRl9tDMQC.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Design knobs.
      ONE gray ramp (3 grays + 2 hairlines), ONE small size, ONE sans.
      The --wt-* lines re-point section 11's table palette onto the
      same warm ramp (this :root is later, so it wins the tie). ── */
:root {
  --ed-serif: "Source Serif 4", Georgia, "Times New Roman", serif;
  --ed-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
             "Inter", Helvetica, Arial, sans-serif;  /* = Vector/Codex chrome stack */
  --ed-ink: #2b2926;             /* text, headings, strong rules */
  --ed-secondary: #66605c;       /* labels, standfirst, TOC, footer links */
  --ed-faint: #807973;           /* page refs, list markers, footer body */
  --ed-hairline: #e7e2db;        /* light warm line (infobox frame) */
  --ed-hairline-strong: #d6d0c8; /* stronger warm line (edges) */
  --ed-link: #0d7680;            /* interactive teal (FT's link color) */
  --ed-underline: #ccc1b7;       /* resting link underline tint */
  --ed-accent: #f07662;          /* house coral — hover underline, sparing */
  --ed-paper: #fbfaf7;           /* page canvas (set #fff to disable the tint) */
  --ed-infobox-w: 18.5rem;       /* infobox total width (border-box) */
  --ed-measure: calc(100% - var(--ed-infobox-w)); /* prose ends ON the infobox border */
  --ed-body: 1rem;               /* body size (16px — the "90% zoom" preference) */
  --ed-small: 0.8125rem;         /* THE small size: tables, infobox, TOC, footer */
  --ed-title-gap: 2.1rem;        /* CALIBRATION: moves the title rule DOWN */

  /* section 11's table palette, warmed onto the same ramp.
     --wt-rule is the table FRAME: deliberately lighter than the ink
     h2 rules so tables sit below section structure in the hierarchy */
  --wt-border: #ece8e1;
  --wt-rule: #b3aca3;
  --wt-edge: var(--ed-hairline-strong);
  --wt-th-bg: #f3efe8;
  --wt-th-text: var(--ed-secondary);
}

/* ── Canvas: warm paper everywhere — page, the header band Vector
      paints white on its own, the TOC column, and the TOC's
      scroll-fade overlay ── */
body, .mw-page-container { background-color: var(--ed-paper) !important; }
.vector-header-container .mw-header,
.vector-header-container .vector-sticky-header {
  background-color: var(--ed-paper) !important;
}
#vector-toc, .vector-toc, .vector-pinned-container {
  background-color: transparent !important;
}
.vector-sticky-pinned-container::after {
  background: linear-gradient(transparent, var(--ed-paper)) !important;
}
@media print { body, .mw-page-container { background-color: #fff !important; } }

/* ── ONE sans: the whole interface (header, search, tagline, buttons,
      footer) and all data share the Codex stack; prose re-asserts the
      serif below ── */
body { font-family: var(--ed-sans); }

/* ── Logo on the title axis: push it right by the TOC column + grid
      gap at Vector's own grid breakpoints, so the logo + tagline sit
      exactly above the page title. Below 1120px the TOC column does
      not exist, so no offset. ── */
@media (min-width: 1120px) { .mw-logo { margin-left: calc(12.25rem + 24px); } }
@media (min-width: 1680px) { .mw-logo { margin-left: calc(15.5rem + 24px); } }

/* ── Prose voice: serif, warm ink ── */
.mw-body-content {
  font-family: var(--ed-serif);
  font-size: var(--ed-body);
  line-height: 1.6;
  color: var(--ed-ink);
  font-variant-numeric: lining-nums;
}
/* readable measure for prose; data/tables stay full width */
.mw-parser-output > p,
.mw-parser-output > ul,
.mw-parser-output > ol,
.mw-parser-output > dl { max-width: var(--ed-measure); }
/* guards: the data voice stays sans at the ONE small size — otherwise the
   serif body size would silently scale section 11's 0.85em tables (and
   every em-based column width) */
table.wikitable, .infobox {
  font-family: var(--ed-sans);
  font-size: var(--ed-small);
}

/* ── The table BLOCK ──
      1. Printed ON the paper (not white cards): surfaces transparent;
         only the sticky first column stays opaque (it must cover
         scrolling content) in the paper color; hover warms.
      2. Full frame in --wt-rule. Sides: the RIGHT rail is a plain
         border on the last-column cells; the LEFT rail must be a
         box-shadow on the sticky first-column cells — with
         border-collapse, borders on sticky cells do not move when the
         cell sticks (they vanish on horizontal scroll), but shadows
         travel with the cell. The table's own left border is disabled
         so the rail is the only line there.
      3. The table's outer margins move to the scroll WRAPPER so the
         horizontal scrollbar hugs the bottom rule; the scrollbar is
         thin, in the header tint. ── */
table.wikitable,
table.wikitable td,
table.wikitable caption { background-color: transparent; }
.wikitable td:first-child { background-color: var(--ed-paper); }
table.wikitable > tbody > tr:hover > td { background-color: #f2ede5; }

.wikitable th:first-child,
.wikitable td:first-child {
  border-left: none;
  box-shadow: inset 1px 0 0 var(--wt-rule),   /* left rail — sticks with the cell */
              1px 0 0 var(--wt-edge);          /* right edge of the frozen column */
}
.wikitable th:last-child,
.wikitable td:last-child { border-right: 1px solid var(--wt-rule); }

table.wikitable { margin: 0; border-left: none; }
.mw-parser-output div[style*="overflow-x"],
.copy-table-scroll {
  margin: 0.3em 0 2em;
  scrollbar-width: thin;
  scrollbar-color: var(--wt-th-bg) transparent;  /* scrollbar = header tint */
}

/* caption = the table's TITLE: one size step above the 13px cells, with
   a systematic data glyph (swap the emoji here to change it everywhere) */
table.wikitable caption {
  color: var(--ed-ink);
  font-size: 0.875rem;
  font-weight: 600;
}
table.wikitable caption::before {
  content: "📊";
  margin-right: 0.45em;
  font-size: 0.9em;
}

/* standfirst — the italic intro sentence (FT: sans, calm). Anchored to the
   generated infobox-then-intro pattern so hand-written pages keep real italics */
.mw-parser-output > .infobox ~ p:first-of-type > i,
.mw-parser-output > table.infobox + p > i {
  font-family: var(--ed-sans);
  font-style: normal;
  font-size: 0.97em;
  line-height: 1.55;
  color: var(--ed-secondary);
}

/* list rhythm: air between points, predictable nesting */
.mw-parser-output ul { margin-top: 0.4em; }
.mw-parser-output li { margin-bottom: 0.45em; }
.mw-parser-output li li { margin-top: 0.3em; margin-bottom: 0.3em; }
.mw-parser-output li > ul { margin-top: 0.3em; }
.mw-parser-output li::marker { color: var(--ed-faint); }

/* page-reference superscripts — present everywhere, must whisper.
   line-height:0 stops them inflating the line box */
.mw-body-content sup {
  font-size: 68%;
  line-height: 0;
  font-family: var(--ed-sans);
  color: var(--ed-faint);
}

/* ── Title block: serif display, REGULAR weight, large; the title-gap
      knob lands its rule on the CONTENTS rule's line ── */
h1#firstHeading, .mw-first-heading {
  font-family: var(--ed-serif);
  font-size: 2.4rem;
  line-height: 1.15;
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--ed-ink) !important;
  border-bottom: 2px solid var(--ed-ink) !important;
  margin-top: var(--ed-title-gap) !important;
  padding-bottom: 0.3em;
  margin-bottom: 0.35em;
}
/* breadcrumb under the title rule — the shared eyebrow treatment */
#contentSub .subpages {
  font-family: var(--ed-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ed-secondary);
  margin-bottom: 1.4em;
}
#contentSub .subpages a,
#contentSub .subpages a:visited { color: var(--ed-secondary) !important; }

/* ── Section headings: sans semibold on the house rules. Scoped to
      .mw-body-content — Vector's own typography rules are
      class-qualified (0,1,1), so bare h2/h3 selectors would LOSE. ── */
.mw-body-content h2, .mw-body-content .mw-heading2, .section-heading {
  font-family: var(--ed-sans);
  font-size: 1.4rem;
  line-height: 1.25;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--ed-ink) !important;
  border-bottom: 1px solid var(--ed-ink) !important;
  margin-top: 2.2em;
  margin-bottom: 0.7em;
  padding-bottom: 0.3em;
}
.mw-body-content h3 {
  font-family: var(--ed-sans);
  font-size: 1.08rem;
  font-weight: 600;
  color: var(--ed-ink) !important;
  margin-top: 1.8em;
  margin-bottom: 0.5em;
}
.mw-body-content h4, .mw-body-content h5, .mw-body-content h6 {
  font-family: var(--ed-sans);
  font-size: 1rem;
  font-weight: 600;
  color: var(--ed-ink) !important;
}
/* the inner spans are pinned #202122 !important by section 7 — make them
   follow their heading's ink instead */
.mw-headline, .mw-page-title-main { color: inherit !important; }

/* ── Links: FT teal; content links carry a resting tint underline that
      warms to the house coral on hover ── */
a, a:visited,
.mw-parser-output a, .mw-parser-output a:visited,
.mw-body-content a.external, .mw-body-content a.external:visited,
.mw-collapsible-toggle-default .mw-collapsible-text {
  color: var(--ed-link) !important;
}
.mw-parser-output a {
  text-decoration: underline;
  text-decoration-color: var(--ed-underline);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}
.mw-parser-output a:hover {
  text-decoration-color: var(--ed-accent);
  text-decoration-thickness: 2px;
}
/* exceptions re-stated AFTER the generic rules so they keep winning */
a.new, a.new:visited { color: #d73333 !important; }
a.mw-ui-button, a.mw-ui-button:visited { color: #fff !important; }
.mw-editsection, .mw-editsection a, .mw-editsection a:visited {
  color: var(--ed-secondary) !important;
  text-decoration: none;
}

/* ── TOC sidebar: quiet sans at the ONE small size; "CONTENTS" label at
      the title's text level, its 1px ink rule on the title rule's line.
      padding-top moves the LABEL and the rule together; padding-bottom
      moves the RULE only — fine-tune in 0.05rem steps. ── */
.vector-toc { font-family: var(--ed-sans); }
.vector-toc .vector-pinnable-header {
  border-bottom: 1px solid var(--ed-ink) !important;
  padding-top: 0.35rem;     /* CALIBRATION: moves the LABEL and the rule together */
  padding-bottom: 0.95rem;  /* CALIBRATION: moves the RULE only */
  margin-bottom: 0.9rem;
}
.vector-toc .vector-pinnable-header-label {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ed-secondary) !important;
}
.vector-toc .vector-toc-link,
.vector-toc .vector-toc-link:visited {
  color: var(--ed-secondary) !important;
  font-size: var(--ed-small);
  text-decoration: none;
}
.vector-toc .vector-toc-link:hover { color: var(--ed-ink) !important; }
.vector-toc .vector-toc-list-item-active > .vector-toc-link { color: var(--ed-ink) !important; }

/* ── Infobox: the page's ONE white card, in the data voice; its width
      is the SAME token the prose measure subtracts, ENFORCED with
      !important so inline widths on hand-written pages cannot break
      the axis. table.infobox (0,2,1) also out-specifies the
      TemplateStyles sheet's !important rules (0,2,0). ── */
.mw-parser-output table.infobox {
  font-family: var(--ed-sans);
  font-size: var(--ed-small);
  width: var(--ed-infobox-w) !important;  /* SAME token as the measure; !important
                                             beats inline widths on hand-written pages */
  box-sizing: border-box;
  background-color: #fff !important;
  border: 1px solid var(--ed-hairline) !important;
  padding: 0.55em 0.9em 0.75em;
  line-height: 1.5;
}
.infobox .infobox-above {
  background-color: #fff !important;       /* beats the template's inline #cee0f2 */
  color: var(--ed-secondary) !important;   /* beats inline color:inherit */
  text-align: left !important;
  font-size: 0.75rem;                      /* the shared eyebrow size */
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-bottom: 1px solid var(--ed-ink);
  padding: 0.2em 0.2em 0.55em;
}
.infobox .infobox-label {
  color: var(--ed-secondary);
  font-weight: 400;
  padding: 0.22em 0.8em 0.22em 0.2em;
}
.infobox .infobox-data { color: var(--ed-ink); padding: 0.22em 0.2em; }

/* ── Blockquotes: coral bar, serif italic (future-proofing — the emitter
      currently renders quotes as "> ..." list items) ── */
.mw-parser-output blockquote {
  border-left: 3px solid var(--ed-accent);
  padding: 0.2em 0 0.2em 1.2em;
  margin: 1.2em 0;
  color: var(--ed-secondary);
  font-style: italic;
}

/* ── Footer + page-bottom cleanup. Vector ships `.mw-footer li
      { font-size: 0.75em }`, which COMPOUNDS with any footer size —
      the rem on the li kills the compounding; footer now matches
      the TOC exactly ── */
@media screen {
  .printfooter { display: none; }          /* "Retrieved from ..." clutter; stays in print */
}
#footer, .mw-footer {
  font-family: var(--ed-sans);
  color: var(--ed-faint);
  border-top: 1px solid var(--ed-ink) !important;
}
#footer li, .mw-footer li { font-size: var(--ed-small); }
#footer a, #footer a:visited,
.mw-footer a, .mw-footer a:visited { color: var(--ed-secondary) !important; }

/* ── Mobile ── */
@media screen and (max-width: 768px) {
  :root { --ed-measure: 100%; }  /* infobox is full-width on mobile */
  .mw-parser-output table.infobox { width: 100% !important; }
  h1#firstHeading, .mw-first-heading { font-size: 1.7rem; }
  .mw-body-content h2, .mw-body-content .mw-heading2 { font-size: 1.22rem; }
}