Jump to content

MediaWiki:Common.css

From Misfits Nuclear Wasteland

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

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.

/* ================================================================ */
/*  MISFITS NUCLEAR WASTELAND - FULL DARK MODE (Vector 2022)        */
/*  Applies site-wide for all visitors. Modeled after SS14 wiki.    */
/*  Two-tone: dark outer shell (#111) + lighter content (#1b1b1f).  */
/*  Last updated by MisfitsGuidebookBot                             */
/* ================================================================ */

/* ── Color scheme declaration ──────────────────────────────────── */
:root {
    color-scheme: dark;

    /* Core palette */
    --bg-outer:       #111111;
    --bg-shell:       #1b1b1f;
    --bg-content:     #212126;
    --bg-panel:       #212126;
    --bg-panel-head:  #1b1b1f;
    --bg-elevated:    #28282e;
    --bg-hover:       #2e2e34;

    --border-soft:    #2a2a30;
    --border-mid:     #3a3a42;
    --border-strong:  #4a4a52;

    --text-body:      #d4d4d4;
    --text-heading:   #e8e8e8;
    --text-muted:     #888;
    --text-faint:     #666;

    --link-color:         #6bba5e;
    --link-visited:       #8aaa7a;
    --link-hover:         #7dd06e;
    --link-red:           #cc5555;

    --accent:         #6bba5e;
    --accent-dim:     #3a5a2a;

    /* Override Vector 2022 CSS custom properties */
    --background-color-base:             var(--bg-shell);
    --background-color-neutral:          var(--bg-content);
    --background-color-neutral-subtle:   var(--bg-shell);
    --background-color-interactive:      var(--bg-elevated);
    --background-color-interactive--hover: var(--bg-hover);
    --background-color-progressive:      var(--accent);
    --background-color-progressive--active: var(--accent-dim);
    --color-base:                        var(--text-body);
    --color-base--subtle:                var(--text-muted);
    --color-emphasized:                  var(--text-heading);
    --color-link:                        var(--link-color);
    --color-link--visited:               var(--link-visited);
    --color-progressive:                 var(--accent);
    --color-progressive--hover:          var(--link-hover);
    --border-color-base:                 var(--border-mid);
    --border-color-subtle:               var(--border-soft);
    --border-color-muted:                var(--border-strong);
    --box-shadow-drop-medium:            0 2px 8px rgba(0,0,0,0.6);
}

/*
 * When Vector 2022's built-in night mode is active, it overrides
 * the same CSS custom properties with its own dark palette.
 * We re-assert our palette here so it wins over Vector's night vars.
 */
html.skin-theme-clientpref-night {
    --background-color-base:             var(--bg-shell)   !important;
    --background-color-neutral:          var(--bg-content)  !important;
    --background-color-neutral-subtle:   var(--bg-shell)    !important;
    --background-color-interactive:      var(--bg-elevated) !important;
    --background-color-interactive--hover: var(--bg-hover)  !important;
    --background-color-progressive:      var(--accent)      !important;
    --background-color-progressive--active: var(--accent-dim) !important;
    --color-base:                        var(--text-body)   !important;
    --color-base--subtle:                var(--text-muted)  !important;
    --color-emphasized:                  var(--text-heading) !important;
    --color-link:                        var(--link-color)  !important;
    --color-link--visited:               var(--link-visited) !important;
    --color-progressive:                 var(--accent)      !important;
    --color-progressive--hover:          var(--link-hover)  !important;
    --border-color-base:                 var(--border-mid)  !important;
    --border-color-subtle:               var(--border-soft) !important;
    --border-color-muted:                var(--border-strong) !important;
    --box-shadow-drop-medium:            0 2px 8px rgba(0,0,0,0.6) !important;
}

/* Same overrides for OS-level prefers-color-scheme when user chose "auto" */
@media (prefers-color-scheme: dark) {
    html.skin-theme-clientpref-os {
        --background-color-base:             var(--bg-shell)   !important;
        --background-color-neutral:          var(--bg-content)  !important;
        --background-color-neutral-subtle:   var(--bg-shell)    !important;
        --background-color-interactive:      var(--bg-elevated) !important;
        --background-color-interactive--hover: var(--bg-hover)  !important;
        --background-color-progressive:      var(--accent)      !important;
        --background-color-progressive--active: var(--accent-dim) !important;
        --color-base:                        var(--text-body)   !important;
        --color-base--subtle:                var(--text-muted)  !important;
        --color-emphasized:                  var(--text-heading) !important;
        --color-link:                        var(--link-color)  !important;
        --color-link--visited:               var(--link-visited) !important;
        --color-progressive:                 var(--accent)      !important;
        --color-progressive--hover:          var(--link-hover)  !important;
        --border-color-base:                 var(--border-mid)  !important;
        --border-color-subtle:               var(--border-soft) !important;
        --border-color-muted:                var(--border-strong) !important;
        --box-shadow-drop-medium:            0 2px 8px rgba(0,0,0,0.6) !important;
    }
}

/* ================================================================ */
/*  A. STRUCTURAL: outer shell, page container, content area        */
/* ================================================================ */

html, body {
    background: var(--bg-outer) !important;
    color: var(--text-body) !important;
}

/* The entire page wrapper */
.mw-page-container {
    background: var(--bg-shell) !important;
    border-color: var(--bg-shell) !important;
}

/* Content area - slightly lighter than shell for visual depth */
.mw-body {
    background: var(--bg-content) !important;
    color: var(--text-body) !important;
    border-color: var(--border-soft) !important;
    border-radius: 4px;
    padding: 1.2em 1.5em !important;
}
.vector-body {
    color: var(--text-body) !important;
}

/* ================================================================ */
/*  B. HEADER BAR                                                   */
/* ================================================================ */

.vector-header,
.vector-header-container {
    background: var(--bg-shell) !important;
    color: var(--text-body) !important;
    border-bottom: 1px solid var(--border-soft) !important;
}
/* Sticky header on scroll */
.vector-sticky-header {
    background: var(--bg-shell) !important;
    border-bottom: 1px solid var(--border-soft) !important;
}
.vector-header a,
.vector-sticky-header a {
    color: var(--text-muted) !important;
}
.vector-header a:hover,
.vector-sticky-header a:hover {
    color: var(--accent) !important;
}

/* Site name / logo text */
.mw-logo-wordmark,
.vector-header .mw-logo-wordmark {
    filter: brightness(0) invert(0.85);
}

/* ================================================================ */
/*  C. LEFT SIDEBAR (Main Menu) - card-panel style                  */
/* ================================================================ */

.vector-column-start {
    background: var(--bg-shell) !important;
}
.vector-main-menu-container,
.vector-main-menu-landmark {
    background: var(--bg-shell) !important;
}

/* Main menu panel - card style */
.vector-main-menu {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-soft) !important;
    border-radius: 6px !important;
    padding: 0.5em 0.8em !important;
    margin-bottom: 0.8em !important;
}
/* Main menu header label */
.vector-main-menu .vector-pinnable-header {
    background: transparent !important;
    border-bottom: 1px solid var(--border-soft) !important;
    margin-bottom: 0.4em !important;
    padding-bottom: 0.4em !important;
}
.vector-main-menu .vector-pinnable-header-label {
    color: var(--text-heading) !important;
    font-weight: bold !important;
}

/* Individual menu sections inside sidebar (Navigation, etc.) */
.vector-main-menu .vector-menu.mw-portlet {
    background: transparent !important;
    margin-bottom: 0.6em !important;
}
.vector-main-menu .vector-menu-heading {
    color: var(--text-body) !important;
    font-weight: 600 !important;
    border-bottom: 1px solid var(--border-soft) !important;
    padding-bottom: 0.3em !important;
    margin-bottom: 0.3em !important;
}
/* Sidebar links */
.vector-main-menu a,
.vector-main-menu .vector-menu-content a,
.vector-menu-portal .vector-menu-content a {
    color: var(--text-muted) !important;
}
.vector-main-menu a:hover,
.vector-menu-portal .vector-menu-content a:hover {
    color: var(--accent) !important;
}

/* ================================================================ */
/*  D. RIGHT SIDEBAR (TOC + Tools + Appearance) - card-panel style  */
/* ================================================================ */

.vector-column-end {
    background: var(--bg-shell) !important;
}

/* Table of Contents panel - card style */
.vector-toc,
.vector-toc-landmark .vector-toc {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-soft) !important;
    border-radius: 6px !important;
    padding: 0.5em 0.8em !important;
    margin-bottom: 0.8em !important;
}
.vector-toc .vector-pinnable-header {
    background: transparent !important;
    border-bottom: 1px solid var(--border-soft) !important;
    margin-bottom: 0.4em !important;
    padding-bottom: 0.4em !important;
}
.vector-toc .vector-pinnable-header-label,
.sidebar-toc .sidebar-toc-header {
    color: var(--text-heading) !important;
    font-weight: bold !important;
}
.vector-toc a,
.sidebar-toc a {
    color: var(--text-muted) !important;
}
.vector-toc a:hover,
.sidebar-toc a:hover {
    color: var(--accent) !important;
}
.vector-toc-list-item-active > .sidebar-toc-link {
    color: var(--accent) !important;
    border-left-color: var(--accent) !important;
}
.sidebar-toc .sidebar-toc-list-item {
    border-left-color: var(--border-soft) !important;
}
.vector-toc-numb,
.vector-toc .vector-toc-numb {
    color: var(--text-faint) !important;
}

/* Page Tools panel (pinned to right column) - card style */
.vector-page-tools {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-soft) !important;
    border-radius: 6px !important;
    padding: 0.5em 0.8em !important;
    margin-bottom: 0.8em !important;
}
.vector-page-tools .vector-pinnable-header {
    background: transparent !important;
    border-bottom: 1px solid var(--border-soft) !important;
    margin-bottom: 0.4em !important;
    padding-bottom: 0.4em !important;
}
.vector-page-tools .vector-pinnable-header-label {
    color: var(--text-heading) !important;
    font-weight: bold !important;
}
.vector-page-tools .vector-menu-heading {
    color: var(--text-body) !important;
    font-weight: 600 !important;
    border-bottom: 1px solid var(--border-soft) !important;
    padding-bottom: 0.3em !important;
    margin-bottom: 0.3em !important;
}
.vector-page-tools a {
    color: var(--text-muted) !important;
}
.vector-page-tools a:hover {
    color: var(--accent) !important;
}

/* Appearance settings panel - card style */
.vector-appearance {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-soft) !important;
    border-radius: 6px !important;
    padding: 0.5em 0.8em !important;
    margin-bottom: 0.8em !important;
}
.vector-appearance .vector-pinnable-header {
    background: transparent !important;
    border-bottom: 1px solid var(--border-soft) !important;
    margin-bottom: 0.4em !important;
    padding-bottom: 0.4em !important;
}
.vector-appearance .vector-pinnable-header-label {
    color: var(--text-heading) !important;
    font-weight: bold !important;
}

/* Old-style in-page TOC */
.toc, #toc {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-mid) !important;
    border-radius: 6px !important;
    color: var(--text-body) !important;
}
.toc a, #toc a { color: var(--accent) !important; }
.toc .toctitle, #toc .toctitle { color: var(--text-heading) !important; }
.tocnumber { color: var(--text-muted) !important; }

/* ================================================================ */
/*  E. TABS (Read / Edit / History / More)                          */
/* ================================================================ */

.vector-menu-tabs .mw-list-item a,
.vector-menu-tabs .selected a {
    color: var(--text-body) !important;
}
.vector-menu-tabs .selected a {
    border-bottom-color: var(--accent) !important;
}
nav.vector-menu-tabs {
    border-bottom-color: var(--border-soft) !important;
}

/* ================================================================ */
/*  F. CONTENT: headings, text, links, hr                           */
/* ================================================================ */

.mw-body-content h1,
.mw-body-content h2,
.mw-body-content h3,
.mw-body-content h4,
.mw-body-content h5,
.mw-body-content h6 {
    color: var(--text-heading) !important;
}
.mw-heading,
.mw-body-content h2 {
    border-bottom-color: var(--border-mid) !important;
}
.mw-body-content {
    color: var(--text-body) !important;
}
#firstHeading,
.mw-first-heading {
    color: var(--text-heading) !important;
}
hr {
    border-color: var(--border-mid) !important;
}

/* Links */
.mw-body-content a:not(.new),
.mw-parser-output a:not(.new) {
    color: var(--link-color) !important;
}
.mw-body-content a:visited:not(.new),
.mw-parser-output a:visited:not(.new) {
    color: var(--link-visited) !important;
}
.mw-body-content a:hover,
.mw-parser-output a:hover {
    color: var(--link-hover) !important;
}
.mw-body-content a.new,
.mw-parser-output a.new {
    color: var(--link-red) !important;
}

/* Edit section brackets */
.mw-editsection a {
    color: var(--text-muted) !important;
}

/* ================================================================ */
/*  G. SEARCH                                                       */
/* ================================================================ */

.cdx-text-input__input,
.vector-search-box-input,
input[type="search"] {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}
.cdx-text-input__input::placeholder {
    color: var(--text-faint) !important;
}
/* Suggestions dropdown */
.cdx-menu,
.cdx-typeahead-search__menu,
.suggestions,
.suggestions-results {
    background: var(--bg-content) !important;
    border-color: var(--border-mid) !important;
}
.cdx-menu-item { color: var(--text-body) !important; }
.cdx-menu-item--highlighted,
.cdx-menu-item:hover {
    background: var(--bg-hover) !important;
}

/* Search button (Codex "SEARCH" button) */
.cdx-search-input__end-button,
.cdx-search-input__end-button.cdx-button,
.cdx-button.cdx-search-input__end-button {
    background-color: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}
.cdx-search-input__end-button:hover {
    background-color: var(--bg-hover) !important;
    color: var(--text-heading) !important;
    border-color: var(--border-strong) !important;
}
/* General Codex buttons in non-progressive contexts */
.cdx-button--action-default.cdx-button--weight-normal {
    background-color: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}
.cdx-button--action-default.cdx-button--weight-normal:hover {
    background-color: var(--bg-hover) !important;
}
/* Progressive (primary action) Codex buttons */
.cdx-button--action-progressive.cdx-button--weight-primary {
    background-color: var(--accent) !important;
    color: #fff !important;
    border-color: var(--accent) !important;
}
.cdx-button--action-progressive.cdx-button--weight-primary:hover {
    background-color: var(--link-hover) !important;
    border-color: var(--link-hover) !important;
}
/* Search results page */
.searchresult { color: var(--text-body) !important; }
.mw-search-result-heading a { color: var(--accent) !important; }
.mw-search-result-data { color: var(--text-muted) !important; }

/* ================================================================ */
/*  H. TABLES                                                       */
/* ================================================================ */

.wikitable, table.wikitable {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border: 1px solid var(--border-mid) !important;
}
.wikitable th,
.wikitable > * > tr > th {
    background: var(--bg-panel-head) !important;
    color: var(--text-heading) !important;
    border-color: var(--border-mid) !important;
}
.wikitable td,
.wikitable > * > tr > td {
    border-color: var(--border-soft) !important;
}
.wikitable tr:nth-child(even) {
    background: var(--bg-content) !important;
}
.wikitable caption {
    background: var(--bg-panel-head) !important;
    color: var(--text-heading) !important;
}

/* Sortable table header icons (white arrows) */
.client-js .sortable:not(.jquery-tablesorter) > * > tr:first-child > th:not(.unsortable),
.jquery-tablesorter th.headerSort {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="21" height="9" viewBox="0 0 21 9"><path fill="white" d="m14.5 5-4 4-4-4zm0-1-4-4-4 4z"/></svg>') !important;
}

/* Infoboxes */
.infobox {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}

/* ================================================================ */
/*  I. CODE & PRE BLOCKS                                            */
/* ================================================================ */

pre, code, .mw-code {
    background: var(--bg-shell) !important;
    color: #ccc !important;
    border-color: var(--border-soft) !important;
}

/* ================================================================ */
/*  J. CATEGORIES                                                   */
/* ================================================================ */

.catlinks {
    background: var(--bg-panel) !important;
    border: 1px solid var(--border-soft) !important;
    color: var(--text-muted) !important;
}
.catlinks a { color: var(--accent) !important; }

/* ================================================================ */
/*  K. FOOTER                                                       */
/* ================================================================ */

.mw-footer,
footer.mw-footer,
.vector-footer-container {
    background: var(--bg-outer) !important;
    color: var(--text-faint) !important;
    border-top: 1px solid var(--border-soft) !important;
}
.mw-footer a { color: var(--text-muted) !important; }
.mw-footer a:hover { color: var(--accent) !important; }

/* ================================================================ */
/*  L. DROPDOWNS & MENUS (user menu, "More" tab, etc.)              */
/* ================================================================ */

.vector-dropdown-content,
.vector-menu-content {
    background: var(--bg-content) !important;
    border: 1px solid var(--border-mid) !important;
    box-shadow: 0 2px 12px rgba(0,0,0,0.5) !important;
    border-radius: 6px !important;
}
.vector-dropdown-content a,
.vector-user-links a {
    color: var(--text-body) !important;
}
.vector-dropdown-content a:hover {
    color: var(--accent) !important;
    background: var(--bg-hover) !important;
}
.vector-user-links {
    background: transparent !important;
}

/* When panels are unpinned and shown as dropdowns, card-style them */
.vector-unpinned-container .vector-main-menu,
.vector-unpinned-container .vector-page-tools,
.vector-unpinned-container .vector-toc,
.vector-unpinned-container .vector-appearance {
    background: var(--bg-content) !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0.5em !important;
    margin: 0 !important;
}

/* ================================================================ */
/*  M. PINNABLE HEADER BUTTONS (pin/unpin toggles)                  */
/* ================================================================ */

.vector-pinnable-header-toggle-button,
.vector-pinnable-header-unpin-button,
.vector-pinnable-header-pin-button {
    color: var(--text-muted) !important;
}
.vector-pinnable-header-toggle-button:hover {
    color: var(--accent) !important;
}
.vector-pinnable-header-label {
    color: var(--text-body) !important;
}

/* ================================================================ */
/*  N. EDIT & SPECIAL PAGES                                         */
/* ================================================================ */

textarea,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="url"],
input[type="number"] {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}
/* OOUI widgets */
.oo-ui-textInputWidget input,
.oo-ui-textInputWidget textarea {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
}
.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
    background: var(--bg-elevated) !important;
    color: var(--text-body) !important;
    border-color: var(--border-mid) !important;
}
.oo-ui-buttonElement-framed .oo-ui-buttonElement-button:hover {
    background: var(--bg-hover) !important;
}

/* ================================================================ */
/*  O. DIFF PAGES                                                   */
/* ================================================================ */

.diff-context {
    background: var(--bg-content) !important;
    color: var(--text-body) !important;
}
.diff-addedline {
    background: #1a2e1a !important;
    color: #c8e8c8 !important;
}
.diff-deletedline {
    background: #2e1a1a !important;
    color: #e8c8c8 !important;
}
td.diff-marker {
    color: var(--text-muted) !important;
}

/* ================================================================ */
/*  P. NOTICES, MESSAGE BOXES, WARNINGS                             */
/* ================================================================ */

.mw-message-box,
.mbox-small,
.ambox, .ombox, .tmbox, .cmbox, .fmbox {
    background: var(--bg-elevated) !important;
    border-color: var(--border-mid) !important;
    color: var(--text-body) !important;
}
.mw-message-box-warning {
    background: #2e2a1a !important;
    border-color: #5a5030 !important;
}
.mw-message-box-error {
    background: #2e1a1a !important;
    border-color: #5a3030 !important;
}

/* ================================================================ */
/*  Q. SPECIAL PAGES                                                */
/* ================================================================ */

fieldset {
    border-color: var(--border-mid) !important;
}
legend {
    color: var(--text-body) !important;
}
.mw-special-pages-table td {
    border-color: var(--border-soft) !important;
}
/* Recent changes, watchlist, history */
.mw-changeslist-line,
.mw-contributions-list li {
    border-color: var(--border-soft) !important;
}
#pagehistory li.selected {
    background: var(--accent-dim) !important;
}

/* ================================================================ */
/*  R. THUMBNAILS & IMAGES                                          */
/* ================================================================ */

.thumbinner,
.thumbinner .thumbimage {
    background: var(--bg-elevated) !important;
    border-color: var(--border-mid) !important;
    color: var(--text-muted) !important;
}
.thumbcaption {
    color: var(--text-muted) !important;
}

/* ================================================================ */
/*  S. COLLAPSIBLE ELEMENTS                                         */
/* ================================================================ */

.mw-collapsible-toggle a {
    color: var(--accent) !important;
}

/* ================================================================ */
/*  T. EXISTING FALLOUT-WIKI-BOX (dark mode compatible)             */
/* ================================================================ */

.mw-parser-output .fallout-wiki-box {
    background-color: var(--bg-content);
    color: var(--text-body);
    padding: 20px;
    border: 2px solid #003366;
    border-top: 6px solid #FFCC00;
    border-radius: 5px;
    font-family: sans-serif;
}
.mw-parser-output .fallout-wiki-box h1,
.mw-parser-output .fallout-wiki-box h2,
.mw-parser-output .fallout-wiki-box h3 {
    color: #FFCC00;
    border-bottom: 2px solid #4a6a99;
    font-family: 'Courier New', Courier, monospace;
    font-weight: bold;
    margin-top: 20px;
    padding-bottom: 5px;
}

/* ================================================================ */
/*  U. SCROLLBAR (Webkit)                                           */
/* ================================================================ */

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg-shell); }
::-webkit-scrollbar-thumb { background: var(--border-mid); border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: var(--border-strong); }

/* Firefox scrollbar */
* {
    scrollbar-color: var(--border-mid) var(--bg-shell);
    scrollbar-width: thin;
}

/* ================================================================ */
/*  V. SELECTION HIGHLIGHT                                          */
/* ================================================================ */

::selection {
    background: var(--accent-dim);
    color: var(--text-heading);
}