Jump to content

MediaWiki:Common.css: Difference between revisions

From Archive
Typography consistency: fix heading hierarchy, reset mw-heading backgrounds, unify nav tabs, proper h2/h3 distinction
Fix left/right nav alignment, reset margins
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* EJ Fox Archive — Tuftian Utilitarian Edition */
/* EJ Fox Archive - Matched to website2 exactly */
 
*, *::before, *::after {
  box-sizing: border-box;
}


:root {
:root {
   /* Typography — ET Book / Georgia feel */
   /* Typography - Match website2 exactly */
   --font-body: 'Georgia', 'Times New Roman', 'Droid Serif', 'Times', 'Source Serif Pro', serif;
   --font-body: 'Georgia', 'Times New Roman', 'Droid Serif', 'Times', 'Source Serif Pro', serif;
   --font-mono: ui-monospace, 'SF Mono', Monaco, 'Cascadia Code', monospace;
   --font-mono: 'Monaspace Neon', 'Monaspace Argon', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
  --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;


   /* Colors — warm, low-contrast, easy on eyes */
   /* Colors - Match website2 zinc palette */
   --bg: #fffff8;             /* Tufte cream */
   --bg: #fafafa;
   --bg-alt: #f7f7f0;
   --bg-alt: #f4f4f5;
   --fg: #111111;             /* near-black */
   --fg: #1a1a1a;           /* warm near-black - exact match */
   --fg-secondary: #454545;
   --fg-secondary: #52525b; /* zinc-600 */
   --fg-muted: #6b6b6b;
   --fg-muted: #71717a;     /* zinc-500 */
  --fg-faint: #999999;
   --border: #e4e4e7;       /* zinc-200 */
   --border: #ddd;
   --red: #dc2626;
  --border-light: #eee;
   --accent: #a00000;         /* deep red for links/emphasis */


  /* Spacing scale */
   --max-w: 65ch;
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2.5rem;
  --space-2xl: 4rem;
 
  /* Measure — optimal line length */
   --max-w: 60ch;
}
}


@media (prefers-color-scheme: dark) {
@media (prefers-color-scheme: dark) {
   :root {
   :root {
     --bg: #151515;
     --bg: #0a0a0a;           /* warm near-black - exact match */
     --bg-alt: #1c1c1c;
     --bg-alt: #18181b;       /* zinc-900 */
     --fg: #e8e8e8;
     --fg: #f5f5f4;           /* warmer off-white - exact match */
     --fg-secondary: #b0b0b0;
     --fg-secondary: #a1a1aa; /* zinc-400 */
     --fg-muted: #808080;
     --fg-muted: #71717a;    /* zinc-500 */
     --fg-faint: #606060;
     --border: #3f3f46;       /* zinc-700 */
     --border: #333;
     --red: #f87171;
    --border-light: #282828;
     --accent: #ff6b6b;
   }
   }
}
}
Line 51: Line 33:
html {
html {
   overflow-x: hidden;
   overflow-x: hidden;
  scroll-behavior: smooth;
}
}


Line 58: Line 39:
   color: var(--fg);
   color: var(--fg);
   font-family: var(--font-body);
   font-family: var(--font-body);
   font-size: 1.0625rem;        /* 17px — slightly larger for readability */
   font-size: 1.125rem;        /* 18px - match website2 */
   line-height: 1.7;           /* generous leading */
   line-height: 1.75;         /* match website2 loose */
   font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'onum' 1;
   font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'onum' 1;
   font-variant-ligatures: common-ligatures contextual;
   font-variant-ligatures: common-ligatures contextual;
   font-variant-numeric: oldstyle-nums proportional-nums;
   font-variant-numeric: oldstyle-nums;
   -webkit-font-smoothing: antialiased;
   -webkit-font-smoothing: antialiased;
   text-rendering: optimizeLegibility;
   text-rendering: optimizeLegibility;
Line 70: Line 51:


@media (prefers-color-scheme: dark) {
@media (prefers-color-scheme: dark) {
   body { font-weight: 350; }
   body { font-weight: 375; } /* match website2 dark mode */
}
}


/* === LAYOUT === */
/* === LAYOUT === */
#p-logo, .mw-wiki-logo, #footer, .printfooter,
#p-search, #p-logo, .mw-wiki-logo, #footer, .printfooter,
#f-poweredbyico, #f-copyrightico, .mw-jump-link, #jump-to-nav {
#f-poweredbyico, #f-copyrightico, .mw-jump-link, #jump-to-nav {
   display: none;
   display: none;
Line 82: Line 63:
   max-width: var(--max-w);
   max-width: var(--max-w);
   margin: 0 auto;
   margin: 0 auto;
   padding: var(--space-2xl) var(--space-lg) var(--space-xl);
   padding: 3rem 1rem 1.5rem;
   background: transparent;
   background: transparent;
   border: none;
   border: none;
Line 93: Line 74:
}
}


/* === TYPOGRAPHY — Clear hierarchy === */
/* === TYPOGRAPHY - Match website2 scale === */
h1, h2, h3, h4, h5, h6 {
h1, h2, h3, h4, h5, h6,
.mw-heading, .mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4 {
   font-family: var(--font-body);
   font-family: var(--font-body);
   font-weight: 400;
   font-weight: 400;
  font-style: normal;
   color: var(--fg);
   color: var(--fg);
  margin-top: 0;
   background: none !important;
   background: none !important;
  border: none !important;
}
}


/* Page title - the big one at top */
.mw-body h1, .firstHeading {
.firstHeading, #firstHeading, .mw-first-heading {
   font-size: 2.5rem;         /* 40px - match website2 4xl */
  font-family: var(--font-body);
   letter-spacing: -0.035em;   /* match website2 tighter */
   font-size: 2rem;
  font-weight: 400;
  font-style: normal;
   letter-spacing: -0.02em;
   line-height: 1.2;
   line-height: 1.2;
   margin: 0 0 var(--space-md);
   margin: 0 0 1.5rem;
  padding: 0;
   border: none;
   border: none;
  background: none;
}
}


/* Content H1 - rarely used since page title is H1 */
.mw-body h2, .mw-heading2 h2 {
.mw-body h1 {
   font-size: 2rem;           /* 32px - match website2 3xl */
   font-size: 1.75rem;
   letter-spacing: -0.025em;   /* match website2 tight */
  font-weight: 400;
  font-style: normal;
   letter-spacing: -0.01em;
   line-height: 1.25;
   line-height: 1.25;
   margin: var(--space-xl) 0 var(--space-md);
   margin: 2.5rem 0 0.75rem;
   padding: 0;
   padding: 0;
   border: none;
   border: none !important;
   background: none;
   background: none !important;
}
}


/* H2 - Main sections */
.mw-body h3, .mw-heading3 h3 {
.mw-body h2,
   font-size: 1.75rem;        /* 28px - match website2 2xl */
.mw-body .mw-heading2 h2 {
  letter-spacing: -0.015em;   /* match website2 */
   font-family: var(--font-body);
   line-height: 1.3;
   font-size: 1.375rem;
   font-weight: 400;
   font-weight: 400;
  font-style: normal;
   margin: 2rem 0 0.5rem;
  letter-spacing: -0.01em;
  color: var(--fg);
   margin: var(--space-2xl) 0 var(--space-md);
  padding: 0;
  border: none;
  border-bottom: 1px solid var(--border-light);
  padding-bottom: var(--space-xs);
  background: none !important;
}
}


/* H3 - Subsections */
.mw-body h4, .mw-heading4 h4 {
.mw-body h3,
   font-size: 1.5rem;          /* 24px - match website2 xl */
.mw-body .mw-heading3 h3 {
  letter-spacing: -0.01em;
   font-family: var(--font-body);
   line-height: 1.35;
   font-size: 1.125rem;
   font-weight: 400;
   font-weight: 400;
  font-style: italic;
   margin: 1.5rem 0 0.5rem;
  color: var(--fg);
   margin: var(--space-xl) 0 var(--space-sm);
  padding: 0;
  border: none;
  background: none !important;
}
 
/* H4 - Minor sections, label style */
.mw-body h4,
.mw-body .mw-heading4 h4 {
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 600;
  font-style: normal;
  color: var(--fg-secondary);
  margin: var(--space-lg) 0 var(--space-sm);
  padding: 0;
  border: none;
  background: none !important;
}
 
/* H5/H6 - Rare, small labels */
.mw-body h5, .mw-body h6 {
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  margin: var(--space-md) 0 var(--space-xs);
  background: none !important;
}
 
/* Reset any MediaWiki heading wrappers */
.mw-heading, .mw-heading2, .mw-heading3, .mw-heading4 {
  background: none !important;
  border: none !important;
  margin: 0;
  padding: 0;
}
 
/* Bold text - consistent weight */
.mw-body b, .mw-body strong {
  font-weight: 600;
}
}


.mw-body p {
.mw-body p {
   margin: 0 0 var(--space-md);
   margin-bottom: 1rem;
   line-height: 1.7;
   line-height: 1.75;         /* match website2 */
  hanging-punctuation: first last;
}
}


.mw-body p + p {
/* === LINKS === */
  text-indent: 1.5em;          /* Traditional paragraph indent */
  margin-top: 0;
}
 
/* === LINKS — Subtle, informative === */
.mw-body a {
.mw-body a {
   color: var(--fg);
   color: var(--fg);
   text-decoration: none;
   text-decoration: none;
   background: linear-gradient(var(--bg), var(--bg)),
   border-bottom: 1px solid var(--border);
              linear-gradient(var(--bg), var(--bg)),
   transition: border-color 200ms ease-out;
              linear-gradient(var(--accent), var(--accent));
  background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
   background-repeat: no-repeat, no-repeat, repeat-x;
  background-position: 0 93%, 100% 93%, 0 93%;
  text-shadow: 0.03em 0 var(--bg), -0.03em 0 var(--bg),
              0 0.03em var(--bg), 0 -0.03em var(--bg);
}
}


.mw-body a:hover {
.mw-body a:hover { border-color: var(--fg); }
  color: var(--accent);
  background: none;
  text-shadow: none;
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-underline-offset: 2px;
}


.mw-body a.new {
.mw-body a.new {
   color: var(--fg-muted);
   color: var(--red);
   background: none;
   border-color: var(--red);
  text-shadow: none;
   opacity: 0.7;
  text-decoration: underline;
  text-decoration-style: dotted;
   text-decoration-color: var(--fg-faint);
}
}


.mw-body a.new:hover {
.mw-body a.new:hover { opacity: 1; }
   color: var(--accent);
 
   text-decoration-color: var(--accent);
.mw-body a.external {
   color: var(--fg-secondary);
   border-color: var(--fg-secondary);
}
}


.mw-body a.external::after {
/* === CODE === */
   content: " °";
code, pre {
   font-size: 0.7em;
   font-family: var(--font-mono);
   color: var(--fg-faint);
   font-size: 0.875rem;
   vertical-align: super;
   font-feature-settings: 'lnum' 1, 'tnum' 1;
  background: var(--bg-alt);
   border: none;
  border-radius: 2px;
}
}


/* === CODE — Clean, not heavy === */
code {
code {
   font-family: var(--font-mono);
   padding: 1px 4px;
   font-size: 0.85em;
   word-break: break-word;
  background: transparent;
  border: none;
  color: var(--fg-secondary);
  padding: 0;
}
}


pre {
pre {
  font-family: var(--font-mono);
   padding: 1rem;
  font-size: 0.8125rem;
   margin: 1rem 0;
  line-height: 1.5;
  background: var(--bg-alt);
  border: none;
  border-left: 3px solid var(--border);
  border-radius: 0;
   padding: var(--space-md) var(--space-lg);
   margin: var(--space-lg) 0;
   overflow-x: auto;
   overflow-x: auto;
   -webkit-overflow-scrolling: touch;
   -webkit-overflow-scrolling: touch;
  line-height: 1.4;
  max-width: 100%;
}
}


pre code {
/* === TABLES === */
  font-size: inherit;
  color: var(--fg);
}
 
/* === TABLES — Minimal, rely on alignment === */
.wikitable {
.wikitable {
   width: 100%;
   width: 100%;
   border-collapse: collapse;
   border-collapse: collapse;
   font-family: var(--font-mono);
   font-family: var(--font-mono);
   font-size: 0.8125rem;
   font-size: 0.8rem;
   font-feature-settings: 'tnum' 1, 'lnum' 1;
   font-feature-settings: 'lnum' 1, 'tnum' 1;
   margin: var(--space-lg) 0;
   margin: 1rem 0;
   border: none;
   border: none;
}
}
Line 298: Line 183:
.wikitable th, .wikitable td {
.wikitable th, .wikitable td {
   border: none;
   border: none;
   border-bottom: 1px solid var(--border-light);
   border-bottom: 1px solid var(--border);
   padding: var(--space-sm) var(--space-md) var(--space-sm) 0;
   padding: 0.5rem 0.75rem;
   text-align: left;
   text-align: left;
   vertical-align: top;
   word-break: break-word;
}
}


.wikitable th {
.wikitable th {
   font-family: var(--font-sans);
   background: transparent;
  font-size: 0.6875rem;
   font-weight: 600;
   font-weight: 600;
   text-transform: uppercase;
   text-transform: uppercase;
   letter-spacing: 0.08em;
   letter-spacing: 0.05em;
  font-size: 0.7rem;
   color: var(--fg-muted);
   color: var(--fg-muted);
  border-bottom: 2px solid var(--border);
  padding-bottom: var(--space-sm);
}
}


Line 319: Line 202:
}
}


.wikitable tbody tr:hover {
/* === LISTS === */
  background: var(--bg-alt);
}
 
/* === LISTS — Proper spacing === */
.mw-body ul, .mw-body ol {
.mw-body ul, .mw-body ol {
   margin: var(--space-md) 0;
   margin: 0.5rem 0;
   padding-left: 1.25rem;
   padding-left: 1.5rem;
}
 
.mw-body li {
  margin-bottom: var(--space-xs);
  padding-left: var(--space-xs);
}
 
.mw-body li::marker {
  color: var(--fg-muted);
}
}


/* Nested lists */
.mw-body li { margin-bottom: 0.25rem; }
.mw-body li ul, .mw-body li ol {
  margin: var(--space-xs) 0;
}


/* === BLOCKQUOTES === */
/* === TOC === */
.mw-body blockquote {
  margin: var(--space-lg) 0 var(--space-lg) var(--space-lg);
  padding: 0;
  border: none;
  font-style: italic;
  color: var(--fg-secondary);
}
 
/* === TOC — Compact reference === */
#toc, .toc {
#toc, .toc {
   display: inline-block;
   display: inline-block;
   background: transparent;
   background: transparent;
   border: none;
   border: none;
  border-left: 2px solid var(--border);
   padding: 0.5rem 0;
   padding: var(--space-sm) 0 var(--space-sm) var(--space-md);
   margin: 0.75rem 0;
   margin: var(--space-md) 0 var(--space-lg);
   font-size: 0.875rem;
   font-size: 0.8125rem;
   max-width: 260px;
   max-width: 280px;
}
}


.toctitle h2,
.toctitle h2 {
#toc h2,
   font-family: var(--font-mono);
.toc h2 {
   font-size: 0.65rem;
   font-family: var(--font-sans) !important;
   font-weight: 500;
   font-size: 0.625rem !important;
   font-weight: 600 !important;
  font-style: normal !important;
   text-transform: uppercase;
   text-transform: uppercase;
   letter-spacing: 0.12em;
   letter-spacing: 0.15em;
   color: var(--fg-muted);
   color: var(--fg-muted);
   margin: 0 0 var(--space-sm) !important;
   margin: 0 0 0.5rem;
   border: none !important;
   border: none !important;
   padding: 0 !important;
   padding: 0;
   background: none !important;
   background: none !important;
}
}


.toc ul {
.toc ul { margin: 0; padding-left: 0.75rem; list-style: none; }
  margin: 0;
  padding-left: var(--space-md);
  list-style: none;
}
 
.toc li {
  margin-bottom: 2px;
}
 
.tocnumber {
.tocnumber {
   font-family: var(--font-mono);
   font-family: var(--font-mono);
   font-size: 0.625rem;
   font-size: 0.65rem;
   color: var(--fg-faint);
   color: var(--fg-muted);
   margin-right: var(--space-xs);
   font-feature-settings: 'lnum' 1, 'tnum' 1;
}
}


.toctext {
/* === EDIT LINKS === */
  color: var(--fg-secondary);
#p-views, #p-cactions {
}
   margin: 0.5rem 0;
 
/* === META UI — Consistent navigation === */
 
/* All navigation tabs use same styling */
#p-views, #p-cactions, #p-namespaces,
.vector-menu-tabs, .mw-portlet-views {
  max-width: var(--max-w);
   margin: 0 auto var(--space-sm);
  padding: 0 var(--space-lg);
   background: transparent;
   background: transparent;
   border: none;
   border: none;
}
}


#p-views ul, #p-cactions ul, #p-namespaces ul,
#p-views ul, #p-cactions ul {
.vector-menu-tabs ul, .mw-portlet-views ul {
   display: flex;
   display: flex;
   gap: var(--space-md);
   gap: 1rem;
   list-style: none;
   list-style: none;
   margin: 0;
   margin: 0;
Line 422: Line 257:
}
}


/* All nav links - consistent sans-serif small caps */
#p-views a, #p-cactions a {
#p-views a, #p-cactions a, #p-namespaces a,
   font-family: var(--font-mono);
.vector-menu-tabs a, .mw-portlet a,
   font-size: 0.7rem;
.vector-tabbed-menu a {
   font-family: var(--font-sans);
   font-size: 0.6875rem;
  font-weight: 500;
  font-style: normal;
   text-transform: uppercase;
   text-transform: uppercase;
   letter-spacing: 0.08em;
   letter-spacing: 0.1em;
   color: var(--fg-faint);
   color: var(--fg-muted);
  background: none !important;
  text-shadow: none;
  text-decoration: none;
   border: none;
   border: none;
  background: transparent;
}
}


#p-views a:hover, #p-cactions a:hover, #p-namespaces a:hover,
#p-views a:hover, #p-cactions a:hover {
.vector-menu-tabs a:hover, .mw-portlet a:hover {
   color: var(--fg);
  color: var(--fg-muted);
  text-decoration: none;
}
 
/* Selected/active tab */
#p-views li.selected a, #p-namespaces li.selected a,
.vector-menu-tabs .selected a {
   color: var(--fg-secondary);
  font-weight: 600;
}
}


/* Edit section links */
.mw-editsection {
.mw-editsection {
   font-family: var(--font-sans);
   font-family: var(--font-mono);
   font-size: 0.5625rem;
   font-size: 0.6rem;
  font-weight: 500;
  font-style: normal;
   text-transform: uppercase;
   text-transform: uppercase;
   letter-spacing: 0.08em;
   letter-spacing: 0.1em;
   color: var(--fg-faint);
   opacity: 0.3;
   margin-left: var(--space-sm);
   margin-left: 0.5rem;
}
}


.mw-editsection:hover {
.mw-editsection:hover { opacity: 0.6; }
  color: var(--fg-muted);
.mw-editsection a { border: none; color: var(--fg-muted); }
}


.mw-editsection a {
/* === CATEGORIES === */
  background: none !important;
  text-shadow: none !important;
  color: inherit;
  text-decoration: none;
}
 
/* === CATEGORIES — Endmatter === */
#catlinks {
#catlinks {
   margin-top: var(--space-2xl);
  display: block;
   padding-top: var(--space-md);
   margin-top: 2.5rem;
   border-top: 1px solid var(--border-light);
   padding-top: 0.75rem;
   font-family: var(--font-sans);
   border: none;
   font-size: 0.625rem;
   font-family: var(--font-mono);
  font-weight: 500;
   font-size: 0.65rem;
   text-transform: uppercase;
   text-transform: uppercase;
   letter-spacing: 0.1em;
   letter-spacing: 0.15em;
   color: var(--fg-faint);
   color: var(--fg-muted);
}
}


#catlinks a {
#catlinks a {
   color: var(--fg-muted);
   color: var(--fg-muted);
  background: none;
  text-shadow: none;
  text-decoration: none;
}
#catlinks a:hover {
  color: var(--fg-secondary);
  text-decoration: underline;
}
/* === SEARCH — Utilitarian === */
#p-search {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: var(--space-md) var(--space-lg);
}
#p-search h3 {
  display: none;
}
#p-search form {
  display: flex;
  gap: var(--space-sm);
  align-items: center;
}
#searchInput {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  padding: var(--space-xs) 0;
  color: var(--fg);
  width: 100%;
  max-width: 240px;
  transition: border-color 150ms ease;
}
#searchInput:focus {
  outline: none;
  border-color: var(--fg-muted);
}
#searchInput::placeholder {
  color: var(--fg-faint);
  font-style: italic;
}
#searchButton, .searchButton {
  font-family: var(--font-sans);
  font-size: 0.625rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  background: transparent;
   border: none;
   border: none;
  padding: var(--space-xs) var(--space-sm);
  color: var(--fg-muted);
  cursor: pointer;
  transition: color 150ms ease;
}
#searchButton:hover, .searchButton:hover {
  color: var(--fg);
}
}


/* === INFOBOX — Sidenote style === */
#catlinks a:hover { color: var(--fg-secondary); }
.infobox {
  float: right;
  width: 200px;
  margin: 0 0 var(--space-md) var(--space-lg);
  padding: 0;
  border: none;
  border-left: 2px solid var(--border);
  padding-left: var(--space-md);
  background: transparent;
  font-size: 0.8125rem;
}
 
.infobox th {
  font-family: var(--font-sans);
  font-size: 0.5625rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-align: left;
  padding: var(--space-xs) 0;
}
 
.infobox td {
  padding: var(--space-xs) 0;
  color: var(--fg-secondary);
}
 
/* === SUBTITLE/META === */
#siteSub, #contentSub, .mw-content-subtitle {
  font-family: var(--font-sans);
  font-size: 0.625rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--fg-faint);
  margin-bottom: var(--space-md);
}


/* === SPECIAL PAGES === */
/* === SPECIAL PAGES === */
.ns-special .mw-body {
.ns-special .mw-body { line-height: 1.6; }
  line-height: 1.5;
}


.mw-changeslist-line {
.mw-changeslist-line {
   margin-bottom: var(--space-xs);
   margin-bottom: 0.25rem;
   line-height: 1.4;
   line-height: 1.3;
}
}


Line 612: Line 314:
   font-family: var(--font-mono);
   font-family: var(--font-mono);
   font-size: 0.75rem;
   font-size: 0.75rem;
   color: var(--fg-muted);
   font-feature-settings: 'lnum' 1, 'tnum' 1;
}
}


.mw-diff-bytes {
.mw-diff-bytes {
   font-family: var(--font-mono);
   font-family: var(--font-mono);
   font-size: 0.6875rem;
   font-size: 0.65rem;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
}
}


Line 623: Line 326:
   font-style: italic;
   font-style: italic;
   color: var(--fg-muted);
   color: var(--fg-muted);
   margin-left: var(--space-xs);
   margin-left: 0.25rem;
}
}


Line 645: Line 348:
.wikitable[style*="margin-top"] {
.wikitable[style*="margin-top"] {
   font-size: 0.75rem;
   font-size: 0.75rem;
   margin-top: var(--space-xl);
   margin-top: 2rem;
}
 
.wikitable[style*="margin-top"] th {
  font-size: 0.7rem;
}
 
/* === SEARCH === */
#searchInput {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  padding: 0.25rem 0.5rem;
  color: var(--fg);
}
 
#searchInput::placeholder { color: var(--fg-muted); }
 
/* === INFOBOXES === */
.infobox {
  float: right;
  width: 240px;
  margin: 0 0 1rem 1rem;
  border: none;
  background: var(--bg-alt);
  font-size: 0.875rem;
  padding: 0.75rem;
}
 
.infobox th {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  text-align: left;
  padding: 0.25rem;
  font-weight: 600;
}
 
.infobox td { padding: 0.25rem; }
 
/* === SUBTITLE/META === */
#siteSub, #contentSub, .mw-content-subtitle {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--fg-muted);
  opacity: 0.6;
}
}


/* Hide on Main Page */
/* Hide empty catlinks on Main Page */
body.page-Main_Page #catlinks { display: none; }
body.page-Main_Page #catlinks { display: none; }


/* ============================================
/* ============================================
   MOBILE — Responsive adjustments
   MOBILE STYLES - Fix horizontal scrolling
   ============================================ */
   ============================================ */
@media (max-width: 768px) {
@media (max-width: 768px) {
  :root {
    --space-2xl: 2.5rem;
  }
  body {
    font-size: 1rem;
  }
   .mw-body {
   .mw-body {
     padding: var(--space-xl) var(--space-md) var(--space-lg);
     padding: 2rem 0.75rem 1rem;
     max-width: 100vw;
     max-width: 100vw;
     overflow-x: hidden;
     overflow-x: hidden;
   }
   }


   .mw-body h1 { font-size: 1.75rem; }
   .mw-body h1 { font-size: 2rem; }
   .mw-body h2 { font-size: 1.25rem; }
   .mw-body h2 { font-size: 1.5rem; }
 
   .mw-body h3 { font-size: 1.25rem; }
   .mw-body p + p {
    text-indent: 0;            /* No indent on mobile */
  }
 
  #p-search {
    padding: var(--space-sm) var(--space-md);
  }
 
  #searchInput {
    max-width: 100%;
  }
 
  #p-views, #p-cactions {
    padding: 0 var(--space-md);
  }


   #p-views ul, #p-cactions ul {
   #p-views ul, #p-cactions ul {
     flex-wrap: wrap;
     flex-direction: column;
     gap: var(--space-sm);
     gap: 0.5rem;
   }
   }


Line 698: Line 427:
   }
   }


  /* Code blocks - contained scroll */
   pre {
   pre {
     max-width: calc(100vw - var(--space-lg));
     max-width: calc(100vw - 1.5rem);
     font-size: 0.75rem;
     font-size: 0.75rem;
     padding: var(--space-sm) var(--space-md);
     padding: 0.75rem;
     border-left-width: 2px;
    white-space: pre;
    word-break: normal;
     overflow-x: auto;
   }
   }


  /* Inline code - allow wrapping */
   code {
   code {
     word-break: break-all;
     word-break: break-all;
   }
   }


  /* Tables - horizontal scroll wrapper */
   .wikitable {
   .wikitable {
     display: block;
     display: block;
     max-width: calc(100vw - var(--space-lg));
     max-width: calc(100vw - 1.5rem);
     overflow-x: auto;
     overflow-x: auto;
     -webkit-overflow-scrolling: touch;
     -webkit-overflow-scrolling: touch;
   }
   }


  .wikitable th, .wikitable td {
    white-space: nowrap;
    min-width: 80px;
  }
  /* Infobox - stack on mobile */
   .infobox {
   .infobox {
     float: none;
     float: none;
     width: 100%;
     width: 100%;
     margin: var(--space-md) 0;
     margin: 1rem 0;
    border-left: none;
    border-top: 2px solid var(--border);
    padding-left: 0;
    padding-top: var(--space-md);
  }
 
  /* Links — simpler on mobile */
  .mw-body a {
    background: none;
    text-shadow: none;
    text-decoration: underline;
    text-decoration-color: var(--border);
    text-underline-offset: 2px;
  }
 
  .mw-body a:hover {
    text-decoration-color: var(--accent);
   }
   }
}
}
Line 743: Line 466:
@media (max-width: 480px) {
@media (max-width: 480px) {
   .mw-body {
   .mw-body {
     padding: var(--space-lg) var(--space-sm) var(--space-md);
     padding: 1.5rem 0.5rem 0.75rem;
   }
   }


   .mw-body h1 { font-size: 1.5rem; }
   .mw-body h1 { font-size: 1.75rem; }
  .mw-body h2 { font-size: 1.375rem; }


   pre {
   pre {
     max-width: calc(100vw - var(--space-md));
     max-width: calc(100vw - 1rem);
     font-size: 0.6875rem;
     font-size: 0.7rem;
     padding: var(--space-sm);
     padding: 0.5rem;
   }
   }


   .wikitable {
   .wikitable {
     max-width: calc(100vw - var(--space-md));
     max-width: calc(100vw - 1rem);
     font-size: 0.6875rem;
     font-size: 0.7rem;
   }
   }
}
}


/* === PRINT === */
/* === KILL TAB UNDERLINES === */
@media print {
.vector-menu-tabs .selected,
   .mw-body {
.vector-menu-tabs .selected a,
    max-width: none;
.vector-menu-tabs li,
    padding: 0;
.vector-menu-tabs li a,
  }
#p-namespaces li,
#p-namespaces li a,
#p-views li,
#p-views li a,
.mw-list-item,
.mw-list-item a,
#ca-nstab-main,
#ca-talk,
#ca-view,
#ca-viewsource,
#ca-history {
  border: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
  background: transparent !important;
}
 
/* Vector 2022 specific tab styling */
.vector-page-toolbar,
.vector-page-toolbar-container,
.vector-tabs,
.vector-tabs li,
.vector-tabs a,
.cdx-tabs,
.cdx-tabs__list,
.cdx-tabs__list__item {
  border: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
}
 
/* Nuclear option - all nav borders */
nav, nav * {
  border: none !important;
}
 
/* === NAV FONT CONSISTENCY === */
/* All nav elements: mono, uppercase, small */
#p-namespaces,
#p-namespaces a,
#p-views,
#p-views a,
#p-personal,
#p-personal a,
#p-logo a,
.mw-portlet a,
.vector-menu a,
.vector-tabs a,
.cdx-tabs a,
#pt-login,
#pt-login a,
#ca-nstab-main,
#ca-talk,
nav a,
header a,
.mw-header a,
.vector-header a,
.vector-header-container a {
  font-family: var(--font-mono) !important;
  font-size: 0.7rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.1em !important;
  color: var(--fg-muted) !important;
}
 
/* Hover state */
#p-namespaces a:hover,
#p-views a:hover,
#p-personal a:hover,
.mw-portlet a:hover,
.vector-menu a:hover,
nav a:hover,
header a:hover {
  color: var(--fg) !important;
}
 
/* Site title "Archive" - slightly larger */
.mw-logo-wordmark,
.vector-header .mw-logo a,
#p-logo a {
   font-size: 0.875rem !important;
  font-weight: 500 !important;
}
 
/* === MINIMAL SPACING FIXES === */
/* Add gap between PAGE and DISCUSSION */
#p-namespaces li {
  margin-right: 1rem !important;
}
 
/* Reduce huge gap above title */
.mw-body {
  padding-top: 1.5rem !important;
}
 
/* === FIX LEFT/RIGHT NAV ALIGNMENT === */
#left-navigation,
#right-navigation {
  margin: 0 !important;
  padding: 0.5rem 0 !important;
}


  #p-search, #p-views, #p-cactions, .mw-editsection, #toc {
.vector-page-toolbar-container {
    display: none;
  padding: 0 !important;
   }
   margin: 0 !important;
}


  .mw-body a {
/* Reset the -8px margin on left nav */
    text-decoration: underline;
#left-navigation {
  }
  margin-left: 0 !important;
}


  .mw-body a::after {
/* Align both nav sections vertically */
    content: " (" attr(href) ")";
#left-navigation,
    font-size: 0.8em;
#right-navigation,
    color: var(--fg-muted);
#p-namespaces,
  }
#p-views {
  display: flex !important;
  align-items: center !important;
}
}

Latest revision as of 17:47, 26 January 2026

/* EJ Fox Archive - Matched to website2 exactly */

:root {
  /* Typography - Match website2 exactly */
  --font-body: 'Georgia', 'Times New Roman', 'Droid Serif', 'Times', 'Source Serif Pro', serif;
  --font-mono: 'Monaspace Neon', 'Monaspace Argon', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;

  /* Colors - Match website2 zinc palette */
  --bg: #fafafa;
  --bg-alt: #f4f4f5;
  --fg: #1a1a1a;           /* warm near-black - exact match */
  --fg-secondary: #52525b;  /* zinc-600 */
  --fg-muted: #71717a;      /* zinc-500 */
  --border: #e4e4e7;        /* zinc-200 */
  --red: #dc2626;

  --max-w: 65ch;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0a0a0a;           /* warm near-black - exact match */
    --bg-alt: #18181b;       /* zinc-900 */
    --fg: #f5f5f4;           /* warmer off-white - exact match */
    --fg-secondary: #a1a1aa; /* zinc-400 */
    --fg-muted: #71717a;     /* zinc-500 */
    --border: #3f3f46;       /* zinc-700 */
    --red: #f87171;
  }
}

/* === BASE === */
html {
  overflow-x: hidden;
}

body {
  background: var(--bg);
  color: var(--fg);
  font-family: var(--font-body);
  font-size: 1.125rem;        /* 18px - match website2 */
  line-height: 1.75;          /* match website2 loose */
  font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'onum' 1;
  font-variant-ligatures: common-ligatures contextual;
  font-variant-numeric: oldstyle-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  margin: 0;
  overflow-x: hidden;
}

@media (prefers-color-scheme: dark) {
  body { font-weight: 375; }  /* match website2 dark mode */
}

/* === LAYOUT === */
#p-search, #p-logo, .mw-wiki-logo, #footer, .printfooter,
#f-poweredbyico, #f-copyrightico, .mw-jump-link, #jump-to-nav {
  display: none;
}

.mw-body {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 3rem 1rem 1.5rem;
  background: transparent;
  border: none;
}

#content {
  margin-left: 0;
  background: transparent;
  border: none;
}

/* === TYPOGRAPHY - Match website2 scale === */
h1, h2, h3, h4, h5, h6,
.mw-heading, .mw-heading1, .mw-heading2, .mw-heading3, .mw-heading4 {
  font-family: var(--font-body);
  font-weight: 400;
  color: var(--fg);
  background: none !important;
  border: none !important;
}

.mw-body h1, .firstHeading {
  font-size: 2.5rem;          /* 40px - match website2 4xl */
  letter-spacing: -0.035em;   /* match website2 tighter */
  line-height: 1.2;
  margin: 0 0 1.5rem;
  border: none;
}

.mw-body h2, .mw-heading2 h2 {
  font-size: 2rem;            /* 32px - match website2 3xl */
  letter-spacing: -0.025em;   /* match website2 tight */
  line-height: 1.25;
  margin: 2.5rem 0 0.75rem;
  padding: 0;
  border: none !important;
  background: none !important;
}

.mw-body h3, .mw-heading3 h3 {
  font-size: 1.75rem;         /* 28px - match website2 2xl */
  letter-spacing: -0.015em;   /* match website2 */
  line-height: 1.3;
  font-weight: 400;
  margin: 2rem 0 0.5rem;
}

.mw-body h4, .mw-heading4 h4 {
  font-size: 1.5rem;          /* 24px - match website2 xl */
  letter-spacing: -0.01em;
  line-height: 1.35;
  font-weight: 400;
  margin: 1.5rem 0 0.5rem;
}

.mw-body p {
  margin-bottom: 1rem;
  line-height: 1.75;          /* match website2 */
}

/* === LINKS === */
.mw-body a {
  color: var(--fg);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
  transition: border-color 200ms ease-out;
}

.mw-body a:hover { border-color: var(--fg); }

.mw-body a.new {
  color: var(--red);
  border-color: var(--red);
  opacity: 0.7;
}

.mw-body a.new:hover { opacity: 1; }

.mw-body a.external {
  color: var(--fg-secondary);
  border-color: var(--fg-secondary);
}

/* === CODE === */
code, pre {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
  background: var(--bg-alt);
  border: none;
  border-radius: 2px;
}

code {
  padding: 1px 4px;
  word-break: break-word;
}

pre {
  padding: 1rem;
  margin: 1rem 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  line-height: 1.4;
  max-width: 100%;
}

/* === TABLES === */
.wikitable {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
  font-size: 0.8rem;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
  margin: 1rem 0;
  border: none;
}

.wikitable th, .wikitable td {
  border: none;
  border-bottom: 1px solid var(--border);
  padding: 0.5rem 0.75rem;
  text-align: left;
  word-break: break-word;
}

.wikitable th {
  background: transparent;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.7rem;
  color: var(--fg-muted);
}

.wikitable tr:last-child td {
  border-bottom: none;
}

/* === LISTS === */
.mw-body ul, .mw-body ol {
  margin: 0.5rem 0;
  padding-left: 1.5rem;
}

.mw-body li { margin-bottom: 0.25rem; }

/* === TOC === */
#toc, .toc {
  display: inline-block;
  background: transparent;
  border: none;
  padding: 0.5rem 0;
  margin: 0.75rem 0;
  font-size: 0.875rem;
  max-width: 260px;
}

.toctitle h2 {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--fg-muted);
  margin: 0 0 0.5rem;
  border: none !important;
  padding: 0;
  background: none !important;
}

.toc ul { margin: 0; padding-left: 0.75rem; list-style: none; }
.tocnumber {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  color: var(--fg-muted);
  font-feature-settings: 'lnum' 1, 'tnum' 1;
}

/* === EDIT LINKS === */
#p-views, #p-cactions {
  margin: 0.5rem 0;
  background: transparent;
  border: none;
}

#p-views ul, #p-cactions ul {
  display: flex;
  gap: 1rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

#p-views a, #p-cactions a {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--fg-muted);
  border: none;
  background: transparent;
}

#p-views a:hover, #p-cactions a:hover {
  color: var(--fg);
}

.mw-editsection {
  font-family: var(--font-mono);
  font-size: 0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  opacity: 0.3;
  margin-left: 0.5rem;
}

.mw-editsection:hover { opacity: 0.6; }
.mw-editsection a { border: none; color: var(--fg-muted); }

/* === CATEGORIES === */
#catlinks {
  display: block;
  margin-top: 2.5rem;
  padding-top: 0.75rem;
  border: none;
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--fg-muted);
}

#catlinks a {
  color: var(--fg-muted);
  border: none;
}

#catlinks a:hover { color: var(--fg-secondary); }

/* === SPECIAL PAGES === */
.ns-special .mw-body { line-height: 1.6; }

.mw-changeslist-line {
  margin-bottom: 0.25rem;
  line-height: 1.3;
}

.mw-changeslist-time {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
}

.mw-diff-bytes {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  font-feature-settings: 'lnum' 1, 'tnum' 1;
}

.comment {
  font-style: italic;
  color: var(--fg-muted);
  margin-left: 0.25rem;
}

/* === VECTOR SKIN CLEANUP === */
.vector-page-titlebar,
.vector-page-toolbar,
.vector-menu-tabs,
.vector-menu-content,
#p-views, #p-namespaces, #p-cactions,
.mw-portlet, .vector-tabs, .vector-menu {
  border: none;
  box-shadow: none;
}

.vector-menu-tabs li, .vector-tabs li, #p-views li {
  border: none;
  background: transparent;
}

/* === NAVBOXES === */
.wikitable[style*="margin-top"] {
  font-size: 0.75rem;
  margin-top: 2rem;
}

.wikitable[style*="margin-top"] th {
  font-size: 0.7rem;
}

/* === SEARCH === */
#searchInput {
  font-family: var(--font-mono);
  font-size: 0.875rem;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  padding: 0.25rem 0.5rem;
  color: var(--fg);
}

#searchInput::placeholder { color: var(--fg-muted); }

/* === INFOBOXES === */
.infobox {
  float: right;
  width: 240px;
  margin: 0 0 1rem 1rem;
  border: none;
  background: var(--bg-alt);
  font-size: 0.875rem;
  padding: 0.75rem;
}

.infobox th {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  text-align: left;
  padding: 0.25rem;
  font-weight: 600;
}

.infobox td { padding: 0.25rem; }

/* === SUBTITLE/META === */
#siteSub, #contentSub, .mw-content-subtitle {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--fg-muted);
  opacity: 0.6;
}

/* Hide empty catlinks on Main Page */
body.page-Main_Page #catlinks { display: none; }

/* ============================================
   MOBILE STYLES - Fix horizontal scrolling
   ============================================ */
@media (max-width: 768px) {
  .mw-body {
    padding: 2rem 0.75rem 1rem;
    max-width: 100vw;
    overflow-x: hidden;
  }

  .mw-body h1 { font-size: 2rem; }
  .mw-body h2 { font-size: 1.5rem; }
  .mw-body h3 { font-size: 1.25rem; }

  #p-views ul, #p-cactions ul {
    flex-direction: column;
    gap: 0.5rem;
  }

  #toc, .toc {
    max-width: 100%;
    display: block;
  }

  /* Code blocks - contained scroll */
  pre {
    max-width: calc(100vw - 1.5rem);
    font-size: 0.75rem;
    padding: 0.75rem;
    white-space: pre;
    word-break: normal;
    overflow-x: auto;
  }

  /* Inline code - allow wrapping */
  code {
    word-break: break-all;
  }

  /* Tables - horizontal scroll wrapper */
  .wikitable {
    display: block;
    max-width: calc(100vw - 1.5rem);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .wikitable th, .wikitable td {
    white-space: nowrap;
    min-width: 80px;
  }

  /* Infobox - stack on mobile */
  .infobox {
    float: none;
    width: 100%;
    margin: 1rem 0;
  }
}

/* Extra small screens */
@media (max-width: 480px) {
  .mw-body {
    padding: 1.5rem 0.5rem 0.75rem;
  }

  .mw-body h1 { font-size: 1.75rem; }
  .mw-body h2 { font-size: 1.375rem; }

  pre {
    max-width: calc(100vw - 1rem);
    font-size: 0.7rem;
    padding: 0.5rem;
  }

  .wikitable {
    max-width: calc(100vw - 1rem);
    font-size: 0.7rem;
  }
}

/* === KILL TAB UNDERLINES === */
.vector-menu-tabs .selected,
.vector-menu-tabs .selected a,
.vector-menu-tabs li,
.vector-menu-tabs li a,
#p-namespaces li,
#p-namespaces li a,
#p-views li,
#p-views li a,
.mw-list-item,
.mw-list-item a,
#ca-nstab-main,
#ca-talk,
#ca-view,
#ca-viewsource,
#ca-history {
  border: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
  background: transparent !important;
}

/* Vector 2022 specific tab styling */
.vector-page-toolbar,
.vector-page-toolbar-container,
.vector-tabs,
.vector-tabs li,
.vector-tabs a,
.cdx-tabs,
.cdx-tabs__list,
.cdx-tabs__list__item {
  border: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
}

/* Nuclear option - all nav borders */
nav, nav * {
  border: none !important;
}

/* === NAV FONT CONSISTENCY === */
/* All nav elements: mono, uppercase, small */
#p-namespaces,
#p-namespaces a,
#p-views,
#p-views a,
#p-personal,
#p-personal a,
#p-logo a,
.mw-portlet a,
.vector-menu a,
.vector-tabs a,
.cdx-tabs a,
#pt-login,
#pt-login a,
#ca-nstab-main,
#ca-talk,
nav a,
header a,
.mw-header a,
.vector-header a,
.vector-header-container a {
  font-family: var(--font-mono) !important;
  font-size: 0.7rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.1em !important;
  color: var(--fg-muted) !important;
}

/* Hover state */
#p-namespaces a:hover,
#p-views a:hover,
#p-personal a:hover,
.mw-portlet a:hover,
.vector-menu a:hover,
nav a:hover,
header a:hover {
  color: var(--fg) !important;
}

/* Site title "Archive" - slightly larger */
.mw-logo-wordmark,
.vector-header .mw-logo a,
#p-logo a {
  font-size: 0.875rem !important;
  font-weight: 500 !important;
}

/* === MINIMAL SPACING FIXES === */
/* Add gap between PAGE and DISCUSSION */
#p-namespaces li {
  margin-right: 1rem !important;
}

/* Reduce huge gap above title */
.mw-body {
  padding-top: 1.5rem !important;
}

/* === FIX LEFT/RIGHT NAV ALIGNMENT === */
#left-navigation,
#right-navigation {
  margin: 0 !important;
  padding: 0.5rem 0 !important;
}

.vector-page-toolbar-container {
  padding: 0 !important;
  margin: 0 !important;
}

/* Reset the -8px margin on left nav */
#left-navigation {
  margin-left: 0 !important;
}

/* Align both nav sections vertically */
#left-navigation,
#right-navigation,
#p-namespaces,
#p-views {
  display: flex !important;
  align-items: center !important;
}