Difference between revisions of "MediaWiki:Vector.css"
Jump to navigation
Jump to search
| Line 1: | Line 1: | ||
| − | /* | + | /************************************************************ |
| + | * Holdfast Wiki – Vector skin overrides (Neutral / Tan) | ||
| + | * Single source of truth for colors, spacing, and layout. | ||
| + | ************************************************************/ | ||
| − | /* | + | /* ========================= |
| + | 0) THEME VARIABLES | ||
| + | ========================= */ | ||
:root{ | :root{ | ||
| − | --hf-sidebar-w: 13em; | + | /* Layout */ |
| − | --hf-logo-h: 236px; | + | --hf-sidebar-w: 13em; /* sidebar width */ |
| + | --hf-logo-h: 236px; /* Vector logo background height */ | ||
| − | /* | + | /* Page & cards */ |
| − | --hf-page-bg: #eae1cc; | + | --hf-page-bg: #eae1cc; /* parchment */ |
| − | --hf-card-bg: #fffdf6; | + | --hf-card-bg: #fffdf6; /* content card */ |
--hf-card-border: #d6ceb9; | --hf-card-border: #d6ceb9; | ||
--hf-shadow: 0 1px 2px rgba(0,0,0,.06); | --hf-shadow: 0 1px 2px rgba(0,0,0,.06); | ||
| − | /* | + | /* Sidebar */ |
| − | --hf-side-bg: #c5b08a; | + | --hf-side-bg: #c5b08a; /* tan */ |
| − | --hf-side-fg: #2b2b2b; | + | --hf-side-fg: #2b2b2b; /* default text in sidebar */ |
| − | --hf-side-link: #1b1b1b; | + | --hf-side-link: #1b1b1b; /* link text in sidebar */ |
| − | --hf-side-link-hover: #000; | + | --hf-side-link-hover: #000; /* link hover text in sidebar */ |
| − | /* | + | /* Text & links */ |
--hf-fg: #1e1e1e; | --hf-fg: #1e1e1e; | ||
--hf-link: #1e4ed8; | --hf-link: #1e4ed8; | ||
| Line 24: | Line 30: | ||
--hf-link-visited: #6b21a8; | --hf-link-visited: #6b21a8; | ||
| − | /* | + | /* Headings */ |
--hf-h2-fg: #1c1c1c; | --hf-h2-fg: #1c1c1c; | ||
--hf-h2-underline: #d8cfb8; | --hf-h2-underline: #d8cfb8; | ||
| + | |||
| + | /* Accents (borders that match sidebar tone) */ | ||
| + | --hf-tan-border: #b3a07c; | ||
} | } | ||
| − | /* | + | /* ========================= |
| + | 1) GLOBAL LAYOUT | ||
| + | ========================= */ | ||
body{ | body{ | ||
background: var(--hf-page-bg); | background: var(--hf-page-bg); | ||
| Line 40: | Line 51: | ||
} | } | ||
| − | /* | + | /* Main content as a card */ |
#content{ | #content{ | ||
background: var(--hf-card-bg); | background: var(--hf-card-bg); | ||
| Line 46: | Line 57: | ||
border-radius: 10px; | border-radius: 10px; | ||
padding: 1.2rem 1.4rem; | padding: 1.2rem 1.4rem; | ||
| − | margin-left: var(--hf-sidebar-w); | + | margin-left: var(--hf-sidebar-w); /* clear the fixed sidebar */ |
box-shadow: var(--hf-shadow); | box-shadow: var(--hf-shadow); | ||
position: relative; | position: relative; | ||
| Line 52: | Line 63: | ||
} | } | ||
| − | /* - | + | /* ========================= |
| + | 2) SIDEBAR (FULL-HEIGHT TAN) | ||
| + | ========================= */ | ||
#mw-panel{ | #mw-panel{ | ||
position: fixed; | position: fixed; | ||
| Line 64: | Line 77: | ||
} | } | ||
| − | /* Sidebar logo block */ | + | /* Sidebar logo block (Vector uses background-image on the <a>) */ |
#p-logo{ | #p-logo{ | ||
background: var(--hf-side-bg); | background: var(--hf-side-bg); | ||
| Line 75: | Line 88: | ||
background-repeat: no-repeat; | background-repeat: no-repeat; | ||
background-position: left center; | background-position: left center; | ||
| − | text-indent: -9999px; | + | text-indent: -9999px; /* hide "Main Page" text */ |
overflow: hidden; | overflow: hidden; | ||
} | } | ||
| − | /* Sidebar links */ | + | /* Sidebar links & headings */ |
#mw-panel .portal .body li a{ | #mw-panel .portal .body li a{ | ||
color: var(--hf-side-link); | color: var(--hf-side-link); | ||
display: block; | display: block; | ||
| − | padding: . | + | padding: .28em .5em; |
border-radius: 4px; | border-radius: 4px; | ||
text-decoration: none; | text-decoration: none; | ||
| Line 90: | Line 103: | ||
background: rgba(0,0,0,.06); | background: rgba(0,0,0,.06); | ||
color: var(--hf-side-link-hover); | color: var(--hf-side-link-hover); | ||
| + | } | ||
| + | #mw-panel .portal .portal-heading{ | ||
| + | color: #1b1b1b; | ||
| + | font-weight: 700; | ||
| + | margin: .4rem .45rem .25rem; | ||
} | } | ||
| − | /* | + | /* ========================= |
| + | 3) TOP HEADER & TABS | ||
| + | ========================= */ | ||
#mw-head-base, | #mw-head-base, | ||
#mw-head{ | #mw-head{ | ||
| − | background: | + | background: #cbb78f; /* subtle solid tan */ |
| − | margin-left: var(--hf-sidebar-w); | + | border-bottom: 1px solid #b8a681; /* thin divider */ |
| + | margin-left: var(--hf-sidebar-w); /* align with fixed sidebar */ | ||
} | } | ||
.vector-menu-tabs a{ | .vector-menu-tabs a{ | ||
| Line 105: | Line 126: | ||
} | } | ||
.vector-menu-tabs .selected a{ | .vector-menu-tabs .selected a{ | ||
| − | background: rgba(255,255,255,. | + | background: rgba(255,255,255,.25); |
border-color: rgba(0,0,0,.15); | border-color: rgba(0,0,0,.15); | ||
} | } | ||
| − | /* | + | /* ========================= |
| + | 4) HEADINGS & SECTION BARS | ||
| + | ========================= */ | ||
| + | |||
| + | /* Clean H2/H3 underlined headings (no colored bars) */ | ||
.mw-parser-output h2{ | .mw-parser-output h2{ | ||
background: transparent !important; | background: transparent !important; | ||
color: var(--hf-h2-fg); | color: var(--hf-h2-fg); | ||
| − | font-weight: 800 | + | font-weight: 700; /* slightly reduced from 800 for balance */ |
letter-spacing: .2px; | letter-spacing: .2px; | ||
margin: 1.1rem 0 .6rem; | margin: 1.1rem 0 .6rem; | ||
| Line 126: | Line 151: | ||
} | } | ||
| − | /* | + | /* Template section bars (match sidebar tan) */ |
.hf-section, | .hf-section, | ||
| − | #mf-content { | + | #mf-content{ |
| − | background: var(--hf-side-bg) !important; | + | background: var(--hf-side-bg) !important; |
| − | color: var(--hf-side-link-hover) !important; | + | color: var(--hf-side-link-hover) !important; |
font-weight: 700; | font-weight: 700; | ||
font-variant: small-caps; | font-variant: small-caps; | ||
| − | padding: | + | padding: .42em .7em !important; |
| − | margin: | + | margin: .9rem 0 .6rem !important; |
| − | border: 1px solid | + | border: 1px solid var(--hf-tan-border) !important; |
| − | border-radius: | + | border-radius: 4px !important; |
| + | box-shadow: none !important; | ||
} | } | ||
| − | + | /* Last-resort cleanup for old inline greens */ | |
| − | |||
| − | /* | ||
.mw-parser-output [style*="#3c553c"]{ | .mw-parser-output [style*="#3c553c"]{ | ||
background: transparent !important; | background: transparent !important; | ||
| Line 148: | Line 172: | ||
} | } | ||
| − | /* | + | /* ========================= |
| − | .hf-hero{ margin-top: .7em; } | + | 5) HERO / HEADERTEMPLATE |
| + | ========================= */ | ||
| + | .hf-hero{ margin-top: .7em; margin-bottom: .6rem; } | ||
.hf-hero-table{ | .hf-hero-table{ | ||
width: 100%; | width: 100%; | ||
| Line 168: | Line 194: | ||
} | } | ||
| − | /* | + | /* ========================= |
| + | 6) LINKS, LISTS, TABLES, CODE | ||
| + | ========================= */ | ||
| + | |||
| + | /* Links */ | ||
.mw-parser-output a{ color: var(--hf-link); } | .mw-parser-output a{ color: var(--hf-link); } | ||
.mw-parser-output a:hover{ color: var(--hf-link-hover); text-decoration: underline; } | .mw-parser-output a:hover{ color: var(--hf-link-hover); text-decoration: underline; } | ||
.mw-parser-output a:visited{ color: var(--hf-link-visited); } | .mw-parser-output a:visited{ color: var(--hf-link-visited); } | ||
| − | /* | + | /* Lists breathe a bit more on parchment */ |
| − | + | .mw-parser-output ul{ margin-left: 1.25em; } | |
| − | + | .mw-parser-output li{ line-height: 1.45; } | |
| − | |||
| − | |||
| − | |||
| − | } | ||
| − | |||
| − | /* | + | /* Tables tuned for light theme */ |
.wikitable{ | .wikitable{ | ||
background: #fffefa; | background: #fffefa; | ||
| Line 196: | Line 221: | ||
.wikitable tr:nth-child(even) td{ background: #fff9eb; } | .wikitable tr:nth-child(even) td{ background: #fff9eb; } | ||
| − | /* | + | /* Code blocks (dark for readability) */ |
pre, | pre, | ||
.syntaxhighlight{ | .syntaxhighlight{ | ||
| Line 205: | Line 230: | ||
padding: .8em 1em !important; | padding: .8em 1em !important; | ||
} | } | ||
| + | |||
| + | /* Right-aligned images/cards shouldn't kiss tan bars */ | ||
| + | .thumb.tright, | ||
| + | .mw-halign-right .thumb, | ||
| + | .floatright{ | ||
| + | margin-left: .75rem; | ||
| + | } | ||
| + | |||
| + | /* ========================= | ||
| + | 7) INTERACTIONS | ||
| + | ========================= */ | ||
| + | |||
| + | /* Custom [Show]/[Hide] toggles styled like links */ | ||
| + | span[class^="mw-customtoggle-"]{ | ||
| + | color: #0645ad; | ||
| + | cursor: pointer; | ||
| + | text-decoration: underline; | ||
| + | font-weight: normal; | ||
| + | } | ||
| + | span[class^="mw-customtoggle-"]:hover{ | ||
| + | color: #0b0080; | ||
| + | } | ||
| + | |||
| + | /* Sidebar link focus/active states for keyboard users */ | ||
| + | #mw-panel .portal .body li a:active, | ||
| + | #mw-panel .portal .body li a:focus{ | ||
| + | outline: 2px solid rgba(0,0,0,.18); | ||
| + | outline-offset: 2px; | ||
| + | border-radius: 4px; | ||
| + | } | ||
| + | |||
| + | /* ========================= | ||
| + | 8) RESPONSIVE TWEAKS | ||
| + | ========================= */ | ||
| + | @media (max-width: 1200px){ | ||
| + | :root { --hf-sidebar-w: 11.5em; } | ||
| + | #content, #mw-head, #mw-head-base{ margin-left: var(--hf-sidebar-w); } | ||
| + | } | ||
| + | @media (max-width: 980px){ | ||
| + | :root { --hf-sidebar-w: 10.5em; } | ||
| + | #content, #mw-head, #mw-head-base{ margin-left: var(--hf-sidebar-w); } | ||
| + | } | ||
| + | |||
| + | /* ===== End of Vector overrides ===== */ | ||
Revision as of 13:33, 25 September 2025
/************************************************************
* Holdfast Wiki – Vector skin overrides (Neutral / Tan)
* Single source of truth for colors, spacing, and layout.
************************************************************/
/* =========================
0) THEME VARIABLES
========================= */
:root{
/* Layout */
--hf-sidebar-w: 13em; /* sidebar width */
--hf-logo-h: 236px; /* Vector logo background height */
/* Page & cards */
--hf-page-bg: #eae1cc; /* parchment */
--hf-card-bg: #fffdf6; /* content card */
--hf-card-border: #d6ceb9;
--hf-shadow: 0 1px 2px rgba(0,0,0,.06);
/* Sidebar */
--hf-side-bg: #c5b08a; /* tan */
--hf-side-fg: #2b2b2b; /* default text in sidebar */
--hf-side-link: #1b1b1b; /* link text in sidebar */
--hf-side-link-hover: #000; /* link hover text in sidebar */
/* Text & links */
--hf-fg: #1e1e1e;
--hf-link: #1e4ed8;
--hf-link-hover: #153ea8;
--hf-link-visited: #6b21a8;
/* Headings */
--hf-h2-fg: #1c1c1c;
--hf-h2-underline: #d8cfb8;
/* Accents (borders that match sidebar tone) */
--hf-tan-border: #b3a07c;
}
/* =========================
1) GLOBAL LAYOUT
========================= */
body{
background: var(--hf-page-bg);
color: var(--hf-fg);
}
.vector-body .mw-content-container{
max-width: 1120px;
margin-inline: auto;
padding-inline: 1rem;
}
/* Main content as a card */
#content{
background: var(--hf-card-bg);
border: 1px solid var(--hf-card-border);
border-radius: 10px;
padding: 1.2rem 1.4rem;
margin-left: var(--hf-sidebar-w); /* clear the fixed sidebar */
box-shadow: var(--hf-shadow);
position: relative;
z-index: 2;
}
/* =========================
2) SIDEBAR (FULL-HEIGHT TAN)
========================= */
#mw-panel{
position: fixed;
top: 0; left: 0; bottom: 0;
width: var(--hf-sidebar-w);
background: var(--hf-side-bg);
color: var(--hf-side-fg);
border-right: 1px solid rgba(0,0,0,.15);
padding-top: calc(var(--hf-logo-h) + .75rem); /* room for logo */
z-index: 1;
}
/* Sidebar logo block (Vector uses background-image on the <a>) */
#p-logo{
background: var(--hf-side-bg);
padding: .75rem .6rem 0;
}
#p-logo a{
display: block;
height: var(--hf-logo-h);
background-size: contain;
background-repeat: no-repeat;
background-position: left center;
text-indent: -9999px; /* hide "Main Page" text */
overflow: hidden;
}
/* Sidebar links & headings */
#mw-panel .portal .body li a{
color: var(--hf-side-link);
display: block;
padding: .28em .5em;
border-radius: 4px;
text-decoration: none;
}
#mw-panel .portal .body li a:hover{
background: rgba(0,0,0,.06);
color: var(--hf-side-link-hover);
}
#mw-panel .portal .portal-heading{
color: #1b1b1b;
font-weight: 700;
margin: .4rem .45rem .25rem;
}
/* =========================
3) TOP HEADER & TABS
========================= */
#mw-head-base,
#mw-head{
background: #cbb78f; /* subtle solid tan */
border-bottom: 1px solid #b8a681; /* thin divider */
margin-left: var(--hf-sidebar-w); /* align with fixed sidebar */
}
.vector-menu-tabs a{
color: #1b1b1b;
}
.vector-menu-tabs a:hover{
background: rgba(0,0,0,.06);
}
.vector-menu-tabs .selected a{
background: rgba(255,255,255,.25);
border-color: rgba(0,0,0,.15);
}
/* =========================
4) HEADINGS & SECTION BARS
========================= */
/* Clean H2/H3 underlined headings (no colored bars) */
.mw-parser-output h2{
background: transparent !important;
color: var(--hf-h2-fg);
font-weight: 700; /* slightly reduced from 800 for balance */
letter-spacing: .2px;
margin: 1.1rem 0 .6rem;
padding: .1em 0;
border-bottom: 2px solid var(--hf-h2-underline);
border-radius: 0;
}
.mw-parser-output h3{
border-bottom: 1px solid var(--hf-h2-underline);
padding-bottom: .15em;
margin-top: .9rem;
}
/* Template section bars (match sidebar tan) */
.hf-section,
#mf-content{
background: var(--hf-side-bg) !important;
color: var(--hf-side-link-hover) !important;
font-weight: 700;
font-variant: small-caps;
padding: .42em .7em !important;
margin: .9rem 0 .6rem !important;
border: 1px solid var(--hf-tan-border) !important;
border-radius: 4px !important;
box-shadow: none !important;
}
/* Last-resort cleanup for old inline greens */
.mw-parser-output [style*="#3c553c"]{
background: transparent !important;
color: inherit !important;
border-color: var(--hf-h2-underline) !important;
}
/* =========================
5) HERO / HEADERTEMPLATE
========================= */
.hf-hero{ margin-top: .7em; margin-bottom: .6rem; }
.hf-hero-table{
width: 100%;
border: 1px solid var(--hf-card-border);
border-radius: 12px;
background: var(--hf-card-bg);
color: var(--hf-fg);
box-shadow: var(--hf-shadow);
}
.hf-hero-left,
.hf-hero-right{
padding: .7em .9em;
}
.hf-hero-title{
font-size: 195%;
font-weight: 800;
margin: 0;
}
/* =========================
6) LINKS, LISTS, TABLES, CODE
========================= */
/* Links */
.mw-parser-output a{ color: var(--hf-link); }
.mw-parser-output a:hover{ color: var(--hf-link-hover); text-decoration: underline; }
.mw-parser-output a:visited{ color: var(--hf-link-visited); }
/* Lists breathe a bit more on parchment */
.mw-parser-output ul{ margin-left: 1.25em; }
.mw-parser-output li{ line-height: 1.45; }
/* Tables tuned for light theme */
.wikitable{
background: #fffefa;
border-color: var(--hf-card-border);
border-radius: 10px;
overflow: hidden;
}
.wikitable > * > tr > th{
background: #f4eedb;
border-bottom-color: var(--hf-card-border);
font-weight: 700;
}
.wikitable tr:nth-child(even) td{ background: #fff9eb; }
/* Code blocks (dark for readability) */
pre,
.syntaxhighlight{
background: #232323 !important;
color: #e7e7e7 !important;
border: 1px solid #1a1a1a !important;
border-radius: 10px;
padding: .8em 1em !important;
}
/* Right-aligned images/cards shouldn't kiss tan bars */
.thumb.tright,
.mw-halign-right .thumb,
.floatright{
margin-left: .75rem;
}
/* =========================
7) INTERACTIONS
========================= */
/* Custom [Show]/[Hide] toggles styled like links */
span[class^="mw-customtoggle-"]{
color: #0645ad;
cursor: pointer;
text-decoration: underline;
font-weight: normal;
}
span[class^="mw-customtoggle-"]:hover{
color: #0b0080;
}
/* Sidebar link focus/active states for keyboard users */
#mw-panel .portal .body li a:active,
#mw-panel .portal .body li a:focus{
outline: 2px solid rgba(0,0,0,.18);
outline-offset: 2px;
border-radius: 4px;
}
/* =========================
8) RESPONSIVE TWEAKS
========================= */
@media (max-width: 1200px){
:root { --hf-sidebar-w: 11.5em; }
#content, #mw-head, #mw-head-base{ margin-left: var(--hf-sidebar-w); }
}
@media (max-width: 980px){
:root { --hf-sidebar-w: 10.5em; }
#content, #mw-head, #mw-head-base{ margin-left: var(--hf-sidebar-w); }
}
/* ===== End of Vector overrides ===== */