MediaWiki:Common.css

From FusionGirl Wiki
Revision as of 13:40, 15 March 2026 by JonoThora (talk | contribs) (FusionGirl wiki theme — dark default, amber/gun-metal palette, light toggle [Mecha Jono])
Jump to navigationJump to search

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

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* ================================================================
   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;
}


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