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
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* ═══════════════════════════════════════════════════════════
  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 ─────────────────────────────────────────── */
/* ── Google Fonts ─────────────────────────────────────────── */
@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');


/* ════════════════════════════════════════════════════════════
/* ════════════════════════════════════════════════════════════
   DESIGN TOKENS
   TOKENS — NEVER CHANGE (fonts, radius, etc.)
  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 {
  --font-family-base:    'IBM Plex Mono', monospace;
  --font-family-heading: 'IBM Plex Mono', monospace;
  --font-family-mono:    'IBM Plex Mono', monospace;
  --border-radius--small:  0;
  --border-radius--medium: 0;
  --border-radius--large:  0;
  --border-radius--pill:  0;
  --border-radius-sharp:  0;
}
 
/* ════════════════════════════════════════════════════════════
  TOKENS — LIGHT MODE (default)
  ════════════════════════════════════════════════════════════ */
:root,
:root,
.skin-citizen,
html.skin-theme-clientpref-day {
[data-mw-skin-color-scheme="dark"],
   --color-surface-0:      #f4f3f0;
[data-mw-skin-color-scheme="light"] {
   --color-surface-1:      #edecea;
  /* ── Surface backgrounds (warm off-white) ─────────────── */
   --color-surface-2:      #e5e4e0;
   --color-surface-0:      #f4f3f0;   /* page canvas            */
   --color-surface-3:      #edecea;
   --color-surface-1:      #edecea;   /* header / sidebar        */
   --color-surface-4:      #e5e4e0;
   --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:                    #1a1917;
   --color-base--emphasized:        #1a1917;
   --color-base--emphasized:        #1a1917;
   --color-base--subtle:            #4a4845;
   --color-base--subtle:            #4a4845;
   --color-base--disabled:          #7a7875;
   --color-base--disabled:          #7a7875;
  /* ── 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 ──────────────────────────────────────────── */
   --border-color-base:            #c8c5bf;
   --border-color-base:            #c8c5bf;
   --border-color-interactive:      #9a9690;
   --border-color-interactive:      #9a9690;
  /* ── Status colours ───────────────────────────────────── */
   --color-destructive:            #9b1c1c;
   --color-destructive:            #9b1c1c;
   --color-destructive--hover:      #7a1515;
   --color-destructive--hover:      #7a1515;
Line 59: Line 42:
   --color-warning:                #7c5000;
   --color-warning:                #7c5000;
   --color-notice:                  #1a3a6b;
   --color-notice:                  #1a3a6b;
  /* ── Icons / accents ──────────────────────────────────── */
   --color-icon:                    #4a4845;
   --color-icon:                    #4a4845;
   --color-icon--subtle:            #7a7875;
   --color-icon--subtle:            #7a7875;
   --color-icon--emphasized:        #1a1917;
   --color-icon--emphasized:        #1a1917;
   --color-icon-interactive:        #1a3a6b;
   --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-card:  0 1px 3px rgba(0,0,0,.10);
   --box-shadow-menu:  0 4px 12px rgba(0,0,0,.12);
   --box-shadow-menu:  0 4px 12px rgba(0,0,0,.12);
   --box-shadow-drop:  0 2px 8px rgba(0,0,0,.10);
   --box-shadow-drop:  0 2px 8px rgba(0,0,0,.10);
 
   --background-color-base:               #f4f3f0;
  /* ── OOUI / MediaWiki core background variables ────────── */
   --background-color-base--hover:       #edecea;
   --background-color-base:             #f4f3f0;
   --background-color-neutral:           #edecea;
   --background-color-base--hover:     #edecea;
   --background-color-neutral-subtle:     #f4f3f0;
   --background-color-neutral:         #edecea;
   --background-color-interactive:       #e5e4e0;
   --background-color-neutral-subtle:   #f4f3f0;
   --background-color-interactive:     #e5e4e0;
   --background-color-interactive-subtle: #edecea;
   --background-color-interactive-subtle: #edecea;
   --background-color-progressive-subtle: #eaf0fa;
   --background-color-progressive-subtle: #eaf0fa;
   --background-color-disabled:         #e5e4e0;
   --background-color-disabled:           #e5e4e0;
   --background-color-disabled-subtle: #edecea;
   --background-color-disabled-subtle:   #edecea;
   --background-color-destructive-subtle: #fbe8ea;
   --background-color-destructive-subtle: #fbe8ea;
   --background-color-success-subtle:   #e8f4ec;
   --background-color-success-subtle:     #e8f4ec;
   --background-color-warning-subtle:   #fdf0e6;
   --background-color-warning-subtle:     #fdf0e6;
   --background-color-notice-subtle:    #eaf0fa;
   --background-color-notice-subtle:      #eaf0fa;
  --color-placeholder:                  #7a7875;
  --color-surface-btn:                  #e5e4e0;
  --color-surface-btn--hover-bg:        #1a1917;
  --color-surface-btn--hover-text:      #f4f3f0;
  --color-diff-added:                    #e8f4ec;
  --color-diff-deleted:                  #fbe8ea;
  --color-selection-bg:                  #1a1917;
  --color-selection-text:                #f4f3f0;
  --color-role-pilot-bg:    #f5f0e0;
  --color-role-pilot-text:  #5c4a00;
  --color-role-control-bg:  #e0eaf5;
  --color-role-control-text: #0a2a4a;
  --color-role-note-bg:      var(--color-surface-1);
  --color-role-note-text:    var(--color-base--disabled);
  --color-role-header-bg:    #d6ead6;
  --color-role-header-text:  #1a3a1a;
  --color-role-header-accent: #4a8c4a;
}


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


/* Also override the dark media query in case the skin injects
html.skin-theme-clientpref-night {
  its own dark palette inside @media (prefers-color-scheme: dark) */
   --color-surface-0:      #1a1917;
@media (prefers-color-scheme: dark) {
  --color-surface-1:      #242220;
   :root,
  --color-surface-2:      #2e2c2a;
  .skin-citizen,
  --color-surface-3:      #242220;
  [data-mw-skin-color-scheme="dark"] {
  --color-surface-4:      #363330;
    --color-surface-0:      #f4f3f0;
  --color-base:                   #f0eeea;
    --color-surface-1:      #edecea;
  --color-base--emphasized:       #f4f3f0;
    --color-surface-2:      #e5e4e0;
  --color-base--subtle:           #c8c5bf;
    --color-surface-3:      #edecea;
  --color-base--disabled:         #7a7875;
    --color-surface-4:      #e5e4e0;
  --color-progressive:            #7ba7e0;
    --color-base:           #1a1917;
  --color-progressive--hover:      #a0c0f0;
    --color-base--emphasized: #1a1917;
  --color-progressive--active:     #c0d8f8;
    --color-base--subtle:   #4a4845;
  --color-progressive--focus:      #7ba7e0;
    --color-base--disabled: #7a7875;
  --border-color-base:            #3d3a36;
     --color-progressive:     #1a3a6b;
  --border-color-interactive:     #5a5650;
    --color-icon:           #4a4845;
  --color-destructive:            #e07070;
    --color-icon--subtle:   #7a7875;
  --color-destructive--hover:      #f09090;
    --border-color-base:    #c8c5bf;
  --color-success:                #6abf7a;
    --border-color-interactive: #9a9690;
  --color-warning:                #d4a040;
    --background-color-base:    #f4f3f0;
  --color-notice:                  #7ba7e0;
     --background-color-neutral: #edecea;
  --color-icon:                   #c8c5bf;
    --background-color-interactive: #e5e4e0;
  --color-icon--subtle:           #7a7875;
     --font-family-base:    'IBM Plex Mono', monospace;
  --color-icon--emphasized:        #f4f3f0;
     --font-family-heading: 'IBM Plex Mono', monospace;
  --color-icon-interactive:        #7ba7e0;
   }
  --box-shadow-card:  0 1px 3px rgba(0,0,0,.40);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.50);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.40);
  --background-color-base:              #1a1917;
  --background-color-base--hover:        #242220;
  --background-color-neutral:            #242220;
  --background-color-neutral-subtle:    #1a1917;
  --background-color-interactive:        #2e2c2a;
  --background-color-interactive-subtle: #242220;
  --background-color-progressive-subtle: #1a2540;
  --background-color-disabled:          #2e2c2a;
  --background-color-disabled-subtle:    #242220;
  --background-color-destructive-subtle: #3a1a1a;
  --background-color-success-subtle:     #1a3020;
  --background-color-warning-subtle:     #302010;
  --background-color-notice-subtle:      #1a2540;
  --color-placeholder:                  #7a7875;
  --color-surface-btn:                  #2e2c2a;
  --color-surface-btn--hover-bg:        #f4f3f0;
  --color-surface-btn--hover-text:      #1a1917;
  --color-diff-added:                    #1a3020;
  --color-diff-deleted:                  #3a1a1a;
  --color-selection-bg:                  #f4f3f0;
  --color-selection-text:               #1a1917;
  --color-role-pilot-bg:     #2e2600;
  --color-role-pilot-text:  #e0c96a;
  --color-role-control-bg:  #0d1e30;
  --color-role-control-text: #7ba7e0;
  --color-role-note-bg:      var(--color-surface-1);
  --color-role-note-text:    var(--color-base--disabled);
  --color-role-header-bg:     #0d2010;
  --color-role-header-text:   #6abf7a;
   --color-role-header-accent: #3a7a4a;
}
}


Line 138: Line 151:
body,
body,
.skin-citizen {
.skin-citizen {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   background-color: #f4f3f0;
   background-color: var(--color-surface-0);
   color: #1a1917;
   color: var(--color-base);
}
}


Line 146: Line 159:
#firstHeading,
#firstHeading,
.page-heading h1 {
.page-heading h1 {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-heading);
   font-weight: 600;
   font-weight: 600;
   font-size: 1.3rem;
   font-size: 1.3rem;
   letter-spacing: 3px;
   letter-spacing: 3px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #1a1917;
   color: var(--color-base);
   border-bottom: 1px solid #c8c5bf;
   border-bottom: 1px solid var(--border-color-base);
   padding-bottom: 0.5rem;
   padding-bottom: 0.5rem;
   margin-bottom: 1rem;
   margin-bottom: 1rem;
Line 161: Line 174:
#p-logo a,
#p-logo a,
.mw-logo-wordmark {
.mw-logo-wordmark {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-heading);
   font-weight: 600;
   font-weight: 600;
   letter-spacing: 4px;
   letter-spacing: 4px;
Line 169: Line 182:
/* ════════════════════════════════════════════════════════════
/* ════════════════════════════════════════════════════════════
   CARD / SURFACE BACKGROUNDS
   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.
   ════════════════════════════════════════════════════════════ */
   ════════════════════════════════════════════════════════════ */


Line 179: Line 189:
.citizen-card__header,
.citizen-card__header,
.citizen-card__body {
.citizen-card__body {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
   color: #1a1917;
   color: var(--color-base);
}
}


Line 187: Line 197:
.citizen-page-info,
.citizen-page-info,
.citizen-page-info__item {
.citizen-page-info__item {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border-color: #c8c5bf;
   border-color: var(--border-color-base);
   color: #4a4845;
   color: var(--color-base--subtle);
}
}


Line 196: Line 206:
.citizen-header,
.citizen-header,
header.citizen-header {
header.citizen-header {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border-bottom: 1px solid #9a9690;
   border-bottom: 1px solid var(--border-color-interactive);
}
}


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


Line 209: Line 219:
#citizen-sidebar,
#citizen-sidebar,
.citizen-sidebar {
.citizen-sidebar {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border-right: 1px solid #c8c5bf;
   border-right: 1px solid var(--border-color-base);
}
}


Line 219: Line 229:
   letter-spacing: 2.5px;
   letter-spacing: 2.5px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #7a7875;
   color: var(--color-base--disabled);
   font-weight: 600;
   font-weight: 600;
}
}
Line 226: Line 236:
.citizen-nav__item a,
.citizen-nav__item a,
.citizen-sidebar a {
.citizen-sidebar a {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
   color: #1a1917;
   color: var(--color-base);
   background-color: transparent;
   background-color: transparent;
}
}
.citizen-nav__item a:hover,
.citizen-nav__item a:hover,
.citizen-sidebar a:hover {
.citizen-sidebar a:hover {
   color: #1a3a6b;
   color: var(--color-progressive);
   background-color: #e5e4e0;
   background-color: var(--color-surface-2);
}
}


Line 241: Line 251:
.citizen-toc,
.citizen-toc,
#toc {
#toc {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
}
}
Line 251: Line 261:
   letter-spacing: 2px;
   letter-spacing: 2px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #7a7875;
   color: var(--color-base--disabled);
   font-weight: 600;
   font-weight: 600;
}
}
.citizen-toc__item a,
.citizen-toc__item a,
#toc a {
#toc a {
   color: #4a4845;
   color: var(--color-base--subtle);
}
}
.citizen-toc__item a:hover,
.citizen-toc__item a:hover,
#toc a:hover {
#toc a:hover {
   color: #1a3a6b;
   color: var(--color-progressive);
}
}


Line 266: Line 276:
.citizen-search-results,
.citizen-search-results,
.citizen-typeahead {
.citizen-typeahead {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   box-shadow: 0 4px 12px rgba(0,0,0,.12);
   box-shadow: var(--box-shadow-menu);
}
}
.citizen-search-results__item,
.citizen-search-results__item,
.citizen-typeahead__item {
.citizen-typeahead__item {
   background-color: transparent;
   background-color: transparent;
   color: #1a1917;
   color: var(--color-base);
}
}
.citizen-search-results__item:hover,
.citizen-search-results__item:hover,
.citizen-typeahead__item:hover {
.citizen-typeahead__item:hover {
   background-color: #e5e4e0;
   background-color: var(--color-surface-2);
}
}


Line 284: Line 294:
.citizen-drawer__inner,
.citizen-drawer__inner,
.citizen-panel {
.citizen-panel {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border-color: #c8c5bf;
   border-color: var(--border-color-base);
}
}


Line 293: Line 303:
.citizen-menu,
.citizen-menu,
.citizen-menu__item {
.citizen-menu__item {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   box-shadow: 0 4px 12px rgba(0,0,0,.12);
   box-shadow: var(--box-shadow-menu);
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
   color: #1a1917;
   color: var(--color-base);
}
}
.citizen-dropdown__menu a,
.citizen-dropdown__menu a,
.citizen-menu a,
.citizen-menu a,
.citizen-menu__item a {
.citizen-menu__item a {
   color: #1a1917;
   color: var(--color-base);
   padding: 6px 14px;
   padding: 6px 14px;
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
Line 311: Line 321:
.citizen-menu a:hover,
.citizen-menu a:hover,
.citizen-menu__item:hover {
.citizen-menu__item:hover {
   background-color: #e5e4e0;
   background-color: var(--color-surface-2);
   color: #1a1917;
   color: var(--color-base);
}
}


Line 318: Line 328:
.citizen-page-tools,
.citizen-page-tools,
.citizen-page-tools__card {
.citizen-page-tools__card {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
}
}


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


Line 341: Line 351:
.mw-parser-output h5,
.mw-parser-output h5,
.mw-parser-output h6 {
.mw-parser-output h6 {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-heading);
   font-weight: 600;
   font-weight: 600;
   letter-spacing: 2px;
   letter-spacing: 2px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #1a1917;
   color: var(--color-base);
}
}
.mw-parser-output h2 {
.mw-parser-output h2 {
   font-size: 0.95rem;
   font-size: 0.95rem;
   letter-spacing: 3px;
   letter-spacing: 3px;
   border-bottom: 1px solid #c8c5bf;
   border-bottom: 1px solid var(--border-color-base);
   padding-bottom: 0.35rem;
   padding-bottom: 0.35rem;
   margin-top: 2rem;
   margin-top: 2rem;
Line 357: Line 367:
   font-size: 0.85rem;
   font-size: 0.85rem;
   letter-spacing: 2.5px;
   letter-spacing: 2.5px;
   color: #4a4845;
   color: var(--color-base--subtle);
}
}
.mw-parser-output h4,
.mw-parser-output h4,
Line 364: Line 374:
   font-size: 0.78rem;
   font-size: 0.78rem;
   letter-spacing: 2px;
   letter-spacing: 2px;
   color: #7a7875;
   color: var(--color-base--disabled);
}
}


Line 370: Line 380:
.mw-parser-output a,
.mw-parser-output a,
#mw-content-text a {
#mw-content-text a {
   color: #1a3a6b;
   color: var(--color-progressive);
   text-decoration: none;
   text-decoration: none;
   border-bottom: 1px solid transparent;
   border-bottom: 1px solid transparent;
Line 377: Line 387:
.mw-parser-output a:hover,
.mw-parser-output a:hover,
#mw-content-text a:hover {
#mw-content-text a:hover {
   color: #0f2548;
   color: var(--color-progressive--hover);
   border-bottom-color: #1a3a6b;
   border-bottom-color: var(--color-progressive);
}
}
.mw-parser-output a.new,
.mw-parser-output a.new,
#mw-content-text a.new {
#mw-content-text a.new {
   color: #9b1c1c;
   color: var(--color-destructive);
}
}
.mw-parser-output a.new:hover {
.mw-parser-output a.new:hover {
   color: #7a1515;
   color: var(--color-destructive--hover);
   border-bottom-color: #9b1c1c;
   border-bottom-color: var(--color-destructive);
}
}


Line 392: Line 402:
.mw-parser-output table,
.mw-parser-output table,
.mw-parser-output .wikitable {
.mw-parser-output .wikitable {
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   border-collapse: collapse;
   border-collapse: collapse;
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
   background: var(--color-surface-0);
   background: var(--color-surface-0);
   box-shadow: 0 1px 3px rgba(0,0,0,.08);
   box-shadow: var(--box-shadow-card);
}
}
.mw-parser-output .wikitable th,
.mw-parser-output .wikitable th,
.mw-parser-output table th {
.mw-parser-output table th {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   padding: 6px 12px;
   padding: 6px 12px;
   font-size: 0.7rem;
   font-size: 0.7rem;
   letter-spacing: 1.5px;
   letter-spacing: 1.5px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #1a1917;
   color: var(--color-base);
   font-weight: 600;
   font-weight: 600;
}
}
.mw-parser-output .wikitable td,
.mw-parser-output .wikitable td,
.mw-parser-output table td {
.mw-parser-output table td {
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
   padding: 5px 12px;
   padding: 5px 12px;
   color: #1a1917;
   color: var(--color-base);
   vertical-align: top;
   vertical-align: top;
   background-color: var(--color-surface-0);
   background-color: var(--color-surface-0);
Line 427: Line 437:
.mw-parser-output pre,
.mw-parser-output pre,
.mw-parser-output .mw-code {
.mw-parser-output .mw-code {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-mono);
   font-size: 0.78rem;
   font-size: 0.78rem;
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
   color: #1a1917;
   color: var(--color-base);
}
}
.mw-parser-output pre,
.mw-parser-output pre,
Line 445: Line 455:
/* Blockquote */
/* Blockquote */
.mw-parser-output blockquote {
.mw-parser-output blockquote {
   border-left: 2px solid #9a9690;
   border-left: 2px solid var(--border-color-interactive);
   padding-left: 16px;
   padding-left: 16px;
   color: #4a4845;
   color: var(--color-base--subtle);
   margin: 1rem 0;
   margin: 1rem 0;
   font-style: normal;
   font-style: normal;
Line 455: Line 465:
.mw-parser-output hr {
.mw-parser-output hr {
   border: none;
   border: none;
   border-top: 1px solid #c8c5bf;
   border-top: 1px solid var(--border-color-base);
   margin: 1.5rem 0;
   margin: 1.5rem 0;
}
}
Line 467: Line 477:
#searchInput,
#searchInput,
input[type="search"] {
input[type="search"] {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.78rem;
   font-size: 0.78rem;
   background: #f4f3f0;
   background: var(--color-surface-0);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   color: #1a1917;
   color: var(--color-base);
   outline: none;
   outline: none;
}
}
Line 477: Line 487:
#searchInput:focus,
#searchInput:focus,
input[type="search"]:focus {
input[type="search"]:focus {
   border-color: #1a1917;
   border-color: var(--color-base);
   box-shadow: none;
   box-shadow: none;
}
}
Line 487: Line 497:
input[type="submit"],
input[type="submit"],
button {
button {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.72rem;
   font-size: 0.72rem;
   letter-spacing: 1.5px;
   letter-spacing: 1.5px;
   text-transform: uppercase;
   text-transform: uppercase;
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   background: #e5e4e0;
   background: var(--color-surface-btn);
   color: #1a1917;
   color: var(--color-base);
   transition: background 0.15s, color 0.15s;
   transition: background 0.15s, color 0.15s;
}
}
Line 501: Line 511:
input[type="submit"]:hover,
input[type="submit"]:hover,
button:hover {
button:hover {
   background: #1a1917;
   background: var(--color-surface-btn--hover-bg);
   color: #f4f3f0;
   color: var(--color-surface-btn--hover-text);
   border-color: #1a1917;
   border-color: var(--color-surface-btn--hover-bg);
}
}
.mw-ui-button.mw-ui-progressive {
.mw-ui-button.mw-ui-progressive {
   background: #1a3a6b;
   background: var(--color-progressive);
   border-color: #1a3a6b;
   border-color: var(--color-progressive);
   color: #ffffff;
   color: var(--background-color-base);
}
}
.mw-ui-button.mw-ui-progressive:hover {
.mw-ui-button.mw-ui-progressive:hover {
   background: #0f2548;
   background: var(--color-progressive--hover);
   border-color: #0f2548;
   border-color: var(--color-progressive--hover);
}
}


Line 518: Line 528:
.citizen-page-actions,
.citizen-page-actions,
.page-actions {
.page-actions {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.72rem;
   font-size: 0.72rem;
   letter-spacing: 1px;
   letter-spacing: 1px;
Line 526: Line 536:
   letter-spacing: 1.5px;
   letter-spacing: 1.5px;
   text-transform: uppercase;
   text-transform: uppercase;
   color: #4a4845;
   color: var(--color-base--subtle);
   border: 1px solid transparent;
   border: 1px solid transparent;
   padding: 4px 10px;
   padding: 4px 10px;
Line 532: Line 542:
}
}
.citizen-page-actions__item a:hover {
.citizen-page-actions__item a:hover {
   color: #1a1917;
   color: var(--color-base);
   border-color: #9a9690;
   border-color: var(--border-color-interactive);
   background: #e5e4e0;
   background: var(--color-surface-2);
   text-decoration: none;
   text-decoration: none;
}
}


/* User menu */
/* User menu */
.citizen-user-info {
.citizen-userInfo-title,
    text-align: center !important;
.citizen-userInfo-title nav,
.citizen-userInfo-title ul,
.citizen-userInfo-title li,
.citizen-userInfo-title a {
  text-align: center;
  display: block;
  width: 100%;
}
}
.citizen-user-info,
.citizen-user-menu__card,
.citizen-user-menu__card,
.citizen-menu__card {
.citizen-menu__card {
    border-radius: 0 ;
  border-radius: 0;
    box-shadow: 0 1px 4px rgba(0,0,0,0.10);
  box-shadow: var(--box-shadow-card);
    border: 1px solid #c8c5bf;
  border: 1px solid var(--border-color-base);
    background: #edecea;
  background: var(--color-surface-1);
}
}


Line 553: Line 570:
#pt-logout a,
#pt-logout a,
.citizen-user-menu #pt-logout a {
.citizen-user-menu #pt-logout a {
    background: #e5e4e0;
  background: var(--color-surface-2);
    color: #1a1917;
  color: var(--color-base);
    border: 1px solid #c8c5bf;
  border: 1px solid var(--border-color-base);
    border-radius: 0;
  border-radius: 0;
}
}
#pt-logout a:hover,
#pt-logout a:hover,
.citizen-user-menu #pt-logout a:hover {
.citizen-user-menu #pt-logout a:hover {
    background: #1a1917;
  background: var(--color-surface-btn--hover-bg);
    color: #f4f3f0;
  color: var(--color-surface-btn--hover-text);
}
}


/* User info block at top */
/* User info block at top */
.citizen-user-info__name {
.citizen-user-info__name {
    color: #1a1917;
  color: var(--color-base);
    font-weight: 600;
  font-weight: 600;
    letter-spacing: 1px;
  letter-spacing: 1px;
}
}
.citizen-user-info__groups {
.citizen-user-info__groups {
    color: #7a7875;
  color: var(--color-base--disabled);
    font-size: 0.68rem;
  font-size: 0.68rem;
    letter-spacing: 1px;
  letter-spacing: 1px;
}
}


Line 579: Line 596:
.citizen-notification,
.citizen-notification,
.mw-notification {
.mw-notification {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   background: #edecea;
   background: var(--color-surface-1);
   color: #1a1917;
   color: var(--color-base);
}
}


Line 591: Line 608:
.mw-message-box-warning,
.mw-message-box-warning,
.mw-message-box-error {
.mw-message-box-error {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
   border-width: 1px;
   border-width: 1px;
Line 597: Line 614:
}
}
.mw-message-box-notice {
.mw-message-box-notice {
   background: #eaf0fa;
   background: var(--background-color-notice-subtle);
   border-color: #1a3a6b;
   border-color: var(--color-notice);
   color: #1a3a6b;
   color: var(--color-notice);
}
}
.mw-message-box-warning {
.mw-message-box-warning {
   background: #fdf0e6;
   background: var(--background-color-warning-subtle);
   border-color: #7c5000;
   border-color: var(--color-warning);
   color: #7c5000;
   color: var(--color-warning);
}
}
.mw-message-box-error {
.mw-message-box-error {
   background: #fbe8ea;
   background: var(--background-color-destructive-subtle);
   border-color: #9b1c1c;
   border-color: var(--color-destructive);
   color: #9b1c1c;
   color: var(--color-destructive);
}
}


Line 616: Line 633:
.oo-ui-dialog-content,
.oo-ui-dialog-content,
.oo-ui-messageDialog-content {
.oo-ui-messageDialog-content {
   background-color: #edecea;
   background-color: var(--color-surface-1);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   color: #1a1917;
   color: var(--color-base);
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
}
}


Line 627: Line 644:


::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: #edecea; }
::-webkit-scrollbar-track { background: var(--color-surface-1); }
::-webkit-scrollbar-thumb { background: #9a9690; }
::-webkit-scrollbar-thumb { background: var(--border-color-interactive); }
::-webkit-scrollbar-thumb:hover { background: #1a1917; }
::-webkit-scrollbar-thumb:hover { background: var(--color-base); }


#catlinks {
#catlinks {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.72rem;
   font-size: 0.72rem;
   background: #edecea;
   background: var(--color-surface-1);
   border: 1px solid #c8c5bf;
   border: 1px solid var(--border-color-base);
   padding: 6px 12px;
   padding: 6px 12px;
}
}
#catlinks a {
#catlinks a {
   color: #1a3a6b;
   color: var(--color-progressive);
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
}
}
Line 645: Line 662:
#footer,
#footer,
.citizen-footer {
.citizen-footer {
   background: #edecea;
   background: var(--color-surface-1);
   border-top: 1px solid #c8c5bf;
   border-top: 1px solid var(--border-color-base);
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.7rem;
   font-size: 0.7rem;
   letter-spacing: 1px;
   letter-spacing: 1px;
   color: #7a7875;
   color: var(--color-base--disabled);
}
}
#footer a,
#footer a,
.citizen-footer a {
.citizen-footer a {
   color: #7a7875;
   color: var(--color-base--disabled);
   border-bottom: 1px solid transparent;
   border-bottom: 1px solid transparent;
   transition: color 0.15s, border-color 0.15s;
   transition: color 0.15s, border-color 0.15s;
Line 660: Line 677:
#footer a:hover,
#footer a:hover,
.citizen-footer a:hover {
.citizen-footer a:hover {
   color: #1a1917;
   color: var(--color-base);
   border-bottom-color: #1a1917;
   border-bottom-color: var(--color-base);
}
}


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


#wpTextbox1,
#wpTextbox1,
textarea {
textarea {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-mono);
   font-size: 0.78rem;
   font-size: 0.78rem;
   background: #f4f3f0;
   background: var(--color-surface-0);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   color: #1a1917;
   color: var(--color-base);
}
}
#wpTextbox1:focus,
#wpTextbox1:focus,
textarea:focus {
textarea:focus {
   border-color: #1a1917;
   border-color: var(--color-base);
   outline: none;
   outline: none;
   box-shadow: none;
   box-shadow: none;
Line 691: Line 708:
input[type="email"],
input[type="email"],
select {
select {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.78rem;
   font-size: 0.78rem;
   background: #f4f3f0;
   background: var(--color-surface-0);
   border: 1px solid #9a9690;
   border: 1px solid var(--border-color-interactive);
   color: #1a1917;
   color: var(--color-base);
}
}
input[type="text"]:focus,
input[type="text"]:focus,
Line 701: Line 718:
input[type="email"]:focus,
input[type="email"]:focus,
select:focus {
select:focus {
   border-color: #1a1917;
   border-color: var(--color-base);
   outline: none;
   outline: none;
   box-shadow: none;
   box-shadow: none;
}
}


.diff-context { background: #f4f3f0; }
.diff-context { background: var(--color-surface-0); }
.diff-addedline { background: #e8f4ec; }
.diff-addedline { background: var(--color-diff-added); }
.diff-deletedline { background: #fbe8ea; }
.diff-deletedline { background: var(--color-diff-deleted); }
.diff-marker { color: #9a9690; }
.diff-marker { color: var(--border-color-interactive); }
table.diff td {
table.diff td {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-mono);
   font-size: 0.75rem;
   font-size: 0.75rem;
}
}
Line 717: Line 734:
.mw-changeslist,
.mw-changeslist,
.mw-changeslist-line {
.mw-changeslist-line {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.75rem;
   font-size: 0.75rem;
}
}
Line 723: Line 740:
.thumbcaption,
.thumbcaption,
.mw-parser-output .thumbcaption {
.mw-parser-output .thumbcaption {
   font-family: 'IBM Plex Mono', monospace;
   font-family: var(--font-family-base);
   font-size: 0.7rem;
   font-size: 0.7rem;
   color: #7a7875;
   color: var(--color-base--disabled);
   letter-spacing: 0.5px;
   letter-spacing: 0.5px;
}
}


::selection {
::selection {
   background: #1a1917;
   background: var(--color-selection-bg);
   color: #f4f3f0;
   color: var(--color-selection-text);
}
}

Latest revision as of 16:01, 5 March 2026

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

/* ════════════════════════════════════════════════════════════
   TOKENS — NEVER CHANGE (fonts, radius, etc.)
   ════════════════════════════════════════════════════════════ */

:root {
  --font-family-base:    'IBM Plex Mono', monospace;
  --font-family-heading: 'IBM Plex Mono', monospace;
  --font-family-mono:    'IBM Plex Mono', monospace;
  --border-radius--small:  0;
  --border-radius--medium: 0;
  --border-radius--large:  0;
  --border-radius--pill:   0;
  --border-radius-sharp:   0;
}

/* ════════════════════════════════════════════════════════════
   TOKENS — LIGHT MODE (default)
   ════════════════════════════════════════════════════════════ */
:root,
html.skin-theme-clientpref-day {
  --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-progressive--hover:      #0f2548;
  --color-progressive--active:     #0a1a30;
  --color-progressive--focus:      #1a3a6b;
  --border-color-base:             #c8c5bf;
  --border-color-interactive:      #9a9690;
  --color-destructive:             #9b1c1c;
  --color-destructive--hover:      #7a1515;
  --color-success:                 #1a5c2e;
  --color-warning:                 #7c5000;
  --color-notice:                  #1a3a6b;
  --color-icon:                    #4a4845;
  --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #1a1917;
  --color-icon-interactive:        #1a3a6b;
  --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);
  --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;
  --color-placeholder:                   #7a7875;
  --color-surface-btn:                   #e5e4e0;
  --color-surface-btn--hover-bg:         #1a1917;
  --color-surface-btn--hover-text:       #f4f3f0;
  --color-diff-added:                    #e8f4ec;
  --color-diff-deleted:                  #fbe8ea;
  --color-selection-bg:                  #1a1917;
  --color-selection-text:                #f4f3f0;
  --color-role-pilot-bg:     #f5f0e0;
  --color-role-pilot-text:   #5c4a00;
  --color-role-control-bg:   #e0eaf5;
  --color-role-control-text: #0a2a4a;
  --color-role-note-bg:      var(--color-surface-1);
  --color-role-note-text:    var(--color-base--disabled);
  --color-role-header-bg:     #d6ead6;
  --color-role-header-text:   #1a3a1a;
  --color-role-header-accent: #4a8c4a;
}

/* ════════════════════════════════════════════════════════════
   TOKENS — DARK MODE
   ════════════════════════════════════════════════════════════ */

html.skin-theme-clientpref-night {
  --color-surface-0:       #1a1917;
  --color-surface-1:       #242220;
  --color-surface-2:       #2e2c2a;
  --color-surface-3:       #242220;
  --color-surface-4:       #363330;
  --color-base:                    #f0eeea;
  --color-base--emphasized:        #f4f3f0;
  --color-base--subtle:            #c8c5bf;
  --color-base--disabled:          #7a7875;
  --color-progressive:             #7ba7e0;
  --color-progressive--hover:      #a0c0f0;
  --color-progressive--active:     #c0d8f8;
  --color-progressive--focus:      #7ba7e0;
  --border-color-base:             #3d3a36;
  --border-color-interactive:      #5a5650;
  --color-destructive:             #e07070;
  --color-destructive--hover:      #f09090;
  --color-success:                 #6abf7a;
  --color-warning:                 #d4a040;
  --color-notice:                  #7ba7e0;
  --color-icon:                    #c8c5bf;
  --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #f4f3f0;
  --color-icon-interactive:        #7ba7e0;
  --box-shadow-card:  0 1px 3px rgba(0,0,0,.40);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.50);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.40);
  --background-color-base:               #1a1917;
  --background-color-base--hover:        #242220;
  --background-color-neutral:            #242220;
  --background-color-neutral-subtle:     #1a1917;
  --background-color-interactive:        #2e2c2a;
  --background-color-interactive-subtle: #242220;
  --background-color-progressive-subtle: #1a2540;
  --background-color-disabled:           #2e2c2a;
  --background-color-disabled-subtle:    #242220;
  --background-color-destructive-subtle: #3a1a1a;
  --background-color-success-subtle:     #1a3020;
  --background-color-warning-subtle:     #302010;
  --background-color-notice-subtle:      #1a2540;
  --color-placeholder:                   #7a7875;
  --color-surface-btn:                   #2e2c2a;
  --color-surface-btn--hover-bg:         #f4f3f0;
  --color-surface-btn--hover-text:       #1a1917;
  --color-diff-added:                    #1a3020;
  --color-diff-deleted:                  #3a1a1a;
  --color-selection-bg:                  #f4f3f0;
  --color-selection-text:                #1a1917;
  --color-role-pilot-bg:     #2e2600;
  --color-role-pilot-text:   #e0c96a;
  --color-role-control-bg:   #0d1e30;
  --color-role-control-text: #7ba7e0;
  --color-role-note-bg:      var(--color-surface-1);
  --color-role-note-text:    var(--color-base--disabled);
  --color-role-header-bg:     #0d2010;
  --color-role-header-text:   #6abf7a;
  --color-role-header-accent: #3a7a4a;
}

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

body,
.skin-citizen {
  font-family: var(--font-family-base);
  background-color: var(--color-surface-0);
  color: var(--color-base);
}

/* ── Page heading ────────────────────────────────────────── */
#firstHeading,
.page-heading h1 {
  font-family: var(--font-family-heading);
  font-weight: 600;
  font-size: 1.3rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--color-base);
  border-bottom: 1px solid var(--border-color-base);
  padding-bottom: 0.5rem;
  margin-bottom: 1rem;
}

/* ── Site wordmark / logo text ───────────────────────────── */
.citizen-logo__wordmark,
#p-logo a,
.mw-logo-wordmark {
  font-family: var(--font-family-heading);
  font-weight: 600;
  letter-spacing: 4px;
  text-transform: uppercase;
}

/* ════════════════════════════════════════════════════════════
   CARD / SURFACE BACKGROUNDS
   ════════════════════════════════════════════════════════════ */

/* Citizen generic card */
.citizen-card,
.citizen-card-list__item,
.citizen-card__header,
.citizen-card__body {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-base);
  color: var(--color-base);
}

/* Page-info block (appears beneath article title) */
.citizen-page-info,
.citizen-page-info__item {
  background-color: var(--color-surface-1);
  border-color: var(--border-color-base);
  color: var(--color-base--subtle);
}

/* Citizen header */
#citizen-page-header,
.citizen-header,
header.citizen-header {
  background-color: var(--color-surface-1);
  border-bottom: 1px solid var(--border-color-interactive);
}

/* Sticky header */
.citizen-sticky-header {
  background-color: var(--color-surface-1);
  border-bottom: 1px solid var(--border-color-interactive);
}

/* Sidebar */
#citizen-sidebar,
.citizen-sidebar {
  background-color: var(--color-surface-1);
  border-right: 1px solid var(--border-color-base);
}

/* Sidebar navigation labels */
.citizen-nav__heading,
.citizen-sidebar .citizen-nav__heading {
  font-size: 0.65rem;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--color-base--disabled);
  font-weight: 600;
}

/* Sidebar links */
.citizen-nav__item a,
.citizen-sidebar a {
  font-family: var(--font-family-base);
  font-size: 0.75rem;
  letter-spacing: 0.5px;
  color: var(--color-base);
  background-color: transparent;
}
.citizen-nav__item a:hover,
.citizen-sidebar a:hover {
  color: var(--color-progressive);
  background-color: var(--color-surface-2);
}

/* TOC */
.citizen-toc,
#toc {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-base);
  font-family: var(--font-family-base);
  font-size: 0.75rem;
}
.citizen-toc__title,
#toc .toctitle {
  font-size: 0.7rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--color-base--disabled);
  font-weight: 600;
}
.citizen-toc__item a,
#toc a {
  color: var(--color-base--subtle);
}
.citizen-toc__item a:hover,
#toc a:hover {
  color: var(--color-progressive);
}

/* Citizen search suggestion / typeahead panel */
.citizen-search-results,
.citizen-typeahead {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-interactive);
  box-shadow: var(--box-shadow-menu);
}
.citizen-search-results__item,
.citizen-typeahead__item {
  background-color: transparent;
  color: var(--color-base);
}
.citizen-search-results__item:hover,
.citizen-typeahead__item:hover {
  background-color: var(--color-surface-2);
}

/* Citizen drawer / panel */
.citizen-drawer,
.citizen-drawer__inner,
.citizen-panel {
  background-color: var(--color-surface-1);
  border-color: var(--border-color-base);
}

/* Citizen overflow menu */
.citizen-overflow-menu,
.citizen-dropdown__menu,
.citizen-menu,
.citizen-menu__item {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-interactive);
  box-shadow: var(--box-shadow-menu);
  font-family: var(--font-family-base);
  font-size: 0.75rem;
  color: var(--color-base);
}
.citizen-dropdown__menu a,
.citizen-menu a,
.citizen-menu__item a {
  color: var(--color-base);
  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: var(--color-surface-2);
  color: var(--color-base);
}

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

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

#mw-content-text,
.mw-parser-output {
  font-family: var(--font-family-base);
  font-size: 0.82rem;
  line-height: 1.8;
  color: var(--color-base);
}

/* 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: var(--font-family-heading);
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--color-base);
}
.mw-parser-output h2 {
  font-size: 0.95rem;
  letter-spacing: 3px;
  border-bottom: 1px solid var(--border-color-base);
  padding-bottom: 0.35rem;
  margin-top: 2rem;
}
.mw-parser-output h3 {
  font-size: 0.85rem;
  letter-spacing: 2.5px;
  color: var(--color-base--subtle);
}
.mw-parser-output h4,
.mw-parser-output h5,
.mw-parser-output h6 {
  font-size: 0.78rem;
  letter-spacing: 2px;
  color: var(--color-base--disabled);
}

/* Links */
.mw-parser-output a,
#mw-content-text a {
  color: var(--color-progressive);
  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: var(--color-progressive--hover);
  border-bottom-color: var(--color-progressive);
}
.mw-parser-output a.new,
#mw-content-text a.new {
  color: var(--color-destructive);
}
.mw-parser-output a.new:hover {
  color: var(--color-destructive--hover);
  border-bottom-color: var(--color-destructive);
}

/* Tables */
.mw-parser-output table,
.mw-parser-output .wikitable {
  border: 1px solid var(--border-color-interactive);
  border-collapse: collapse;
  font-family: var(--font-family-base);
  font-size: 0.75rem;
  background: var(--color-surface-0);
  box-shadow: var(--box-shadow-card);
}
.mw-parser-output .wikitable th,
.mw-parser-output table th {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-interactive);
  padding: 6px 12px;
  font-size: 0.7rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--color-base);
  font-weight: 600;
}
.mw-parser-output .wikitable td,
.mw-parser-output table td {
  border: 1px solid var(--border-color-base);
  padding: 5px 12px;
  color: var(--color-base);
  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: var(--font-family-mono);
  font-size: 0.78rem;
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-base);
  color: var(--color-base);
}
.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 var(--border-color-interactive);
  padding-left: 16px;
  color: var(--color-base--subtle);
  margin: 1rem 0;
  font-style: normal;
}

/* Horizontal rule */
.mw-parser-output hr {
  border: none;
  border-top: 1px solid var(--border-color-base);
  margin: 1.5rem 0;
}

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

/* Search bar */
.citizen-search__input,
#searchInput,
input[type="search"] {
  font-family: var(--font-family-base);
  font-size: 0.78rem;
  background: var(--color-surface-0);
  border: 1px solid var(--border-color-interactive);
  color: var(--color-base);
  outline: none;
}
.citizen-search__input:focus,
#searchInput:focus,
input[type="search"]:focus {
  border-color: var(--color-base);
  box-shadow: none;
}

/* Buttons */
.citizen-btn,
.mw-ui-button,
input[type="button"],
input[type="submit"],
button {
  font-family: var(--font-family-base);
  font-size: 0.72rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  border: 1px solid var(--border-color-interactive);
  background: var(--color-surface-btn);
  color: var(--color-base);
  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: var(--color-surface-btn--hover-bg);
  color: var(--color-surface-btn--hover-text);
  border-color: var(--color-surface-btn--hover-bg);
}
.mw-ui-button.mw-ui-progressive {
  background: var(--color-progressive);
  border-color: var(--color-progressive);
  color: var(--background-color-base);
}
.mw-ui-button.mw-ui-progressive:hover {
  background: var(--color-progressive--hover);
  border-color: var(--color-progressive--hover);
}

/* Page actions (edit, history, talk…) */
.citizen-page-actions,
.page-actions {
  font-family: var(--font-family-base);
  font-size: 0.72rem;
  letter-spacing: 1px;
}
.citizen-page-actions__item a {
  font-size: 0.72rem;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--color-base--subtle);
  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: var(--color-base);
  border-color: var(--border-color-interactive);
  background: var(--color-surface-2);
  text-decoration: none;
}

/* User menu */
.citizen-userInfo-title,
.citizen-userInfo-title nav,
.citizen-userInfo-title ul,
.citizen-userInfo-title li,
.citizen-userInfo-title a {
  text-align: center;
  display: block;
  width: 100%;
}
.citizen-user-info,
.citizen-user-menu__card,
.citizen-menu__card {
  border-radius: 0;
  box-shadow: var(--box-shadow-card);
  border: 1px solid var(--border-color-base);
  background: var(--color-surface-1);
}

/* Remove red logout button */
#pt-logout a,
.citizen-user-menu #pt-logout a {
  background: var(--color-surface-2);
  color: var(--color-base);
  border: 1px solid var(--border-color-base);
  border-radius: 0;
}
#pt-logout a:hover,
.citizen-user-menu #pt-logout a:hover {
  background: var(--color-surface-btn--hover-bg);
  color: var(--color-surface-btn--hover-text);
}

/* User info block at top */
.citizen-user-info__name {
  color: var(--color-base);
  font-weight: 600;
  letter-spacing: 1px;
}
.citizen-user-info__groups {
  color: var(--color-base--disabled);
  font-size: 0.68rem;
  letter-spacing: 1px;
}

/* Notification / alerts */
.citizen-notification,
.mw-notification {
  font-family: var(--font-family-base);
  font-size: 0.75rem;
  border: 1px solid var(--border-color-interactive);
  background: var(--color-surface-1);
  color: var(--color-base);
}

/* Info / warning / error message boxes */
.mw-message-box,
.mw-message-box-notice,
.mw-message-box-warning,
.mw-message-box-error {
  font-family: var(--font-family-base);
  font-size: 0.75rem;
  border-width: 1px;
  border-style: solid;
}
.mw-message-box-notice {
  background: var(--background-color-notice-subtle);
  border-color: var(--color-notice);
  color: var(--color-notice);
}
.mw-message-box-warning {
  background: var(--background-color-warning-subtle);
  border-color: var(--color-warning);
  color: var(--color-warning);
}
.mw-message-box-error {
  background: var(--background-color-destructive-subtle);
  border-color: var(--color-destructive);
  color: var(--color-destructive);
}

/* OOUI popup / dialog */
.oo-ui-popupWidget-popup,
.oo-ui-dialog-content,
.oo-ui-messageDialog-content {
  background-color: var(--color-surface-1);
  border: 1px solid var(--border-color-interactive);
  color: var(--color-base);
  font-family: var(--font-family-base);
}

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

::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--color-surface-1); }
::-webkit-scrollbar-thumb { background: var(--border-color-interactive); }
::-webkit-scrollbar-thumb:hover { background: var(--color-base); }

#catlinks {
  font-family: var(--font-family-base);
  font-size: 0.72rem;
  background: var(--color-surface-1);
  border: 1px solid var(--border-color-base);
  padding: 6px 12px;
}
#catlinks a {
  color: var(--color-progressive);
  letter-spacing: 0.5px;
}

#footer,
.citizen-footer {
  background: var(--color-surface-1);
  border-top: 1px solid var(--border-color-base);
  font-family: var(--font-family-base);
  font-size: 0.7rem;
  letter-spacing: 1px;
  color: var(--color-base--disabled);
}
#footer a,
.citizen-footer a {
  color: var(--color-base--disabled);
  border-bottom: 1px solid transparent;
  transition: color 0.15s, border-color 0.15s;
}
#footer a:hover,
.citizen-footer a:hover {
  color: var(--color-base);
  border-bottom-color: var(--color-base);
}

.wikiEditor-toolbar,
#toolbar {
  background: var(--color-surface-1);
  border: 1px solid var(--border-color-base);
  border-bottom: none;
  font-family: var(--font-family-base);
}

#wpTextbox1,
textarea {
  font-family: var(--font-family-mono);
  font-size: 0.78rem;
  background: var(--color-surface-0);
  border: 1px solid var(--border-color-interactive);
  color: var(--color-base);
}
#wpTextbox1:focus,
textarea:focus {
  border-color: var(--color-base);
  outline: none;
  box-shadow: none;
}

input[type="text"],
input[type="password"],
input[type="email"],
select {
  font-family: var(--font-family-base);
  font-size: 0.78rem;
  background: var(--color-surface-0);
  border: 1px solid var(--border-color-interactive);
  color: var(--color-base);
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
select:focus {
  border-color: var(--color-base);
  outline: none;
  box-shadow: none;
}

.diff-context { background: var(--color-surface-0); }
.diff-addedline { background: var(--color-diff-added); }
.diff-deletedline { background: var(--color-diff-deleted); }
.diff-marker { color: var(--border-color-interactive); }
table.diff td {
  font-family: var(--font-family-mono);
  font-size: 0.75rem;
}

.mw-changeslist,
.mw-changeslist-line {
  font-family: var(--font-family-base);
  font-size: 0.75rem;
}

.thumbcaption,
.mw-parser-output .thumbcaption {
  font-family: var(--font-family-base);
  font-size: 0.7rem;
  color: var(--color-base--disabled);
  letter-spacing: 0.5px;
}

::selection {
  background: var(--color-selection-bg);
  color: var(--color-selection-text);
}