MediaWiki:Common.css: Difference between revisions
From FusionGirl Wiki
Jump to navigationJump to search
(FusionGirl wiki theme — dark default, amber/gun-metal palette, light toggle [Mecha Jono]) |
(FusionGirl wiki theme — dark default, amber/gun-metal palette, light toggle [Mecha Jono]) |
||
| Line 1,305: | Line 1,305: | ||
#p-logo { | #p-logo { | ||
background-color: transparent !important; | background-color: transparent !important; | ||
} | |||
/* Override wiki logo with uploaded FusionGirl icon */ | |||
.mw-wiki-logo { | |||
background-image: url('https://wiki.fusiongirl.app:443/images/e/e8/FusionGirlIcon_x512.png') !important; | |||
background-size: contain !important; | |||
background-repeat: no-repeat !important; | |||
background-position: center !important; | |||
} | } | ||
Latest revision as of 14:07, 15 March 2026
/* ================================================================
FusionGirl Wiki Theme
Color schema: Gun Metal · Amber/Ember · Black/White
Matched to https://fusiongirl.app
Dark mode default, light mode toggle via Common.js
================================================================ */
/* ── Google Fonts ── */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;600&family=Space+Grotesk:wght@500;600;700&display=swap');
/* ================================================================
CSS CUSTOM PROPERTIES — DARK THEME (DEFAULT)
================================================================ */
:root {
/* ── Backgrounds ── */
--fg-bg-primary: #0a0a0a; /* page body — near-black */
--fg-bg-secondary: #111111; /* content area */
--fg-bg-surface: #1a1a1a; /* cards, panels, infoboxes */
--fg-bg-elevated: #222222; /* hover states, elevated panels */
--fg-bg-input: #0d0d0d; /* input fields, search box */
--fg-bg-header: #0a0a0a; /* sticky header / top bar */
--fg-bg-sidebar: #0a0a0a; /* sidebar / navigation */
/* ── Gun Metal ── */
--fg-gunmetal: #2a3439;
--fg-gunmetal-light: #3a4449;
--fg-gunmetal-dark: #1a2024;
/* ── Amber / Orange Accent (from fusiongirl.app: #FF8C00) ── */
--fg-accent: #FF8C00;
--fg-accent-hover: #FFa030;
--fg-accent-muted: #cc7000;
--fg-accent-gold: #FFD700;
--fg-accent-glow: rgba(255, 140, 0, 0.12);
--fg-accent-glow-strong: rgba(255, 140, 0, 0.25);
/* ── Text ── */
--fg-text-primary: rgba(255, 255, 255, 0.87); /* body text */
--fg-text-secondary: rgba(255, 255, 255, 0.50); /* dimmed / meta */
--fg-text-heading: #ffffff; /* headings */
--fg-text-link: #FF8C00; /* links = amber */
--fg-text-link-new: #ff6568; /* red-links (missing) */
--fg-text-link-visited: #cc7000;
--fg-text-link-hover: #FFD700;
/* ── Borders ── */
--fg-border: #2a3439; /* gun metal border */
--fg-border-light: #3a4449;
--fg-border-accent: #FF8C00;
--fg-border-subtle: rgba(255, 255, 255, 0.08);
/* ── Code ── */
--fg-code-bg: #0d0d0d;
--fg-code-text: #FF8C00;
--fg-code-border: #2a3439;
/* ── Shadows ── */
--fg-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
--fg-shadow-accent: 0 0 12px rgba(255, 140, 0, 0.15);
/* ── Transitions ── */
--fg-transition: 0.2s ease;
}
/* ================================================================
CSS CUSTOM PROPERTIES — LIGHT THEME (toggled)
================================================================ */
html.fg-light-mode {
--fg-bg-primary: #f4f0eb;
--fg-bg-secondary: #faf8f5;
--fg-bg-surface: #ffffff;
--fg-bg-elevated: #f0ece7;
--fg-bg-input: #ffffff;
--fg-bg-header: #f4f0eb;
--fg-bg-sidebar: #ede9e4;
--fg-gunmetal: #c8cdd0;
--fg-gunmetal-light: #dde0e3;
--fg-gunmetal-dark: #b0b5b8;
--fg-accent: #b36200;
--fg-accent-hover: #8b4d00;
--fg-accent-muted: #7a4200;
--fg-accent-gold: #8a7208;
--fg-accent-glow: rgba(179, 98, 0, 0.10);
--fg-accent-glow-strong: rgba(179, 98, 0, 0.18);
--fg-text-primary: #1a1a1a;
--fg-text-secondary: #555555;
--fg-text-heading: #0a0a0a;
--fg-text-link: #8b4d00; /* WCAG AA 5.2:1 on #f4f0eb */
--fg-text-link-new: #a30000; /* WCAG AA on light bg */
--fg-text-link-visited: #6b3a00;
--fg-text-link-hover: #b36200;
--fg-border: #d5d0cb;
--fg-border-light: #e5e0db;
--fg-border-accent: #b36200;
--fg-border-subtle: rgba(0, 0, 0, 0.06);
--fg-code-bg: #f0ece7;
--fg-code-text: #7a4200;
--fg-code-border: #d5d0cb;
--fg-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
--fg-shadow-accent: 0 0 12px rgba(204, 112, 0, 0.1);
}
/* ================================================================
GLOBAL RESETS & TYPOGRAPHY
================================================================ */
body {
background-color: var(--fg-bg-primary) !important;
color: var(--fg-text-primary) !important;
font-family: 'Inter', ui-sans-serif, system-ui, -apple-system,
BlinkMacSystemFont, 'Segoe UI', Roboto,
'Helvetica Neue', Arial, sans-serif !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-image: radial-gradient(ellipse at center, rgba(255,140,0,0.03) 0%, transparent 70%);
background-attachment: fixed;
transition: background-color var(--fg-transition),
color var(--fg-transition);
}
/* ================================================================
CONTENT AREA
================================================================ */
.mw-body,
.vector-body,
.mw-page-container {
background-color: var(--fg-bg-secondary) !important;
color: var(--fg-text-primary) !important;
transition: background-color var(--fg-transition);
}
.mw-body-content {
background-color: var(--fg-bg-secondary) !important;
color: var(--fg-text-primary);
line-height: 1.7;
}
/* Vector 2022 main column background */
.mw-page-container-inner {
background-color: var(--fg-bg-secondary) !important;
}
/* ================================================================
HEADINGS
================================================================ */
.mw-body h1,
.mw-body h2,
.mw-body h3,
.mw-body h4,
.mw-body h5,
.mw-body h6,
.mw-first-heading {
font-family: 'Space Grotesk', 'Inter', ui-sans-serif, system-ui, sans-serif !important;
color: var(--fg-text-heading) !important;
font-weight: 700;
letter-spacing: -0.01em;
transition: color var(--fg-transition);
}
.mw-body h1,
.mw-first-heading {
font-size: 2em;
border-bottom: 2px solid var(--fg-accent) !important;
padding-bottom: 0.3em;
}
.mw-body h2 {
font-size: 1.5em;
border-bottom: 1px solid var(--fg-border-accent) !important;
padding-bottom: 0.2em;
}
.mw-body h3 { font-size: 1.25em; }
.mw-body h4 { font-size: 1.1em; }
/* Section edit links */
.mw-editsection a {
color: var(--fg-text-secondary) !important;
}
.mw-editsection a:hover {
color: var(--fg-accent) !important;
}
/* ================================================================
LINKS
================================================================ */
/* Normal links */
.mw-body a:not(.mw-ui-button):not(.new):not(.external),
.mw-body-content a:not(.new):not(.external) {
color: var(--fg-text-link) !important;
text-decoration: none;
transition: color var(--fg-transition);
}
.mw-body a:not(.mw-ui-button):visited {
color: var(--fg-text-link-visited) !important;
}
.mw-body a:not(.mw-ui-button):hover {
color: var(--fg-text-link-hover) !important;
text-decoration: underline;
}
/* Red links (missing pages) */
.mw-body a.new,
.mw-body-content a.new {
color: var(--fg-text-link-new) !important;
}
/* External links */
.mw-body a.external {
color: var(--fg-text-link) !important;
}
.mw-body a.external:hover {
color: var(--fg-text-link-hover) !important;
}
/* ================================================================
FOCUS STYLES (Accessibility)
================================================================ */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
.mw-ui-button:focus-visible,
.cdx-button:focus-visible,
.cdx-text-input__input:focus-visible,
#fg-theme-toggle:focus-visible {
outline: 2px solid var(--fg-accent) !important;
outline-offset: 2px;
box-shadow: 0 0 0 4px var(--fg-accent-glow) !important;
}
/* Remove default outline for mouse users, keep for keyboard */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
input:focus:not(:focus-visible) {
outline: none;
}
/* ================================================================
SIDEBAR / NAVIGATION
================================================================ */
/* Vector 2022 sidebar */
.vector-column-start,
.vector-main-menu,
nav.vector-menu-portal,
.vector-main-menu-container {
background-color: var(--fg-bg-sidebar) !important;
transition: background-color var(--fg-transition);
}
/* Sidebar headings */
.vector-menu-portal .vector-menu-heading,
.vector-menu-heading {
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
font-weight: 600;
text-transform: uppercase;
font-size: 0.75em;
letter-spacing: 0.08em;
}
/* Sidebar links */
.vector-menu-portal .vector-menu-content li a,
.vector-menu-content-list a {
color: var(--fg-text-secondary) !important;
transition: color var(--fg-transition);
}
.vector-menu-portal .vector-menu-content li a:hover,
.vector-menu-content-list a:hover {
color: var(--fg-accent-hover) !important;
}
/* ================================================================
HEADER / TOP BAR
================================================================ */
.vector-header,
.vector-sticky-header,
.vector-header-container {
background-color: var(--fg-bg-header) !important;
border-bottom: 1px solid var(--fg-border) !important;
transition: background-color var(--fg-transition);
}
/* Logo text */
.mw-logo-wordmark,
.vector-header a.mw-logo-wordmark {
color: var(--fg-accent) !important;
}
/* Tab bar */
.vector-menu-tabs .selected a,
.vector-menu-tabs li.selected a {
color: var(--fg-accent) !important;
border-bottom-color: var(--fg-accent) !important;
}
.vector-menu-tabs li a {
color: var(--fg-text-secondary) !important;
}
.vector-menu-tabs li a:hover {
color: var(--fg-accent-hover) !important;
}
/* User menu */
.vector-user-links a,
#pt-userpage a,
#pt-anonuserpage {
color: var(--fg-text-secondary) !important;
}
/* ================================================================
VECTOR 2022 — ADDITIONAL CHROME
================================================================ */
/* Notification badge */
.mw-echo-notifications-badge {
background-color: var(--fg-accent) !important;
color: #000 !important;
}
/* User menu dropdown + all Vector dropdowns */
.vector-user-menu-more,
.vector-dropdown-content,
#p-cactions .vector-menu-content,
#p-views .vector-menu-content {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.vector-dropdown-content a {
color: var(--fg-text-secondary) !important;
}
.vector-dropdown-content a:hover {
color: var(--fg-accent) !important;
background-color: var(--fg-accent-glow) !important;
}
/* Sticky header when scrolled */
.vector-sticky-header-visible .vector-sticky-header {
background-color: var(--fg-bg-header) !important;
border-bottom: 1px solid var(--fg-border) !important;
box-shadow: var(--fg-shadow);
}
/* Page toolbar (article actions bar) */
.vector-page-toolbar,
.vector-page-toolbar-container {
background-color: var(--fg-bg-secondary) !important;
border-bottom: 1px solid var(--fg-border-subtle) !important;
}
/* Watchstar */
#ca-watch a,
#ca-unwatch a {
color: var(--fg-text-secondary) !important;
}
#ca-unwatch a {
color: var(--fg-accent) !important;
}
/* Article status indicators */
.mw-indicators {
color: var(--fg-text-secondary);
}
/* ================================================================
SEARCH BOX
================================================================ */
.cdx-text-input__input,
.vector-search-box-vue input,
.vector-search-box input[type="search"],
#searchInput {
background-color: var(--fg-bg-input) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
border-radius: 6px !important;
transition: border-color var(--fg-transition),
background-color var(--fg-transition);
}
.cdx-text-input__input:focus,
#searchInput:focus {
border-color: var(--fg-accent) !important;
box-shadow: 0 0 0 2px var(--fg-accent-glow) !important;
outline: none !important;
}
/* Search suggestions dropdown */
.cdx-menu,
.suggestions,
.suggestions-results {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.cdx-menu-item--highlighted,
.suggestions-result-current {
background-color: var(--fg-accent-glow) !important;
}
/* ================================================================
TABLE OF CONTENTS
================================================================ */
.vector-toc,
.sidebar-toc,
.vector-toc-landmark {
background-color: var(--fg-bg-sidebar) !important;
border-right: 1px solid var(--fg-border-subtle) !important;
}
.sidebar-toc .sidebar-toc-header {
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', sans-serif !important;
font-weight: 600;
}
.sidebar-toc .sidebar-toc-link {
color: var(--fg-text-secondary) !important;
}
.sidebar-toc .sidebar-toc-link:hover {
color: var(--fg-accent) !important;
}
.sidebar-toc .sidebar-toc-list-item-active > .sidebar-toc-link {
color: var(--fg-accent) !important;
border-left-color: var(--fg-accent) !important;
}
/* ================================================================
CODE & PRE
================================================================ */
pre,
code,
.mw-code,
tt,
kbd,
samp {
font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular,
Menlo, Monaco, Consolas, 'Liberation Mono',
'Courier New', monospace !important;
font-size: 0.9em;
}
pre,
.mw-code {
background-color: var(--fg-code-bg) !important;
color: var(--fg-code-text) !important;
border: 1px solid var(--fg-code-border) !important;
border-radius: 6px;
padding: 1em !important;
overflow-x: auto;
}
code {
background-color: var(--fg-code-bg) !important;
color: var(--fg-code-text) !important;
padding: 0.15em 0.4em;
border-radius: 3px;
border: 1px solid var(--fg-code-border) !important;
}
/* ================================================================
TABLES
================================================================ */
table.wikitable {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
border-collapse: collapse;
margin: 1em 0;
width: auto;
}
table.wikitable > tr > th,
table.wikitable > * > tr > th {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
border: 1px solid var(--fg-border-light) !important;
padding: 0.5em 0.8em;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
font-weight: 600;
text-align: left;
}
table.wikitable > tr > td,
table.wikitable > * > tr > td {
border: 1px solid var(--fg-border) !important;
padding: 0.4em 0.8em;
}
/* Alternating row striping */
table.wikitable > tr:nth-child(even),
table.wikitable > tbody > tr:nth-child(even) {
background-color: var(--fg-bg-elevated) !important;
}
/* ================================================================
INFOBOXES (merged from setup_wiki_infobox.py)
================================================================ */
.infobox {
border: 1px solid var(--fg-border-accent) !important;
border-spacing: 3px;
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
float: right;
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
box-shadow: var(--fg-shadow-accent);
border-radius: 4px;
}
.infobox .infobox-title {
font-size: 125%;
font-weight: bold;
text-align: center;
padding: 0.5em 0.3em;
background: linear-gradient(135deg, var(--fg-gunmetal-dark), var(--fg-gunmetal)) !important;
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
border-radius: 3px 3px 0 0;
}
.infobox .infobox-above {
text-align: center;
padding: 0.3em;
font-style: italic;
color: var(--fg-text-secondary);
}
.infobox .infobox-subheader {
text-align: center;
padding: 0.2em;
font-size: 95%;
color: var(--fg-text-secondary);
}
.infobox .infobox-image {
text-align: center;
padding: 0.4em 0.2em;
}
.infobox .infobox-caption {
font-size: 90%;
color: var(--fg-text-secondary);
padding-top: 0.2em;
text-align: center;
}
.infobox .infobox-header {
text-align: center;
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
font-weight: bold;
padding: 0.3em;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
}
.infobox .infobox-label {
vertical-align: top;
text-align: left;
padding: 0.2em 0.4em 0.2em 0.2em;
font-weight: bold;
white-space: nowrap;
width: 35%;
color: var(--fg-text-secondary);
}
.infobox .infobox-data {
vertical-align: top;
text-align: left;
padding: 0.2em;
}
.infobox .infobox-data-full {
text-align: center;
}
.infobox .infobox-below {
text-align: center;
padding: 0.3em;
border-top: 1px solid var(--fg-border) !important;
font-size: 90%;
color: var(--fg-text-secondary);
}
.infobox-fusiongirl .infobox-title {
background: linear-gradient(135deg, var(--fg-gunmetal-dark), var(--fg-gunmetal)) !important;
color: var(--fg-accent) !important;
}
.infobox-fusiongirl .infobox-header {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
}
@media (max-width: 720px) {
.infobox {
float: none;
margin: 0.5em auto;
width: 100%;
max-width: 22em;
}
}
/* ================================================================
BLOCKQUOTES
================================================================ */
blockquote {
border-left: 3px solid var(--fg-accent) !important;
background-color: var(--fg-bg-elevated) !important;
color: var(--fg-text-primary);
padding: 0.8em 1.2em;
margin: 1em 0;
border-radius: 0 4px 4px 0;
font-style: italic;
}
/* ================================================================
CATEGORIES / FOOTER
================================================================ */
.catlinks {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-secondary) !important;
border-radius: 4px;
padding: 0.5em 1em;
margin-top: 1.5em;
}
.catlinks a {
color: var(--fg-accent-muted) !important;
}
.catlinks a:hover {
color: var(--fg-accent) !important;
}
#footer,
.vector-footer {
background-color: var(--fg-bg-primary) !important;
color: var(--fg-text-secondary) !important;
border-top: 1px solid var(--fg-border) !important;
}
#footer a {
color: var(--fg-text-secondary) !important;
}
#footer a:hover {
color: var(--fg-accent) !important;
}
/* ================================================================
SPECIAL PAGES & FORMS
================================================================ */
/* Fieldsets */
fieldset {
border-color: var(--fg-border) !important;
}
legend {
color: var(--fg-accent) !important;
}
/* Form inputs */
input[type="text"],
input[type="password"],
input[type="email"],
textarea,
select {
background-color: var(--fg-bg-input) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
border-radius: 4px;
}
input[type="text"]:focus,
input[type="password"]:focus,
textarea:focus {
border-color: var(--fg-accent) !important;
box-shadow: 0 0 0 2px var(--fg-accent-glow) !important;
}
/* Buttons */
.mw-ui-button,
input[type="submit"],
button {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border-light) !important;
border-radius: 4px;
transition: all var(--fg-transition);
}
.mw-ui-button:hover,
input[type="submit"]:hover,
button:hover {
background-color: var(--fg-gunmetal-light) !important;
border-color: var(--fg-accent) !important;
color: var(--fg-accent) !important;
}
.mw-ui-button.mw-ui-progressive,
.cdx-button--action-progressive {
background-color: var(--fg-accent) !important;
color: #000 !important;
border-color: var(--fg-accent) !important;
font-weight: 600;
}
.mw-ui-button.mw-ui-progressive:hover {
background-color: var(--fg-accent-hover) !important;
}
/* ================================================================
OOUI WIDGET THEMING (edit forms, preferences, etc.)
================================================================ */
.oo-ui-widget {
color: var(--fg-text-primary);
}
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea,
.oo-ui-inputWidget-input {
background-color: var(--fg-bg-input) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
}
.oo-ui-textInputWidget input:focus,
.oo-ui-textInputWidget textarea:focus {
border-color: var(--fg-accent) !important;
box-shadow: 0 0 0 2px var(--fg-accent-glow) !important;
}
.oo-ui-labelWidget {
color: var(--fg-text-primary);
}
.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border-light) !important;
border-radius: 4px;
}
.oo-ui-buttonElement-framed .oo-ui-buttonElement-button:hover {
background-color: var(--fg-gunmetal-light) !important;
border-color: var(--fg-accent) !important;
}
.oo-ui-flaggedElement-progressive .oo-ui-buttonElement-button {
background-color: var(--fg-accent) !important;
color: #000 !important;
border-color: var(--fg-accent) !important;
}
.oo-ui-flaggedElement-destructive .oo-ui-buttonElement-button {
background-color: #8b0000 !important;
color: #fff !important;
border-color: #a00 !important;
}
.oo-ui-popupWidget-popup,
.oo-ui-menuSelectWidget {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-optionWidget-highlighted {
background-color: var(--fg-accent-glow) !important;
}
.oo-ui-optionWidget-selected {
background-color: var(--fg-accent-glow-strong) !important;
}
.oo-ui-checkboxInputWidget [type="checkbox"] + span,
.oo-ui-radioInputWidget [type="radio"] + span {
background-color: var(--fg-bg-input) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-dropdownWidget .oo-ui-dropdownWidget-handle {
background-color: var(--fg-bg-input) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.oo-ui-tagMultiselectWidget-input input {
color: var(--fg-text-primary) !important;
}
/* ================================================================
DIFF / HISTORY / SPECIAL CONTENT
================================================================ */
.diff-context {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
.diff-addedline {
background-color: rgba(0, 180, 0, 0.15) !important;
}
.diff-deletedline {
background-color: rgba(220, 0, 0, 0.15) !important;
}
/* Recent changes */
.mw-changeslist-line {
border-bottom: 1px solid var(--fg-border-subtle);
}
/* ================================================================
CONTENT NOTICES / AMBOX / NAVBOX / MESSAGE BOXES
================================================================ */
.ambox {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border-accent) !important;
}
/* Navbox */
.navbox {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
}
.navbox-title {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
}
.navbox-group {
background-color: var(--fg-gunmetal-dark) !important;
color: var(--fg-accent-muted) !important;
font-weight: 600;
}
.navbox-list {
border-color: var(--fg-border) !important;
}
.navbox-even {
background-color: var(--fg-bg-elevated) !important;
}
.navbox-odd {
background-color: var(--fg-bg-surface) !important;
}
/* mw-datatable (Special pages) */
table.mw-datatable {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
}
table.mw-datatable th {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
border: 1px solid var(--fg-border-light) !important;
}
table.mw-datatable td {
border: 1px solid var(--fg-border) !important;
}
table.mw-datatable tr:hover {
background-color: var(--fg-accent-glow) !important;
}
/* Message boxes (all types) */
.messagebox,
.mbox-small,
table.ambox,
table.tmbox,
table.ombox,
table.cmbox,
table.fmbox,
table.imbox {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
/* Succession boxes, metadata */
.succession-box,
.metadata {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
/* ================================================================
SEARCH HIGHLIGHT / RECENT CHANGES / NOTIFICATIONS
================================================================ */
/* Search result match highlight */
.searchmatch {
background-color: var(--fg-accent-glow-strong) !important;
color: var(--fg-text-heading) !important;
font-weight: 600;
}
/* Search results page */
.mw-search-result-heading a {
color: var(--fg-text-link) !important;
}
/* Recent changes legend */
.mw-changeslist-legend {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.mw-rcfilters-ui-changesListWrapperWidget .mw-changeslist {
color: var(--fg-text-primary) !important;
}
/* RC filters panel */
.mw-rcfilters-ui-filterTagMultiselectWidget {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
/* Echo notifications */
.mw-echo-ui-notificationBadgeButtonPopupWidget-popup {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
}
.mw-echo-ui-notificationItemWidget {
background-color: var(--fg-bg-surface) !important;
border-bottom: 1px solid var(--fg-border-subtle) !important;
color: var(--fg-text-primary) !important;
}
.mw-echo-ui-notificationItemWidget:hover {
background-color: var(--fg-bg-elevated) !important;
}
.mw-echo-ui-notificationItemWidget-unread {
background-color: var(--fg-accent-glow) !important;
}
/* ================================================================
THEME TOGGLE BUTTON STYLES
================================================================ */
#fg-theme-toggle {
cursor: pointer;
padding: 5px 14px;
border: 1px solid var(--fg-accent);
border-radius: 20px;
background: transparent;
color: var(--fg-accent);
font-family: 'Inter', sans-serif;
font-size: 0.82em;
font-weight: 500;
letter-spacing: 0.02em;
transition: all var(--fg-transition);
white-space: nowrap;
line-height: 1.4;
vertical-align: middle;
}
#fg-theme-toggle:hover {
background: var(--fg-accent-glow-strong);
color: var(--fg-accent-hover);
box-shadow: var(--fg-shadow-accent);
}
/* Position in Monobook personal tools bar */
#pt-theme-toggle {
display: inline-block;
margin-left: 8px;
}
/* ================================================================
SCROLLBAR STYLING (Webkit)
================================================================ */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--fg-bg-primary);
}
::-webkit-scrollbar-thumb {
background: var(--fg-gunmetal);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--fg-gunmetal-light);
}
/* ================================================================
SELECTION HIGHLIGHT
================================================================ */
::selection {
background: var(--fg-accent-glow-strong);
color: var(--fg-text-heading);
}
/* ================================================================
IMAGE / THUMBNAIL THEMING
================================================================ */
/* Don't invert images — they should stay as-is */
.mw-body img {
border-radius: 2px;
}
/* Thumbnail containers */
.thumb,
.thumbinner {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
border-radius: 4px;
}
.thumbcaption {
color: var(--fg-text-secondary) !important;
font-size: 0.9em;
}
/* Gallery */
li.gallerybox div.thumb {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
/* ================================================================
MONOBOOK SKIN — COMPREHENSIVE OVERRIDES
(wiki.fusiongirl.app uses Monobook, not Vector 2022)
================================================================ */
/* ── Core page wrapper ── */
#globalWrapper {
background-color: var(--fg-bg-primary) !important;
}
#column-content {
background-color: transparent !important;
}
/* ── Main content box — Monobook #content ── */
#content {
background-color: var(--fg-bg-secondary) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border) !important;
}
#bodyContent,
.monobook-body {
background-color: var(--fg-bg-secondary) !important;
color: var(--fg-text-primary) !important;
}
#mw-content-text {
background-color: var(--fg-bg-secondary) !important;
color: var(--fg-text-primary) !important;
}
.mw-parser-output {
background-color: transparent !important;
color: var(--fg-text-primary) !important;
}
/* ── Site subtitle / content subtitle ── */
#siteSub,
#contentSub,
#mw-content-subtitle {
color: var(--fg-text-secondary) !important;
}
/* ── Site notice ── */
#siteNotice {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
/* ── Monobook sidebar column ── */
#column-one {
background-color: var(--fg-bg-sidebar) !important;
}
#sidebar {
background-color: var(--fg-bg-sidebar) !important;
}
/* ── Portlets (navigation blocks in sidebar) ── */
.portlet {
background-color: transparent !important;
}
.portlet .pBody {
background-color: transparent !important;
}
/* Portlet headings */
.portlet h3,
.portlet .portlet-label,
#p-navigation h3,
#p-tb h3 {
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
font-weight: 600;
text-transform: uppercase;
font-size: 0.75em;
letter-spacing: 0.08em;
}
/* Portlet links */
.portlet .pBody a,
.portlet .pBody li a,
.portlet ul a {
color: var(--fg-text-secondary) !important;
transition: color var(--fg-transition);
}
.portlet .pBody a:hover,
.portlet .pBody li a:hover,
.portlet ul a:hover {
color: var(--fg-accent-hover) !important;
}
/* Portlet lists */
.portlet .pBody ul,
.portlet .pBody li {
color: var(--fg-text-secondary) !important;
}
/* ── Content actions / tab bar (Monobook #p-cactions) ── */
#p-cactions {
background-color: var(--fg-bg-header) !important;
border-color: var(--fg-border) !important;
}
#p-cactions .pBody {
background-color: var(--fg-bg-header) !important;
border-color: var(--fg-border) !important;
}
#p-cactions ul {
background-color: var(--fg-bg-header) !important;
}
#p-cactions ul li {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
#p-cactions ul li a {
color: var(--fg-text-secondary) !important;
background-color: transparent !important;
}
#p-cactions ul li a:hover {
color: var(--fg-accent) !important;
}
#p-cactions ul li.selected {
background-color: var(--fg-bg-secondary) !important;
border-bottom-color: var(--fg-bg-secondary) !important;
}
#p-cactions ul li.selected a {
color: var(--fg-accent) !important;
}
/* ── Personal tools (Monobook #p-personal) ── */
#p-personal {
background-color: transparent !important;
}
#p-personal .pBody {
background-color: transparent !important;
}
#p-personal ul li a {
color: var(--fg-text-secondary) !important;
}
#p-personal ul li a:hover {
color: var(--fg-accent) !important;
}
/* ── Monobook search box ── */
#p-search {
background-color: transparent !important;
}
#searchBody {
background-color: transparent !important;
}
#searchInput {
background-color: var(--fg-bg-input) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
border-radius: 6px !important;
}
.searchButton {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-text-primary) !important;
border: 1px solid var(--fg-border) !important;
border-radius: 4px !important;
}
.searchButton:hover {
background-color: var(--fg-gunmetal-light) !important;
border-color: var(--fg-accent) !important;
}
/* ── Monobook footer ── */
.mw-footer,
#footer {
background-color: var(--fg-bg-primary) !important;
color: var(--fg-text-secondary) !important;
border-top: 1px solid var(--fg-border) !important;
}
#footer a,
.mw-footer a,
#f-list a {
color: var(--fg-text-secondary) !important;
}
#footer a:hover,
.mw-footer a:hover,
#f-list a:hover {
color: var(--fg-accent) !important;
}
#f-list li {
color: var(--fg-text-secondary) !important;
}
/* Footer icons */
.footer-icons {
background-color: transparent !important;
}
/* ── Mobile menu toggle (Monobook responsive) ── */
.menu-toggle {
background-color: var(--fg-bg-header) !important;
color: var(--fg-accent) !important;
border-color: var(--fg-border) !important;
}
/* ── Logo area ── */
#p-logo {
background-color: transparent !important;
}
/* Override wiki logo with uploaded FusionGirl icon */
.mw-wiki-logo {
background-image: url('https://wiki.fusiongirl.app:443/images/e/e8/FusionGirlIcon_x512.png') !important;
background-size: contain !important;
background-repeat: no-repeat !important;
background-position: center !important;
}
/* ================================================================
TABLE OF CONTENTS — CLASSIC (non-Vector)
================================================================ */
.toc,
#toc,
.toccolours {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.toc h2,
#toc h2,
.toc .toctitle {
color: var(--fg-accent) !important;
font-family: 'Space Grotesk', 'Inter', sans-serif !important;
}
.toc ul a,
#toc ul a {
color: var(--fg-text-link) !important;
}
.toc ul a:hover,
#toc ul a:hover {
color: var(--fg-text-link-hover) !important;
}
.toc .tocnumber {
color: var(--fg-text-secondary) !important;
}
/* ================================================================
GENERIC TABLE OVERRIDES (non-wikitable)
================================================================ */
/* Tables inside article content that aren't .wikitable */
.mw-parser-output table:not(.wikitable):not(.infobox):not(.navbox):not(.ambox):not(.mbox-small):not(.tmbox):not(.ombox):not(.cmbox):not(.fmbox):not(.imbox):not(.mw-datatable) {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
.mw-parser-output table:not(.wikitable):not(.infobox):not(.navbox) th {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
}
.mw-parser-output table:not(.wikitable):not(.infobox):not(.navbox) td {
border-color: var(--fg-border) !important;
}
/* ================================================================
HORIZONTAL RULES
================================================================ */
hr {
border-color: var(--fg-border) !important;
background-color: var(--fg-border) !important;
}
/* ================================================================
DEFINITION LISTS
================================================================ */
dl, dt, dd {
color: var(--fg-text-primary);
}
dt {
font-weight: 600;
color: var(--fg-text-heading);
}
/* ================================================================
COLLAPSIBLE SECTIONS
================================================================ */
.mw-collapsible {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.mw-collapsible-toggle {
color: var(--fg-accent) !important;
}
.mw-collapsible-content {
background-color: transparent !important;
}
/* ================================================================
SPECIAL PAGES — ADDITIONAL COVERAGE
================================================================ */
/* AllPages */
.mw-allpages-body,
.mw-allpages-nav,
.mw-spcontent {
background-color: transparent !important;
color: var(--fg-text-primary) !important;
}
.mw-allpages-body a {
color: var(--fg-text-link) !important;
}
.mw-allpages-body a:hover {
color: var(--fg-text-link-hover) !important;
}
/* Category pages */
#mw-subcategories,
#mw-pages,
.mw-category-group {
color: var(--fg-text-primary) !important;
}
.mw-category-group h3 {
color: var(--fg-text-heading) !important;
}
/* Special pages list */
.mw-specialpages-list td {
color: var(--fg-text-primary) !important;
}
/* User contributions */
.mw-contributions-list {
color: var(--fg-text-primary) !important;
}
/* Log entries */
.mw-logline-block,
.mw-logline-delete,
.mw-logline-move,
.mw-logline-upload,
.mw-logline-newusers,
.mw-logline-patrol,
.mw-logline-protect,
.mw-logline-rights {
color: var(--fg-text-primary) !important;
}
/* ================================================================
EDIT PAGE / FORMS — ADDITIONAL COVERAGE
================================================================ */
/* Edit form wrapper */
.mw-editform,
#editform {
background-color: transparent !important;
color: var(--fg-text-primary) !important;
}
/* Edit options panel */
.editOptions {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
/* Edit notices */
.mw-editnotice,
.mw-newarticletext {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
padding: 0.5em 1em;
border-radius: 4px;
}
/* Preview note */
.previewnote {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border) !important;
}
/* Summary preview */
.mw-summary-preview {
color: var(--fg-text-secondary) !important;
}
/* Warning boxes */
.mw-warning-with-logexcerpt,
.mw-warning,
.mw-message-box,
.mw-message-box-warning,
.mw-message-box-error,
.mw-message-box-success {
background-color: var(--fg-bg-surface) !important;
border: 1px solid var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
/* ================================================================
DIFF VIEW — COMPREHENSIVE
================================================================ */
table.diff {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
table.diff td {
border-color: var(--fg-border) !important;
}
td.diff-marker {
color: var(--fg-text-secondary) !important;
}
td.diff-otitle,
td.diff-ntitle {
background-color: var(--fg-bg-elevated) !important;
color: var(--fg-text-primary) !important;
}
.diffchange {
color: var(--fg-accent) !important;
}
#mw-diff-otitle1, #mw-diff-otitle2, #mw-diff-otitle3,
#mw-diff-ntitle1, #mw-diff-ntitle2, #mw-diff-ntitle3 {
color: var(--fg-text-primary) !important;
}
/* Revision info */
.mw-revision {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
/* ================================================================
OOUI — ADDITIONAL WINDOWS & PANELS
================================================================ */
.oo-ui-panelLayout {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
.oo-ui-windowManager,
.oo-ui-window {
color: var(--fg-text-primary) !important;
}
.oo-ui-dialog .oo-ui-window-head {
background-color: var(--fg-bg-header) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-dialog .oo-ui-window-body {
background-color: var(--fg-bg-surface) !important;
}
.oo-ui-dialog .oo-ui-window-foot {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header .oo-ui-labelElement-label {
color: var(--fg-accent) !important;
}
.oo-ui-fieldLayout .oo-ui-fieldLayout-header .oo-ui-labelElement-label {
color: var(--fg-text-primary) !important;
}
.oo-ui-tabSelectWidget {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-tabOptionWidget {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-secondary) !important;
}
.oo-ui-tabOptionWidget.oo-ui-optionWidget-selected {
background-color: var(--fg-bg-elevated) !important;
color: var(--fg-accent) !important;
}
.oo-ui-tagMultiselectWidget {
background-color: var(--fg-bg-input) !important;
border-color: var(--fg-border) !important;
}
.oo-ui-tagItemWidget {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border) !important;
}
/* ================================================================
CODEX (CDX) COMPONENTS — COMPREHENSIVE
================================================================ */
.cdx-card {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.cdx-dialog {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
.cdx-dialog__header {
background-color: var(--fg-bg-header) !important;
border-color: var(--fg-border) !important;
}
.cdx-dialog__body {
background-color: var(--fg-bg-surface) !important;
}
.cdx-dialog__footer {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.cdx-message {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
.cdx-field {
color: var(--fg-text-primary) !important;
}
.cdx-label {
color: var(--fg-text-primary) !important;
}
.cdx-table {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
}
.cdx-table__header {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
}
.cdx-tabs {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.cdx-tabs__list__item {
color: var(--fg-text-secondary) !important;
}
.cdx-tabs__list__item--selected {
color: var(--fg-accent) !important;
border-color: var(--fg-accent) !important;
}
.cdx-toggle-switch__switch {
background-color: var(--fg-gunmetal) !important;
border-color: var(--fg-border) !important;
}
.cdx-toggle-switch--on .cdx-toggle-switch__switch {
background-color: var(--fg-accent) !important;
}
.cdx-checkbox__icon,
.cdx-radio__icon {
background-color: var(--fg-bg-input) !important;
border-color: var(--fg-border) !important;
}
.cdx-lookup,
.cdx-typeahead-search {
background-color: var(--fg-bg-input) !important;
color: var(--fg-text-primary) !important;
}
.cdx-search-result-title {
color: var(--fg-text-link) !important;
}
.cdx-menu-item {
color: var(--fg-text-primary) !important;
}
.cdx-menu-item:hover,
.cdx-menu-item--highlighted {
background-color: var(--fg-accent-glow) !important;
}
.cdx-select-vue__handle,
.cdx-select__handle {
background-color: var(--fg-bg-input) !important;
border-color: var(--fg-border) !important;
color: var(--fg-text-primary) !important;
}
/* ================================================================
SEARCH RESULTS PAGE — FULL COVERAGE
================================================================ */
.searchresults,
.mw-search-results {
color: var(--fg-text-primary) !important;
}
.mw-search-result {
color: var(--fg-text-primary) !important;
}
.mw-search-result-data {
color: var(--fg-text-secondary) !important;
}
#mw-search-top-table {
background-color: transparent !important;
color: var(--fg-text-primary) !important;
}
.mw-search-profile-tabs {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.search-types .current a {
color: var(--fg-accent) !important;
}
/* ================================================================
PREFERENCES & HTML FORMS
================================================================ */
.mw-htmlform-field,
.mw-htmlform-field-HTMLTextField,
.mw-htmlform-field-HTMLCheckField {
color: var(--fg-text-primary) !important;
}
.mw-prefs-fieldset,
.mw-prefs-fieldset legend {
color: var(--fg-text-primary) !important;
}
.htmlform-tip {
color: var(--fg-text-secondary) !important;
}
/* ================================================================
PRINT FOOTER & MISC ELEMENTS
================================================================ */
.printfooter {
color: var(--fg-text-secondary) !important;
}
/* Jump links (accessibility) */
.mw-jump-link {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-accent) !important;
}
/* Visual clear — no background needed */
.visualClear {
background-color: transparent !important;
}
/* Page title indicator */
.mw-page-title-main {
color: var(--fg-text-heading) !important;
}
/* ================================================================
RC FILTERS — ADDITIONAL PANELS
================================================================ */
.mw-rcfilters-ui-filterWrapperWidget {
background-color: var(--fg-bg-surface) !important;
border-color: var(--fg-border) !important;
}
.mw-rcfilters-ui-filterWrapperWidget-showNewChanges a {
color: var(--fg-accent) !important;
}
.mw-rcfilters-ui-changesListWrapperWidget {
background-color: transparent !important;
}
.mw-rcfilters-ui-formWrapperWidget {
background-color: var(--fg-bg-surface) !important;
}
/* RC filters capsule widgets */
.mw-rcfilters-ui-capsuleItemWidget {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border) !important;
}
/* ================================================================
WATCHLIST
================================================================ */
.mw-changeslist-legend dt {
color: var(--fg-text-heading) !important;
}
.mw-changeslist-legend dd {
color: var(--fg-text-primary) !important;
}
/* ================================================================
CARGO / SEMANTIC MEDIAWIKI
================================================================ */
.cargoTable,
.smw-table-row,
.smw-format-table {
background-color: var(--fg-bg-surface) !important;
color: var(--fg-text-primary) !important;
border-color: var(--fg-border) !important;
}
.cargoTable th,
.smw-table-row th {
background-color: var(--fg-gunmetal) !important;
color: var(--fg-accent) !important;
}
/* ================================================================
NUCLEAR OPTION — Catch remaining white backgrounds
Targets any element inside #content that has inline or
inherited white/near-white background from default MW styles
================================================================ */
#content div,
#content td,
#content th,
#content li,
#content span,
#content p,
#content fieldset,
#content legend {
border-color: inherit;
}
/* Override Monobook's default link colors within content */
#content a:not(.new):not(.external):not(.mw-ui-button) {
color: var(--fg-text-link) !important;
}
#content a:not(.new):not(.external):not(.mw-ui-button):visited {
color: var(--fg-text-link-visited) !important;
}
#content a:not(.new):not(.external):not(.mw-ui-button):hover {
color: var(--fg-text-link-hover) !important;
}
/* ================================================================
TRANSITION SMOOTHING — targeted elements (not *)
================================================================ */
body,
.mw-body,
.vector-body,
.mw-page-container,
.mw-page-container-inner,
.vector-column-start,
.vector-main-menu,
.vector-main-menu-container,
.vector-header,
.vector-sticky-header,
.vector-header-container,
.vector-toc,
.sidebar-toc,
.vector-footer,
#footer,
#globalWrapper,
#column-content,
#column-one,
#content,
#bodyContent,
#sidebar,
.portlet,
.pBody,
#p-cactions,
#p-cactions ul li,
#p-personal,
.catlinks,
.infobox,
table.wikitable,
table.mw-datatable,
.navbox,
.messagebox,
blockquote,
pre,
code,
fieldset,
.mw-ui-button,
.cdx-button,
button,
input,
select,
textarea,
a,
.thumb,
.thumbinner,
.ambox,
.diff-context,
.diff-addedline,
.diff-deletedline,
#fg-theme-toggle,
.oo-ui-widget,
.oo-ui-buttonElement-button,
.oo-ui-inputWidget-input,
.oo-ui-popupWidget-popup,
.vector-dropdown-content,
.cdx-menu,
.cdx-text-input__input,
.vector-menu-content,
.vector-user-menu-more,
.vector-page-toolbar,
.toc,
#toc,
.searchButton {
transition: background-color 0.15s ease,
color 0.15s ease,
border-color 0.15s ease,
box-shadow 0.15s ease;
}
/* Exclude media from transition */
img, video, canvas, svg, .mw-gallery-traditional {
transition: none !important;
}
/* ================================================================
MATH / LATEX (ext.math) — DARK MODE FIX
MediaWiki renders <math> as SVG images with class mw-invert.
In dark mode, we invert them so black→white. Light mode keeps them as-is.
Also style MathML fallback and any inline TeX.
================================================================ */
/* Dark mode (default): invert black SVG math images to white */
img.mwe-math-fallback-image-inline,
img.mwe-math-fallback-image-display {
filter: invert(1) hue-rotate(180deg) !important;
}
/* MathML rendered inline (if visible) */
.mwe-math-element math,
.mwe-math-element .mwe-math-mathml-inline,
.mwe-math-element .mwe-math-mathml-display {
color: var(--fg-text-primary) !important;
}
/* Light mode: undo inversion — math stays black on light bg */
html.fg-light-mode img.mwe-math-fallback-image-inline,
html.fg-light-mode img.mwe-math-fallback-image-display {
filter: none !important;
}
html.fg-light-mode .mwe-math-element math,
html.fg-light-mode .mwe-math-element .mwe-math-mathml-inline,
html.fg-light-mode .mwe-math-element .mwe-math-mathml-display {
color: var(--fg-text-primary) !important;
}
/* Generic fallback: any .mw-invert element in dark mode */
.mw-invert {
filter: invert(1) hue-rotate(180deg) !important;
}
html.fg-light-mode .mw-invert {
filter: none !important;
}
/* ================================================================
PRINT STYLES — Strip theming for print
================================================================ */
@media print {
:root {
--fg-bg-primary: #fff;
--fg-bg-secondary: #fff;
--fg-bg-surface: #fff;
--fg-bg-elevated: #fff;
--fg-bg-input: #fff;
--fg-text-primary: #000;
--fg-text-secondary: #333;
--fg-text-heading: #000;
--fg-text-link: #0645AD;
--fg-border: #ccc;
--fg-accent: #000;
}
#fg-theme-toggle { display: none !important; }
body { background-image: none !important; }
}
/* ================================================================
PREFERS-REDUCED-MOTION
================================================================ */
@media (prefers-reduced-motion: reduce) {
body,
.mw-body,
.vector-body,
.mw-page-container,
.vector-header,
.vector-sticky-header,
a,
button,
input,
#fg-theme-toggle,
.oo-ui-widget {
transition-duration: 0.01ms !important;
}
}