Toggle menu
10
18
30
244
SOURCE DCS WIKI
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Citizen.css: Difference between revisions

MediaWiki interface page
Niknam3 (talk | contribs)
No edit summary
Niknam3 (talk | contribs)
No edit summary
Line 1: Line 1:
/* All CSS here will be loaded for users of the Citizen skin */
/* ═══════════════════════════════════════════════════════════
/* ═══════════════════════════════════════════════════════════
   MediaWiki:Citizen.css
   MediaWiki:Citizen.css
Line 5: Line 4:
   Citizen skin.  Mirrors the design tokens from:
   Citizen skin.  Mirrors the design tokens from:
     atobrief/css/base.css  and  website/css/style.css
     atobrief/css/base.css  and  website/css/style.css
  Key concerns addressed:
  - Citizen defaults to dark mode (or follows OS preference).
    We override every dark-mode selector so the wiki always
    renders in the warm off-white light palette.
  - OOUI components use their own background variables;
    those are overridden here too.
  - Cards / surface boxes are forced to the near-background
    palette (#f4f3f0 / #edecea) with a 1 px border only.
   ═══════════════════════════════════════════════════════════ */
   ═══════════════════════════════════════════════════════════ */


Line 10: Line 18:
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');


/* ── Citizen skin design-token overrides (light / default) ── */
/* ════════════════════════════════════════════════════════════
  DESIGN TOKENS
  Applied to :root AND the dark-mode selectors so neither
  the OS preference nor the skin's own theme-toggle can
  switch to dark surfaces.
  ════════════════════════════════════════════════════════════ */
 
/* Light palette – shared rule-set (reused via the comma list) */
:root,
:root,
.skin-citizen {
.skin-citizen,
   /* Backgrounds – warm off-white palette */
[data-mw-skin-color-scheme="dark"],
[data-mw-skin-color-scheme="light"] {
   /* ── Surface backgrounds (warm off-white) ─────────────── */
   --color-surface-0:      #f4f3f0;  /* page canvas            */
   --color-surface-0:      #f4f3f0;  /* page canvas            */
   --color-surface-1:      #edecea;  /* sidebar / elevated      */
   --color-surface-1:      #edecea;  /* header / sidebar       */
   --color-surface-2:      #e5e4e0;  /* toc / secondary        */
   --color-surface-2:      #e5e4e0;  /* TOC / elevated card    */
   --color-surface-3:      #dddad5;  /* card surfaces          */
   --color-surface-3:      #edecea;  /* card surface (near bg)  */
   --color-surface-4:      #c8c5bf;  /* strongest surface      */
   --color-surface-4:      #e5e4e0;  /* strong card / selected  */


   /* Text */
   /* ── Text ─────────────────────────────────────────────── */
   --color-base:           #1a1917;  /* primary text            */
   --color-base:                   #1a1917;
   --color-base--subtle:   #4a4845;   /* secondary text          */
   --color-base--emphasized:        #1a1917;
   --color-base--disabled: #7a7875;   /* disabled / muted        */
   --color-base--subtle:           #4a4845;
   --color-base--disabled:         #7a7875;


   /* Links / progressive actions */
   /* ── Links / progressive ──────────────────────────────── */
   --color-progressive:           #1a3a6b;
   --color-progressive:             #1a3a6b;
   --color-progressive--hover:     #0f2548;
   --color-progressive--hover:     #0f2548;
   --color-progressive--active:   #0a1a30;
   --color-progressive--active:     #0a1a30;
   --color-progressive--focus:     #1a3a6b;
   --color-progressive--focus:     #1a3a6b;


   /* Borders */
   /* ── Borders ──────────────────────────────────────────── */
   --border-color-base:       #c8c5bf;
   --border-color-base:             #c8c5bf;
   --border-color-interactive: #9a9690;
   --border-color-interactive:     #9a9690;


   /* Destructive */
   /* ── Status colours ───────────────────────────────────── */
   --color-destructive:       #9b1c1c;
   --color-destructive:             #9b1c1c;
   --color-destructive--hover: #7a1515;
   --color-destructive--hover:     #7a1515;
  --color-success:                #1a5c2e;
  --color-warning:                #7c5000;
  --color-notice:                  #1a3a6b;


   /* Success / warning */
   /* ── Icons / accents ──────────────────────────────────── */
   --color-success: #1a5c2e;
   --color-icon:                   #4a4845;
   --color-warning: #7c5000;
   --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #1a1917;
  --color-icon-interactive:       #1a3a6b;


   /* Border-radius sharp corners to match ATO brief */
   /* ── Border-radius: sharp corners ─────────────────────── */
   --border-radius--small: 0;
   --border-radius--small:         0;
   --border-radius--medium: 0;
   --border-radius--medium:         0;
   --border-radius--large: 0;
   --border-radius--large:         0;
   --border-radius--pill:  0;
   --border-radius--pill:           0;
   --border-radius-sharp:          0;


   /* Typography */
   /* ── Typography ───────────────────────────────────────── */
   --font-family-base:    'IBM Plex Mono', monospace;
   --font-family-base:    'IBM Plex Mono', monospace;
   --font-family-heading: 'IBM Plex Mono', monospace;
   --font-family-heading: 'IBM Plex Mono', monospace;
  --font-family-mono:    'IBM Plex Mono', monospace;
  /* ── Shadows ──────────────────────────────────────────── */
  --box-shadow-card:  0 1px 3px rgba(0,0,0,.10);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.12);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.10);


   /* Shadows */
   /* ── OOUI / MediaWiki core background variables ────────── */
   --box-shadow-card: 0 1px 3px rgba(0,0,0,.10);
  --background-color-base:            #f4f3f0;
   --box-shadow-menu: 0 4px 12px rgba(0,0,0,.12);
  --background-color-base--hover:      #edecea;
  --background-color-neutral:          #edecea;
  --background-color-neutral-subtle:  #f4f3f0;
  --background-color-interactive:      #e5e4e0;
  --background-color-interactive-subtle: #edecea;
  --background-color-progressive-subtle: #eaf0fa;
  --background-color-disabled:        #e5e4e0;
  --background-color-disabled-subtle:  #edecea;
  --background-color-destructive-subtle: #fbe8ea;
  --background-color-success-subtle:  #e8f4ec;
  --background-color-warning-subtle:  #fdf0e6;
  --background-color-notice-subtle:    #eaf0fa;
 
  /* ── OOUI text / border variables ─────────────────────── */
   --color-base:                        #1a1917;
  --color-placeholder:                 #7a7875;
   --border-color-base:                 #c8c5bf;
}
}


/* ── Base typography ─────────────────────────────────────── */
/* Also override the dark media query in case the skin injects
  its own dark palette inside @media (prefers-color-scheme: dark) */
@media (prefers-color-scheme: dark) {
  :root,
  .skin-citizen,
  [data-mw-skin-color-scheme="dark"] {
    --color-surface-0:      #f4f3f0;
    --color-surface-1:      #edecea;
    --color-surface-2:      #e5e4e0;
    --color-surface-3:      #edecea;
    --color-surface-4:      #e5e4e0;
    --color-base:            #1a1917;
    --color-base--emphasized: #1a1917;
    --color-base--subtle:    #4a4845;
    --color-base--disabled:  #7a7875;
    --color-progressive:    #1a3a6b;
    --color-icon:            #4a4845;
    --color-icon--subtle:    #7a7875;
    --border-color-base:    #c8c5bf;
    --border-color-interactive: #9a9690;
    --background-color-base:    #f4f3f0;
    --background-color-neutral: #edecea;
    --background-color-interactive: #e5e4e0;
    --font-family-base:    'IBM Plex Mono', monospace;
    --font-family-heading: 'IBM Plex Mono', monospace;
  }
}
 
/* ════════════════════════════════════════════════════════════
  BASE
  ════════════════════════════════════════════════════════════ */
 
body,
body,
.skin-citizen {
.skin-citizen {
Line 90: Line 167:
}
}


/* ── Header / top bar ────────────────────────────────────── */
/* ════════════════════════════════════════════════════════════
  CARD / SURFACE BACKGROUNDS
  The main fix: every card-like / box-like / elevated element
  gets an explicit near-background fill so dark defaults can't
  show through.
  ════════════════════════════════════════════════════════════ */
 
/* Citizen generic card */
.citizen-card,
.citizen-card-list__item,
.citizen-card__header,
.citizen-card__body {
  background-color: #edecea;
  border: 1px solid #c8c5bf;
  color: #1a1917;
}
 
/* Page-info block (appears beneath article title) */
.citizen-page-info,
.citizen-page-info__item {
  background-color: #edecea;
  border-color: #c8c5bf;
  color: #4a4845;
}
 
/* Citizen header */
#citizen-page-header,
#citizen-page-header,
.citizen-header,
.citizen-header,
Line 98: Line 200:
}
}


/* ── Sticky header ───────────────────────────────────────── */
/* Sticky header */
.citizen-sticky-header {
.citizen-sticky-header {
   background-color: #edecea;
   background-color: #edecea;
Line 104: Line 206:
}
}


/* ── Sidebar ─────────────────────────────────────────────── */
/* Sidebar */
#citizen-sidebar,
#citizen-sidebar,
.citizen-sidebar {
.citizen-sidebar {
Line 128: Line 230:
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
   color: #1a1917;
   color: #1a1917;
  background-color: transparent;
}
}
.citizen-nav__item a:hover,
.citizen-nav__item a:hover,
Line 135: Line 238:
}
}


/* ── Table of contents ───────────────────────────────────── */
/* TOC */
.citizen-toc,
.citizen-toc,
#toc {
#toc {
Line 143: Line 246:
   font-size: 0.75rem;
   font-size: 0.75rem;
}
}
.citizen-toc__title,
.citizen-toc__title,
#toc .toctitle {
#toc .toctitle {
Line 152: Line 254:
   font-weight: 600;
   font-weight: 600;
}
}
.citizen-toc__item a,
.citizen-toc__item a,
#toc a {
#toc a {
Line 162: Line 263:
}
}


/* ── Content area ────────────────────────────────────────── */
/* Citizen search suggestion / typeahead panel */
.citizen-search-results,
.citizen-typeahead {
  background-color: #edecea;
  border: 1px solid #9a9690;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
}
.citizen-search-results__item,
.citizen-typeahead__item {
  background-color: transparent;
  color: #1a1917;
}
.citizen-search-results__item:hover,
.citizen-typeahead__item:hover {
  background-color: #e5e4e0;
}
 
/* Citizen drawer / panel */
.citizen-drawer,
.citizen-drawer__inner,
.citizen-panel {
  background-color: #edecea;
  border-color: #c8c5bf;
}
 
/* Citizen overflow menu */
.citizen-overflow-menu,
.citizen-dropdown__menu,
.citizen-menu,
.citizen-menu__item {
  background-color: #edecea;
  border: 1px solid #9a9690;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  color: #1a1917;
}
.citizen-dropdown__menu a,
.citizen-menu a,
.citizen-menu__item a {
  color: #1a1917;
  padding: 6px 14px;
  letter-spacing: 0.5px;
  background-color: transparent;
}
.citizen-dropdown__menu a:hover,
.citizen-menu a:hover,
.citizen-menu__item:hover {
  background-color: #e5e4e0;
  color: #1a1917;
}
 
/* Page tools / toolbox (right-side panel in Citizen) */
.citizen-page-tools,
.citizen-page-tools__card {
  background-color: #edecea;
  border: 1px solid #c8c5bf;
}
 
/* ════════════════════════════════════════════════════════════
  CONTENT AREA
  ════════════════════════════════════════════════════════════ */
 
#mw-content-text,
#mw-content-text,
.mw-parser-output {
.mw-parser-output {
Line 171: Line 334:
}
}


/* ── Content headings ────────────────────────────────────── */
/* Headings */
.mw-parser-output h1,
.mw-parser-output h1,
.mw-parser-output h2,
.mw-parser-output h2,
Line 184: Line 347:
   color: #1a1917;
   color: #1a1917;
}
}
.mw-parser-output h2 {
.mw-parser-output h2 {
   font-size: 0.95rem;
   font-size: 0.95rem;
Line 192: Line 354:
   margin-top: 2rem;
   margin-top: 2rem;
}
}
.mw-parser-output h3 {
.mw-parser-output h3 {
   font-size: 0.85rem;
   font-size: 0.85rem;
Line 198: Line 359:
   color: #4a4845;
   color: #4a4845;
}
}
.mw-parser-output h4,
.mw-parser-output h4,
.mw-parser-output h5,
.mw-parser-output h5,
Line 207: Line 367:
}
}


/* ── Links ───────────────────────────────────────────────── */
/* Links */
.mw-parser-output a,
.mw-parser-output a,
#mw-content-text a {
#mw-content-text a {
Line 229: Line 389:
}
}


/* ── Tables ──────────────────────────────────────────────── */
/* Tables */
.mw-parser-output table,
.mw-parser-output table,
.mw-parser-output .wikitable {
.mw-parser-output .wikitable {
Line 236: Line 396:
   font-family: 'IBM Plex Mono', monospace;
   font-family: 'IBM Plex Mono', monospace;
   font-size: 0.75rem;
   font-size: 0.75rem;
   background: #ffffff;
   background: var(--color-surface-0);
   box-shadow: 0 1px 3px rgba(0,0,0,.08);
   box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
}
Line 256: Line 416:
   color: #1a1917;
   color: #1a1917;
   vertical-align: top;
   vertical-align: top;
  background-color: var(--color-surface-0);
}
}
.mw-parser-output .wikitable tr:nth-child(even) td {
.mw-parser-output .wikitable tr:nth-child(even) td {
   background-color: #f4f3f0;
   background-color: var(--color-surface-1);
}
}


/* ── Code / pre ──────────────────────────────────────────── */
/* Code / pre */
.mw-parser-output code,
.mw-parser-output code,
.mw-parser-output kbd,
.mw-parser-output kbd,
Line 282: Line 443:
}
}


/* ── Blockquote ──────────────────────────────────────────── */
/* Blockquote */
.mw-parser-output blockquote {
.mw-parser-output blockquote {
   border-left: 2px solid #9a9690;
   border-left: 2px solid #9a9690;
Line 291: Line 452:
}
}


/* ── Horizontal rule ─────────────────────────────────────── */
/* Horizontal rule */
.mw-parser-output hr {
.mw-parser-output hr {
   border: none;
   border: none;
Line 298: Line 459:
}
}


/* ── Search bar ──────────────────────────────────────────── */
/* ════════════════════════════════════════════════════════════
  MEDIAWIKI UI ELEMENTS
  ════════════════════════════════════════════════════════════ */
 
/* Search bar */
.citizen-search__input,
.citizen-search__input,
#searchInput,
#searchInput,
Line 316: Line 481:
}
}


/* ── Buttons / actions ───────────────────────────────────── */
/* Buttons */
.citizen-btn,
.citizen-btn,
.mw-ui-button,
.mw-ui-button,
Line 350: Line 515:
}
}


/* ── Page actions (edit, history, etc.) ──────────────────── */
/* Page actions (edit, history, talk…) */
.citizen-page-actions,
.citizen-page-actions,
.page-actions {
.page-actions {
Line 373: Line 538:
}
}


/* ── User menu ───────────────────────────────────────────── */
/* User menu */
.citizen-user-menu,
.citizen-user-menu,
#p-personal {
#p-personal {
Line 382: Line 547:
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
   color: #4a4845;
   color: #4a4845;
  background-color: transparent;
}
}
.citizen-user-menu a:hover {
.citizen-user-menu a:hover {
Line 387: Line 553:
}
}


/* ── Dropdown / menu panels ──────────────────────────────── */
/* Notification / alerts */
.citizen-dropdown__menu,
.citizen-menu {
  background: #edecea;
  border: 1px solid #9a9690;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
}
.citizen-dropdown__menu a,
.citizen-menu a {
  color: #1a1917;
  padding: 6px 14px;
  letter-spacing: 0.5px;
}
.citizen-dropdown__menu a:hover,
.citizen-menu a:hover {
  background: #e5e4e0;
  color: #1a1917;
}
 
/* ── Notification / alerts ───────────────────────────────── */
.citizen-notification,
.citizen-notification,
.mw-notification {
.mw-notification {
Line 418: Line 563:
}
}


/* ── Info / warning / error boxes ───────────────────────── */
/* Info / warning / error message boxes */
.mw-message-box,
.mw-message-box,
.mw-message-box-notice,
.mw-message-box-notice,
Line 429: Line 574:
}
}
.mw-message-box-notice {
.mw-message-box-notice {
   background: #e6f1fb;
   background: #eaf0fa;
   border-color: #1a3a6b;
   border-color: #1a3a6b;
   color: #1a3a6b;
   color: #1a3a6b;
Line 444: Line 589:
}
}


/* ── Scrollbar ───────────────────────────────────────────── */
/* OOUI popup / dialog */
.oo-ui-popupWidget-popup,
.oo-ui-dialog-content,
.oo-ui-messageDialog-content {
  background-color: #edecea;
  border: 1px solid #9a9690;
  color: #1a1917;
  font-family: 'IBM Plex Mono', monospace;
}
 
/* ════════════════════════════════════════════════════════════
  SCROLLBAR, FOOTER, CATEGORY, DIFF, EDIT
  ════════════════════════════════════════════════════════════ */
 
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: #edecea; }
::-webkit-scrollbar-track { background: #edecea; }
Line 450: Line 608:
::-webkit-scrollbar-thumb:hover { background: #1a1917; }
::-webkit-scrollbar-thumb:hover { background: #1a1917; }


/* ── Category links ──────────────────────────────────────── */
#catlinks {
#catlinks {
   font-family: 'IBM Plex Mono', monospace;
   font-family: 'IBM Plex Mono', monospace;
Line 463: Line 620:
}
}


/* ── Footer ──────────────────────────────────────────────── */
#footer,
#footer,
.citizen-footer {
.citizen-footer {
Line 485: Line 641:
}
}


/* ── Edit toolbar ────────────────────────────────────────── */
.wikiEditor-toolbar,
.wikiEditor-toolbar,
#toolbar {
#toolbar {
Line 494: Line 649:
}
}


/* ── Textarea (edit mode) ────────────────────────────────── */
#wpTextbox1,
#wpTextbox1,
textarea {
textarea {
Line 510: Line 664:
}
}


/* ── Input fields ────────────────────────────────────────── */
input[type="text"],
input[type="text"],
input[type="password"],
input[type="password"],
Line 530: Line 683:
}
}


/* ── Diff view ───────────────────────────────────────────── */
.diff-context { background: #f4f3f0; }
.diff-context { background: #f4f3f0; }
.diff-addedline { background: #e8f4ec; }
.diff-addedline { background: #e8f4ec; }
Line 540: Line 692:
}
}


/* ── Recent changes / special pages ─────────────────────── */
.mw-changeslist,
.mw-changeslist,
.mw-changeslist-line {
.mw-changeslist-line {
Line 547: Line 698:
}
}


/* ── Image captions ──────────────────────────────────────── */
.thumbcaption,
.thumbcaption,
.mw-parser-output .thumbcaption {
.mw-parser-output .thumbcaption {
Line 556: Line 706:
}
}


/* ── Selection highlight ─────────────────────────────────── */
::selection {
::selection {
   background: #1a1917;
   background: #1a1917;
   color: #f4f3f0;
   color: #f4f3f0;
}
}

Revision as of 19:13, 4 March 2026

/* ═══════════════════════════════════════════════════════════
   MediaWiki:Citizen.css
   Applies SOURCEDCS / ATO BRIEF visual identity to the
   Citizen skin.  Mirrors the design tokens from:
     atobrief/css/base.css  and  website/css/style.css

   Key concerns addressed:
   - Citizen defaults to dark mode (or follows OS preference).
     We override every dark-mode selector so the wiki always
     renders in the warm off-white light palette.
   - OOUI components use their own background variables;
     those are overridden here too.
   - Cards / surface boxes are forced to the near-background
     palette (#f4f3f0 / #edecea) with a 1 px border only.
   ═══════════════════════════════════════════════════════════ */

/* ── Google Fonts ─────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');

/* ════════════════════════════════════════════════════════════
   DESIGN TOKENS
   Applied to :root AND the dark-mode selectors so neither
   the OS preference nor the skin's own theme-toggle can
   switch to dark surfaces.
   ════════════════════════════════════════════════════════════ */

/* Light palette – shared rule-set (reused via the comma list) */
:root,
.skin-citizen,
[data-mw-skin-color-scheme="dark"],
[data-mw-skin-color-scheme="light"] {
  /* ── Surface backgrounds (warm off-white) ─────────────── */
  --color-surface-0:       #f4f3f0;   /* page canvas             */
  --color-surface-1:       #edecea;   /* header / sidebar        */
  --color-surface-2:       #e5e4e0;   /* TOC / elevated card     */
  --color-surface-3:       #edecea;   /* card surface (near bg)  */
  --color-surface-4:       #e5e4e0;   /* strong card / selected  */

  /* ── Text ─────────────────────────────────────────────── */
  --color-base:                    #1a1917;
  --color-base--emphasized:        #1a1917;
  --color-base--subtle:            #4a4845;
  --color-base--disabled:          #7a7875;

  /* ── Links / progressive ──────────────────────────────── */
  --color-progressive:             #1a3a6b;
  --color-progressive--hover:      #0f2548;
  --color-progressive--active:     #0a1a30;
  --color-progressive--focus:      #1a3a6b;

  /* ── Borders ──────────────────────────────────────────── */
  --border-color-base:             #c8c5bf;
  --border-color-interactive:      #9a9690;

  /* ── Status colours ───────────────────────────────────── */
  --color-destructive:             #9b1c1c;
  --color-destructive--hover:      #7a1515;
  --color-success:                 #1a5c2e;
  --color-warning:                 #7c5000;
  --color-notice:                  #1a3a6b;

  /* ── Icons / accents ──────────────────────────────────── */
  --color-icon:                    #4a4845;
  --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #1a1917;
  --color-icon-interactive:        #1a3a6b;

  /* ── Border-radius: sharp corners ─────────────────────── */
  --border-radius--small:          0;
  --border-radius--medium:         0;
  --border-radius--large:          0;
  --border-radius--pill:           0;
  --border-radius-sharp:           0;

  /* ── Typography ───────────────────────────────────────── */
  --font-family-base:    'IBM Plex Mono', monospace;
  --font-family-heading: 'IBM Plex Mono', monospace;
  --font-family-mono:    'IBM Plex Mono', monospace;

  /* ── Shadows ──────────────────────────────────────────── */
  --box-shadow-card:  0 1px 3px rgba(0,0,0,.10);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.12);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.10);

  /* ── OOUI / MediaWiki core background variables ────────── */
  --background-color-base:             #f4f3f0;
  --background-color-base--hover:      #edecea;
  --background-color-neutral:          #edecea;
  --background-color-neutral-subtle:   #f4f3f0;
  --background-color-interactive:      #e5e4e0;
  --background-color-interactive-subtle: #edecea;
  --background-color-progressive-subtle: #eaf0fa;
  --background-color-disabled:         #e5e4e0;
  --background-color-disabled-subtle:  #edecea;
  --background-color-destructive-subtle: #fbe8ea;
  --background-color-success-subtle:   #e8f4ec;
  --background-color-warning-subtle:   #fdf0e6;
  --background-color-notice-subtle:    #eaf0fa;

  /* ── OOUI text / border variables ─────────────────────── */
  --color-base:                        #1a1917;
  --color-placeholder:                 #7a7875;
  --border-color-base:                 #c8c5bf;
}

/* Also override the dark media query in case the skin injects
   its own dark palette inside @media (prefers-color-scheme: dark) */
@media (prefers-color-scheme: dark) {
  :root,
  .skin-citizen,
  [data-mw-skin-color-scheme="dark"] {
    --color-surface-0:       #f4f3f0;
    --color-surface-1:       #edecea;
    --color-surface-2:       #e5e4e0;
    --color-surface-3:       #edecea;
    --color-surface-4:       #e5e4e0;
    --color-base:            #1a1917;
    --color-base--emphasized: #1a1917;
    --color-base--subtle:    #4a4845;
    --color-base--disabled:  #7a7875;
    --color-progressive:     #1a3a6b;
    --color-icon:            #4a4845;
    --color-icon--subtle:    #7a7875;
    --border-color-base:     #c8c5bf;
    --border-color-interactive: #9a9690;
    --background-color-base:    #f4f3f0;
    --background-color-neutral: #edecea;
    --background-color-interactive: #e5e4e0;
    --font-family-base:    'IBM Plex Mono', monospace;
    --font-family-heading: 'IBM Plex Mono', monospace;
  }
}

/* ════════════════════════════════════════════════════════════
   BASE
   ════════════════════════════════════════════════════════════ */

body,
.skin-citizen {
  font-family: 'IBM Plex Mono', monospace;
  background-color: #f4f3f0;
  color: #1a1917;
}

/* ── Page heading ────────────────────────────────────────── */
#firstHeading,
.page-heading h1 {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 600;
  font-size: 1.3rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: #1a1917;
  border-bottom: 1px solid #c8c5bf;
  padding-bottom: 0.5rem;
  margin-bottom: 1rem;
}

/* ── Site wordmark / logo text ───────────────────────────── */
.citizen-logo__wordmark,
#p-logo a,
.mw-logo-wordmark {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 600;
  letter-spacing: 4px;
  text-transform: uppercase;
}

/* ════════════════════════════════════════════════════════════
   CARD / SURFACE BACKGROUNDS
   The main fix: every card-like / box-like / elevated element
   gets an explicit near-background fill so dark defaults can't
   show through.
   ════════════════════════════════════════════════════════════ */

/* Citizen generic card */
.citizen-card,
.citizen-card-list__item,
.citizen-card__header,
.citizen-card__body {
  background-color: #edecea;
  border: 1px solid #c8c5bf;
  color: #1a1917;
}

/* Page-info block (appears beneath article title) */
.citizen-page-info,
.citizen-page-info__item {
  background-color: #edecea;
  border-color: #c8c5bf;
  color: #4a4845;
}

/* Citizen header */
#citizen-page-header,
.citizen-header,
header.citizen-header {
  background-color: #edecea;
  border-bottom: 1px solid #9a9690;
}

/* Sticky header */
.citizen-sticky-header {
  background-color: #edecea;
  border-bottom: 1px solid #9a9690;
}

/* Sidebar */
#citizen-sidebar,
.citizen-sidebar {
  background-color: #edecea;
  border-right: 1px solid #c8c5bf;
}

/* Sidebar navigation labels */
.citizen-nav__heading,
.citizen-sidebar .citizen-nav__heading {
  font-size: 0.65rem;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: #7a7875;
  font-weight: 600;
}

/* Sidebar links */
.citizen-nav__item a,
.citizen-sidebar a {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 0.5px;
  color: #1a1917;
  background-color: transparent;
}
.citizen-nav__item a:hover,
.citizen-sidebar a:hover {
  color: #1a3a6b;
  background-color: #e5e4e0;
}

/* TOC */
.citizen-toc,
#toc {
  background-color: #edecea;
  border: 1px solid #c8c5bf;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
}
.citizen-toc__title,
#toc .toctitle {
  font-size: 0.7rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #7a7875;
  font-weight: 600;
}
.citizen-toc__item a,
#toc a {
  color: #4a4845;
}
.citizen-toc__item a:hover,
#toc a:hover {
  color: #1a3a6b;
}

/* Citizen search suggestion / typeahead panel */
.citizen-search-results,
.citizen-typeahead {
  background-color: #edecea;
  border: 1px solid #9a9690;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
}
.citizen-search-results__item,
.citizen-typeahead__item {
  background-color: transparent;
  color: #1a1917;
}
.citizen-search-results__item:hover,
.citizen-typeahead__item:hover {
  background-color: #e5e4e0;
}

/* Citizen drawer / panel */
.citizen-drawer,
.citizen-drawer__inner,
.citizen-panel {
  background-color: #edecea;
  border-color: #c8c5bf;
}

/* Citizen overflow menu */
.citizen-overflow-menu,
.citizen-dropdown__menu,
.citizen-menu,
.citizen-menu__item {
  background-color: #edecea;
  border: 1px solid #9a9690;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  color: #1a1917;
}
.citizen-dropdown__menu a,
.citizen-menu a,
.citizen-menu__item a {
  color: #1a1917;
  padding: 6px 14px;
  letter-spacing: 0.5px;
  background-color: transparent;
}
.citizen-dropdown__menu a:hover,
.citizen-menu a:hover,
.citizen-menu__item:hover {
  background-color: #e5e4e0;
  color: #1a1917;
}

/* Page tools / toolbox (right-side panel in Citizen) */
.citizen-page-tools,
.citizen-page-tools__card {
  background-color: #edecea;
  border: 1px solid #c8c5bf;
}

/* ════════════════════════════════════════════════════════════
   CONTENT AREA
   ════════════════════════════════════════════════════════════ */

#mw-content-text,
.mw-parser-output {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.82rem;
  line-height: 1.8;
  color: #1a1917;
}

/* Headings */
.mw-parser-output h1,
.mw-parser-output h2,
.mw-parser-output h3,
.mw-parser-output h4,
.mw-parser-output h5,
.mw-parser-output h6 {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #1a1917;
}
.mw-parser-output h2 {
  font-size: 0.95rem;
  letter-spacing: 3px;
  border-bottom: 1px solid #c8c5bf;
  padding-bottom: 0.35rem;
  margin-top: 2rem;
}
.mw-parser-output h3 {
  font-size: 0.85rem;
  letter-spacing: 2.5px;
  color: #4a4845;
}
.mw-parser-output h4,
.mw-parser-output h5,
.mw-parser-output h6 {
  font-size: 0.78rem;
  letter-spacing: 2px;
  color: #7a7875;
}

/* Links */
.mw-parser-output a,
#mw-content-text a {
  color: #1a3a6b;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s, color 0.15s;
}
.mw-parser-output a:hover,
#mw-content-text a:hover {
  color: #0f2548;
  border-bottom-color: #1a3a6b;
}
.mw-parser-output a.new,
#mw-content-text a.new {
  color: #9b1c1c;
}
.mw-parser-output a.new:hover {
  color: #7a1515;
  border-bottom-color: #9b1c1c;
}

/* Tables */
.mw-parser-output table,
.mw-parser-output .wikitable {
  border: 1px solid #9a9690;
  border-collapse: collapse;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  background: var(--color-surface-0);
  box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
.mw-parser-output .wikitable th,
.mw-parser-output table th {
  background-color: #edecea;
  border: 1px solid #9a9690;
  padding: 6px 12px;
  font-size: 0.7rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #1a1917;
  font-weight: 600;
}
.mw-parser-output .wikitable td,
.mw-parser-output table td {
  border: 1px solid #c8c5bf;
  padding: 5px 12px;
  color: #1a1917;
  vertical-align: top;
  background-color: var(--color-surface-0);
}
.mw-parser-output .wikitable tr:nth-child(even) td {
  background-color: var(--color-surface-1);
}

/* Code / pre */
.mw-parser-output code,
.mw-parser-output kbd,
.mw-parser-output pre,
.mw-parser-output .mw-code {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.78rem;
  background-color: #edecea;
  border: 1px solid #c8c5bf;
  color: #1a1917;
}
.mw-parser-output pre,
.mw-parser-output .mw-code {
  padding: 12px 16px;
  overflow-x: auto;
  line-height: 1.6;
}
.mw-parser-output code {
  padding: 1px 5px;
}

/* Blockquote */
.mw-parser-output blockquote {
  border-left: 2px solid #9a9690;
  padding-left: 16px;
  color: #4a4845;
  margin: 1rem 0;
  font-style: normal;
}

/* Horizontal rule */
.mw-parser-output hr {
  border: none;
  border-top: 1px solid #c8c5bf;
  margin: 1.5rem 0;
}

/* ════════════════════════════════════════════════════════════
   MEDIAWIKI UI ELEMENTS
   ════════════════════════════════════════════════════════════ */

/* Search bar */
.citizen-search__input,
#searchInput,
input[type="search"] {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.78rem;
  background: #f4f3f0;
  border: 1px solid #9a9690;
  color: #1a1917;
  outline: none;
}
.citizen-search__input:focus,
#searchInput:focus,
input[type="search"]:focus {
  border-color: #1a1917;
  box-shadow: none;
}

/* Buttons */
.citizen-btn,
.mw-ui-button,
input[type="button"],
input[type="submit"],
button {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  border: 1px solid #9a9690;
  background: #e5e4e0;
  color: #1a1917;
  transition: background 0.15s, color 0.15s;
}
.citizen-btn:hover,
.mw-ui-button:hover,
input[type="button"]:hover,
input[type="submit"]:hover,
button:hover {
  background: #1a1917;
  color: #f4f3f0;
  border-color: #1a1917;
}
.mw-ui-button.mw-ui-progressive {
  background: #1a3a6b;
  border-color: #1a3a6b;
  color: #ffffff;
}
.mw-ui-button.mw-ui-progressive:hover {
  background: #0f2548;
  border-color: #0f2548;
}

/* Page actions (edit, history, talk…) */
.citizen-page-actions,
.page-actions {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 1px;
}
.citizen-page-actions__item a {
  font-size: 0.72rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #4a4845;
  border: 1px solid transparent;
  padding: 4px 10px;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.citizen-page-actions__item a:hover {
  color: #1a1917;
  border-color: #9a9690;
  background: #e5e4e0;
  text-decoration: none;
}

/* User menu */
.citizen-user-menu,
#p-personal {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.72rem;
}
.citizen-user-menu a {
  letter-spacing: 0.5px;
  color: #4a4845;
  background-color: transparent;
}
.citizen-user-menu a:hover {
  color: #1a1917;
}

/* Notification / alerts */
.citizen-notification,
.mw-notification {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  border: 1px solid #9a9690;
  background: #edecea;
  color: #1a1917;
}

/* Info / warning / error message boxes */
.mw-message-box,
.mw-message-box-notice,
.mw-message-box-warning,
.mw-message-box-error {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
  border-width: 1px;
  border-style: solid;
}
.mw-message-box-notice {
  background: #eaf0fa;
  border-color: #1a3a6b;
  color: #1a3a6b;
}
.mw-message-box-warning {
  background: #fdf0e6;
  border-color: #7c5000;
  color: #7c5000;
}
.mw-message-box-error {
  background: #fbe8ea;
  border-color: #9b1c1c;
  color: #9b1c1c;
}

/* OOUI popup / dialog */
.oo-ui-popupWidget-popup,
.oo-ui-dialog-content,
.oo-ui-messageDialog-content {
  background-color: #edecea;
  border: 1px solid #9a9690;
  color: #1a1917;
  font-family: 'IBM Plex Mono', monospace;
}

/* ════════════════════════════════════════════════════════════
   SCROLLBAR, FOOTER, CATEGORY, DIFF, EDIT
   ════════════════════════════════════════════════════════════ */

::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: #edecea; }
::-webkit-scrollbar-thumb { background: #9a9690; }
::-webkit-scrollbar-thumb:hover { background: #1a1917; }

#catlinks {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.72rem;
  background: #edecea;
  border: 1px solid #c8c5bf;
  padding: 6px 12px;
}
#catlinks a {
  color: #1a3a6b;
  letter-spacing: 0.5px;
}

#footer,
.citizen-footer {
  background: #edecea;
  border-top: 1px solid #c8c5bf;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 1px;
  color: #7a7875;
}
#footer a,
.citizen-footer a {
  color: #7a7875;
  border-bottom: 1px solid transparent;
  transition: color 0.15s, border-color 0.15s;
}
#footer a:hover,
.citizen-footer a:hover {
  color: #1a1917;
  border-bottom-color: #1a1917;
}

.wikiEditor-toolbar,
#toolbar {
  background: #edecea;
  border: 1px solid #c8c5bf;
  border-bottom: none;
  font-family: 'IBM Plex Mono', monospace;
}

#wpTextbox1,
textarea {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.78rem;
  background: #f4f3f0;
  border: 1px solid #9a9690;
  color: #1a1917;
}
#wpTextbox1:focus,
textarea:focus {
  border-color: #1a1917;
  outline: none;
  box-shadow: none;
}

input[type="text"],
input[type="password"],
input[type="email"],
select {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.78rem;
  background: #f4f3f0;
  border: 1px solid #9a9690;
  color: #1a1917;
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
select:focus {
  border-color: #1a1917;
  outline: none;
  box-shadow: none;
}

.diff-context { background: #f4f3f0; }
.diff-addedline { background: #e8f4ec; }
.diff-deletedline { background: #fbe8ea; }
.diff-marker { color: #9a9690; }
table.diff td {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
}

.mw-changeslist,
.mw-changeslist-line {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.75rem;
}

.thumbcaption,
.mw-parser-output .thumbcaption {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.7rem;
  color: #7a7875;
  letter-spacing: 0.5px;
}

::selection {
  background: #1a1917;
  color: #f4f3f0;
}