MediaWiki:Common.css: Difference between revisions
From FusionGirl Wiki
Jump to navigationJump to search
(Add infobox CSS styles) |
(FusionGirl wiki theme — dark default, amber/gun-metal palette, light toggle [Mecha Jono]) |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* ============================================================ | /* ================================================================ | ||
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 { | .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 { | .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 { | .infobox .infobox-above { | ||
text-align: center; | |||
padding: 0.3em; | |||
font-style: italic; | |||
color: var(--fg-text-secondary); | |||
} | } | ||
.infobox .infobox-subheader { | .infobox .infobox-subheader { | ||
text-align: center; | |||
padding: 0.2em; | |||
font-size: 95%; | |||
color: var(--fg-text-secondary); | |||
} | } | ||
.infobox .infobox-image { | .infobox .infobox-image { | ||
text-align: center; | |||
padding: 0.4em 0.2em; | |||
} | } | ||
.infobox .infobox-caption { | .infobox .infobox-caption { | ||
font-size: 90%; | |||
color: var(--fg-text-secondary); | |||
padding-top: 0.2em; | |||
text-align: center; | |||
} | } | ||
.infobox .infobox-header { | .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 { | .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 { | .infobox .infobox-data { | ||
vertical-align: top; | |||
text-align: left; | |||
padding: 0.2em; | |||
} | } | ||
.infobox .infobox-data-full { | .infobox .infobox-data-full { | ||
text-align: center; | |||
} | } | ||
.infobox .infobox-below { | .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 { | .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 { | .infobox-fusiongirl .infobox-header { | ||
background-color: var(--fg-gunmetal) !important; | |||
color: var(--fg-accent) !important; | |||
} | } | ||
@media (max-width: 720px) { | @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; | |||
} | |||
} | } | ||
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;
}
}