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 6: Line 6:


   Key concerns addressed:
   Key concerns addressed:
   - Citizen defaults to dark mode (or follows OS preference).
   - Supports both light and dark modes via Citizen's built-in
    We override every dark-mode selector so the wiki always
    theme toggle (data-mw-skin-color-scheme attribute).
    renders in the warm off-white light palette.
  - Light palette: warm off-white tones.
  - Dark palette:  warm dark charcoal/brown tones (inverse).
   - OOUI components use their own background variables;
   - OOUI components use their own background variables;
     those are overridden here too.
     those are overridden here too.
   - Cards / surface boxes are forced to the near-background
   - Cards / surface boxes are forced to the near-background
     palette (#f4f3f0 / #edecea) with a 1 px border only.
     palette with a 1 px border only.
   ═══════════════════════════════════════════════════════════ */
   ═══════════════════════════════════════════════════════════ */


Line 19: Line 20:


/* ════════════════════════════════════════════════════════════
/* ════════════════════════════════════════════════════════════
   DESIGN TOKENS
   DESIGN TOKENS — LIGHT MODE
   Applied to :root AND the dark-mode selectors so neither
   Applied to :root (default) and the explicit light selector.
  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,
[data-mw-skin-color-scheme="dark"],
[data-mw-skin-color-scheme="light"] {
[data-mw-skin-color-scheme="light"] {
   /* ── Surface backgrounds (warm off-white) ─────────────── */
   /* ── Surface backgrounds (warm off-white) ─────────────── */
Line 99: Line 96:


   /* ── OOUI text / border variables ─────────────────────── */
   /* ── OOUI text / border variables ─────────────────────── */
  --color-base:                        #1a1917;
   --color-placeholder:                #7a7875;
   --color-placeholder:                #7a7875;
   --border-color-base:                #c8c5bf;
 
   /* ── Button surface (for mode-aware hover) ─────────────── */
  --color-surface-btn:                #e5e4e0;
  --color-surface-btn--hover-bg:      #1a1917;
  --color-surface-btn--hover-text:    #f4f3f0;
 
  /* ── Diff colours ─────────────────────────────────────── */
  --color-diff-added:                  #e8f4ec;
  --color-diff-deleted:                #fbe8ea;
 
  /* ── Selection ────────────────────────────────────────── */
  --color-selection-bg:                #1a1917;
  --color-selection-text:              #f4f3f0;
}
}


/* Also override the dark media query in case the skin injects
/* ════════════════════════════════════════════════════════════
   its own dark palette inside @media (prefers-color-scheme: dark) */
  DESIGN TOKENS — DARK MODE
  Warm dark charcoal/brown tones — the inverse aesthetic.
  ════════════════════════════════════════════════════════════ */
 
[data-mw-skin-color-scheme="dark"] {
  /* ── Surface backgrounds (warm dark charcoal) ─────────── */
  --color-surface-0:      #1a1917;  /* page canvas            */
  --color-surface-1:      #242220;  /* header / sidebar        */
  --color-surface-2:      #2e2c2a;  /* TOC / elevated card    */
  --color-surface-3:      #242220;  /* card surface            */
  --color-surface-4:      #363330;  /* strong card / selected  */
 
  /* ── Text ─────────────────────────────────────────────── */
  --color-base:                    #f0eeea;
  --color-base--emphasized:        #f4f3f0;
  --color-base--subtle:            #c8c5bf;
  --color-base--disabled:          #7a7875;
 
  /* ── Links / progressive ──────────────────────────────── */
  --color-progressive:            #7ba7e0;
  --color-progressive--hover:      #a0c0f0;
  --color-progressive--active:    #c0d8f8;
  --color-progressive--focus:      #7ba7e0;
 
  /* ── Borders ──────────────────────────────────────────── */
  --border-color-base:            #3d3a36;
  --border-color-interactive:      #5a5650;
 
  /* ── Status colours ───────────────────────────────────── */
  --color-destructive:            #e07070;
  --color-destructive--hover:      #f09090;
  --color-success:                #6abf7a;
  --color-warning:                #d4a040;
  --color-notice:                  #7ba7e0;
 
  /* ── Icons / accents ──────────────────────────────────── */
  --color-icon:                    #c8c5bf;
  --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #f4f3f0;
  --color-icon-interactive:        #7ba7e0;
 
  /* ── 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,.40);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.50);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.40);
 
  /* ── OOUI / MediaWiki core background variables ────────── */
  --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;
 
  /* ── OOUI text / border variables ─────────────────────── */
  --color-placeholder:                #7a7875;
 
  /* ── Button surface ────────────────────────────────────── */
  --color-surface-btn:                #2e2c2a;
  --color-surface-btn--hover-bg:      #f4f3f0;
  --color-surface-btn--hover-text:    #1a1917;
 
  /* ── Diff colours ─────────────────────────────────────── */
  --color-diff-added:                  #1a3020;
  --color-diff-deleted:                #3a1a1a;
 
  /* ── Selection ────────────────────────────────────────── */
  --color-selection-bg:                #f4f3f0;
  --color-selection-text:              #1a1917;
}
 
/* ════════════════════════════════════════════════════════════
  OS DARK MODE PREFERENCE
  Applies the dark palette when the OS prefers dark mode AND
  the user has not set an explicit Citizen toggle
  (i.e. data-mw-skin-color-scheme is absent entirely).
  When the user sets the toggle, the explicit selectors above
  take over with the same values, so there is no duplication.
  ════════════════════════════════════════════════════════════ */
 
@media (prefers-color-scheme: dark) {
@media (prefers-color-scheme: dark) {
   :root,
   :root:not([data-mw-skin-color-scheme]),
   .skin-citizen,
   .skin-citizen:not([data-mw-skin-color-scheme]) {
  [data-mw-skin-color-scheme="dark"] {
     --color-surface-0:      #1a1917;
     --color-surface-0:      #f4f3f0;
     --color-surface-1:      #242220;
     --color-surface-1:      #edecea;
     --color-surface-2:      #2e2c2a;
     --color-surface-2:      #e5e4e0;
     --color-surface-3:      #242220;
     --color-surface-3:      #edecea;
     --color-surface-4:      #363330;
     --color-surface-4:      #e5e4e0;
     --color-base:            #f0eeea;
     --color-base:            #1a1917;
     --color-base--emphasized: #f4f3f0;
     --color-base--emphasized: #1a1917;
     --color-base--subtle:    #c8c5bf;
     --color-base--subtle:    #4a4845;
     --color-base--disabled:  #7a7875;
     --color-base--disabled:  #7a7875;
     --color-progressive:    #1a3a6b;
     --color-progressive:    #7ba7e0;
     --color-icon:            #4a4845;
    --color-progressive--hover: #a0c0f0;
    --color-progressive--active: #c0d8f8;
    --color-progressive--focus: #7ba7e0;
     --color-icon:            #c8c5bf;
     --color-icon--subtle:    #7a7875;
     --color-icon--subtle:    #7a7875;
     --border-color-base:    #c8c5bf;
    --color-icon--emphasized: #f4f3f0;
     --border-color-interactive: #9a9690;
    --color-icon-interactive: #7ba7e0;
     --background-color-base:   #f4f3f0;
    --color-destructive:    #e07070;
     --background-color-neutral: #edecea;
    --color-destructive--hover: #f09090;
     --background-color-interactive: #e5e4e0;
    --color-success:        #6abf7a;
    --color-warning:        #d4a040;
    --color-notice:          #7ba7e0;
     --border-color-base:    #3d3a36;
     --border-color-interactive: #5a5650;
     --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;
     --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;
    --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);
    --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-placeholder:            #7a7875;
   }
   }
}
}
Line 138: Line 275:
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 283:
#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 298:
#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 306:
/* ════════════════════════════════════════════════════════════
/* ════════════════════════════════════════════════════════════
   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 313:
.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 321:
.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 330:
.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 343:
#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 353:
   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 360:
.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 375:
.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 385:
   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 400:
.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 418:
.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 427:
.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 445:
.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 452:
.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 462:
#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 475:
.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 491:
   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 498:
   font-size: 0.78rem;
   font-size: 0.78rem;
   letter-spacing: 2px;
   letter-spacing: 2px;
   color: #7a7875;
   color: var(--color-base--disabled);
}
}


Line 370: Line 504:
.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 511:
.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 526:
.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 561:
.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 579:
/* 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 589:
.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 601:
#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 611:
#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 621:
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 635:
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 652:
.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 660:
   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 666:
}
}
.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;
}
}
Line 544: Line 678:
.citizen-userInfo-title li,
.citizen-userInfo-title li,
.citizen-userInfo-title a {
.citizen-userInfo-title a {
    text-align: center;
  text-align: center;
    display: block;
  display: block;
    width: 100%;
  width: 100%;
}
}
.citizen-user-info,
.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 560: Line 694:
#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 586: Line 720:
.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 598: Line 732:
.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 604: Line 738:
}
}
.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 623: Line 757:
.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 634: Line 768:


::-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 652: Line 786:
#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 667: Line 801:
#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 698: Line 832:
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 708: Line 842:
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 724: Line 858:
.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 730: Line 864:
.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);
}
}

Revision as of 20: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:
   - Supports both light and dark modes via Citizen's built-in
     theme toggle (data-mw-skin-color-scheme attribute).
   - Light palette: warm off-white tones.
   - Dark palette:  warm dark charcoal/brown tones (inverse).
   - OOUI components use their own background variables;
     those are overridden here too.
   - Cards / surface boxes are forced to the near-background
     palette 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 — LIGHT MODE
   Applied to :root (default) and the explicit light selector.
   ════════════════════════════════════════════════════════════ */

:root,
.skin-citizen,
[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-placeholder:                 #7a7875;

  /* ── Button surface (for mode-aware hover) ─────────────── */
  --color-surface-btn:                 #e5e4e0;
  --color-surface-btn--hover-bg:       #1a1917;
  --color-surface-btn--hover-text:     #f4f3f0;

  /* ── Diff colours ─────────────────────────────────────── */
  --color-diff-added:                  #e8f4ec;
  --color-diff-deleted:                #fbe8ea;

  /* ── Selection ────────────────────────────────────────── */
  --color-selection-bg:                #1a1917;
  --color-selection-text:              #f4f3f0;
}

/* ════════════════════════════════════════════════════════════
   DESIGN TOKENS — DARK MODE
   Warm dark charcoal/brown tones — the inverse aesthetic.
   ════════════════════════════════════════════════════════════ */

[data-mw-skin-color-scheme="dark"] {
  /* ── Surface backgrounds (warm dark charcoal) ─────────── */
  --color-surface-0:       #1a1917;   /* page canvas             */
  --color-surface-1:       #242220;   /* header / sidebar        */
  --color-surface-2:       #2e2c2a;   /* TOC / elevated card     */
  --color-surface-3:       #242220;   /* card surface            */
  --color-surface-4:       #363330;   /* strong card / selected  */

  /* ── Text ─────────────────────────────────────────────── */
  --color-base:                    #f0eeea;
  --color-base--emphasized:        #f4f3f0;
  --color-base--subtle:            #c8c5bf;
  --color-base--disabled:          #7a7875;

  /* ── Links / progressive ──────────────────────────────── */
  --color-progressive:             #7ba7e0;
  --color-progressive--hover:      #a0c0f0;
  --color-progressive--active:     #c0d8f8;
  --color-progressive--focus:      #7ba7e0;

  /* ── Borders ──────────────────────────────────────────── */
  --border-color-base:             #3d3a36;
  --border-color-interactive:      #5a5650;

  /* ── Status colours ───────────────────────────────────── */
  --color-destructive:             #e07070;
  --color-destructive--hover:      #f09090;
  --color-success:                 #6abf7a;
  --color-warning:                 #d4a040;
  --color-notice:                  #7ba7e0;

  /* ── Icons / accents ──────────────────────────────────── */
  --color-icon:                    #c8c5bf;
  --color-icon--subtle:            #7a7875;
  --color-icon--emphasized:        #f4f3f0;
  --color-icon-interactive:        #7ba7e0;

  /* ── 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,.40);
  --box-shadow-menu:  0 4px 12px rgba(0,0,0,.50);
  --box-shadow-drop:  0 2px 8px rgba(0,0,0,.40);

  /* ── OOUI / MediaWiki core background variables ────────── */
  --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;

  /* ── OOUI text / border variables ─────────────────────── */
  --color-placeholder:                 #7a7875;

  /* ── Button surface ────────────────────────────────────── */
  --color-surface-btn:                 #2e2c2a;
  --color-surface-btn--hover-bg:       #f4f3f0;
  --color-surface-btn--hover-text:     #1a1917;

  /* ── Diff colours ─────────────────────────────────────── */
  --color-diff-added:                  #1a3020;
  --color-diff-deleted:                #3a1a1a;

  /* ── Selection ────────────────────────────────────────── */
  --color-selection-bg:                #f4f3f0;
  --color-selection-text:              #1a1917;
}

/* ════════════════════════════════════════════════════════════
   OS DARK MODE PREFERENCE
   Applies the dark palette when the OS prefers dark mode AND
   the user has not set an explicit Citizen toggle
   (i.e. data-mw-skin-color-scheme is absent entirely).
   When the user sets the toggle, the explicit selectors above
   take over with the same values, so there is no duplication.
   ════════════════════════════════════════════════════════════ */

@media (prefers-color-scheme: dark) {
  :root:not([data-mw-skin-color-scheme]),
  .skin-citizen:not([data-mw-skin-color-scheme]) {
    --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;
    --color-icon:            #c8c5bf;
    --color-icon--subtle:    #7a7875;
    --color-icon--emphasized: #f4f3f0;
    --color-icon-interactive: #7ba7e0;
    --color-destructive:     #e07070;
    --color-destructive--hover: #f09090;
    --color-success:         #6abf7a;
    --color-warning:         #d4a040;
    --color-notice:          #7ba7e0;
    --border-color-base:     #3d3a36;
    --border-color-interactive: #5a5650;
    --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;
    --font-family-base:    'IBM Plex Mono', monospace;
    --font-family-heading: 'IBM Plex Mono', monospace;
    --font-family-mono:    'IBM Plex Mono', monospace;
    --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);
    --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-placeholder:             #7a7875;
  }
}

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