MediaWiki:Common.css: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary Tag: Reverted |
||
| Line 1: | Line 1: | ||
/* * MANA BREAK - OFFICIAL WIKI SKIN | |||
* Theme: Modern Adventure (Teal & Gold) | |||
* Version: 2.0.0 | |||
*/ | |||
/* | /* 1. IMPORTS | ||
========================================================================== */ | |||
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@600;800&family=Montserrat:wght@400;500;600&display=swap'); | |||
/* Consolidated Wiki Modules */ | |||
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Colors.css&action=raw&ctype=text/css"); | @import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Colors.css&action=raw&ctype=text/css"); | ||
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Infobox.css&action=raw&ctype=text/css"); | @import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Infobox.css&action=raw&ctype=text/css"); | ||
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Tables.css&action=raw&ctype=text/css"); | @import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Tables.css&action=raw&ctype=text/css"); | ||
/* ... other imports should be combined into a single ResourceLoader module for performance ... */ | |||
. | /* 2. VARIABLES & COLOR SYSTEM | ||
========================================================================== */ | |||
:root { | |||
/* Primary Teal Palette (#1a6a7a) */ | |||
--primary-100: #e8f0f2; | |||
--primary-200: #b9d1d6; | |||
--primary-300: #8ab2ba; | |||
--primary-400: #5b939e; | |||
--primary-500: #1a6a7a; /* Base */ | |||
--primary-600: #155562; | |||
--primary-700: #10404a; | |||
--primary-800: #0a2a31; | |||
--primary-900: #051519; | |||
/* Accent Gold Palette (#eab759) */ | |||
--gold-soft: #fdf6e9; | |||
--gold-base: #eab759; | |||
--gold-dark: #c9932e; | |||
/* Status Colors (WCAG AA Compliant) */ | |||
--status-success: #2d8a57; | |||
--status-error: #c53030; | |||
--status-warning: #b7791f; | |||
--status-info: #2b6cb0; | |||
/* | /* Light Theme Base */ | ||
--bg-page: #f8fafc; | |||
--bg-content: #ffffff; | |||
--bg-secondary: #f1f5f9; | |||
--text-main: #1a202c; | |||
--text-muted: #4a5568; | |||
--border-color: #e2e8f0; | |||
--shadow-sm: 0 1px 2px rgba(0,0,0,0.05); | |||
--shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1); | |||
--radius-md: 8px; | |||
--radius-lg: 12px; | |||
} | } | ||
/* Dark Theme Variables */ | |||
.skin-vector-dark { | |||
--bg-page: #0f172a; | |||
--bg-content: #1e293b; | |||
--bg-secondary: #334155; | |||
--text-main: #f1f5f9; | |||
--text-muted: #94a3b8; | |||
--border-color: #475569; | |||
--primary-100: #0f2d33; | |||
--primary-500: #5eead4; | |||
--gold-soft: #2d261a; | |||
} | } | ||
. | /* 3. BASE ELEMENTS | ||
========================================================================== */ | |||
body { | |||
font-family: 'Cinzel', system-ui, -apple-system, sans-serif; | |||
background-color: var(--bg-page) !important; | |||
color: var(--text-main); | |||
line-height: 1.6; | |||
} | } | ||
h1, h2, h3, h4 { | |||
font-family: 'Montserrat', sans-serif; | |||
color: var(--primary-500); | |||
font-weight: 600; | |||
} | } | ||
a { | |||
color: var(--primary-500); | |||
text-decoration: none; | |||
transition: color 0.2s ease; | |||
} | } | ||
a:hover { | |||
color: var(--primary-700); | |||
text-decoration: underline; | |||
} | } | ||
/* Focus States */ | |||
a:focus-visible, button:focus-visible { | |||
outline: 3px solid var(--primary-300); | |||
outline-offset: 2px; | |||
border-radius: 4px; | |||
} | } | ||
. | /* 4. WIKI COMPONENTS | ||
========================================================================== */ | |||
. | /* Modernized Wikitable */ | ||
.wikitable { | |||
width: 100% !important; | |||
margin: 1.5rem 0; | |||
border-collapse: separate; | |||
border-spacing: 0; | |||
border: 1px solid var(--border-color); | |||
border-radius: var(--radius-md); | |||
overflow: hidden; /* Clips corners for radius */ | |||
background: var(--bg-content); | |||
} | } | ||
.wikitable th { | |||
background-color: var(--primary-500) !important; | |||
color: #ffffff !important; | |||
padding: 12px 15px !important; | |||
font-weight: 600; | |||
text-align: left; | |||
} | } | ||
.wikitable td { | |||
. | padding: 10px 15px; | ||
border-bottom: 1px solid var(--border-color); | |||
} | } | ||
.wikitable tr:last-child td { border-bottom: none; } | |||
. | |||
} | |||
. | .wikitable tr:nth-child(even) { background-color: var(--bg-page); } | ||
} | |||
.wikitable tr:hover { background-color: var(--primary-100); } | |||
. | |||
} | |||
. | /* Responsive Table Wrapper */ | ||
@media (max-width: 768px) { | |||
.mw-parser-output { overflow-x: auto; } | |||
.wikitable { min-width: 600px; } | |||
} | } | ||
/* | /* Modern Navbox (Chip Style) */ | ||
.navbox { | |||
background: var(--bg-content) !important; | |||
border: 1px solid var(--primary-500) !important; | |||
border-radius: var(--radius-md); | |||
padding: 5px; | |||
} | } | ||
.navbox-title { | |||
background: var(--primary-500) !important; | |||
color: white !important; | |||
border-radius: 6px 6px 0 0; | |||
padding: 8px !important; | |||
} | } | ||
. | .navbox-group { | ||
background: var(--primary-100) !important; | |||
color: var(--primary-700) !important; | |||
font-weight: 600 !important; | |||
width: 15%; | |||
} | } | ||
. | .navbox-list ul { | ||
display: flex; | |||
flex-wrap: wrap; | |||
gap: 8px; | |||
list-style: none !important; | |||
margin: 0 !important; | |||
padding: 10px !important; | |||
} | } | ||
.navbox-list li { | |||
background: var(--bg-secondary); | |||
padding: 4px 12px; | |||
border-radius: 20px; | |||
font-size: 0.9em; | |||
border: 1px solid var(--border-color); | |||
} | } | ||
/* Table of Contents */ | |||
/* | |||
.toc { | .toc { | ||
background: var(--bg-content); | |||
border: 1px solid var(--border-color); | |||
border-radius: var(--radius-md); | |||
padding: 15px !important; | |||
box-shadow: var(--shadow-sm); | |||
} | } | ||
. | |||
.toc h2 { | |||
font-size: 1.2rem; | |||
margin-bottom: 10px; | |||
} | } | ||
. | |||
/* 5. INFOBOXES & PORTABLE INFOBOXES | |||
========================================================================== */ | |||
.portable-infobox, .infobox { | |||
float: right; | |||
clear: right; | |||
width: 300px; | |||
margin: 0 0 1rem 1rem; | |||
background: var(--bg-content); | |||
border: 1px solid var(--border-color); | |||
border-radius: var(--radius-lg); | |||
box-shadow: var(--shadow-md); | |||
overflow: hidden; | |||
} | } | ||
. | .pi-title { | ||
background: var(--primary-500); | |||
color: #fff; | |||
padding: 15px; | |||
text-align: center; | |||
font-family: 'Fredoka', sans-serif; | |||
font-size: 1.4rem; | |||
} | } | ||
.pi-item { | |||
. | display: flex; | ||
justify-content: space-between; | |||
padding: 8px 15px; | |||
border-bottom: 1px solid var(--border-color); | |||
} | } | ||
.pi-data-label { font-weight: 600; color: var(--text-muted); } | |||
. | |||
@media (max-width: 768px) { | |||
.portable-infobox, .infobox { | |||
float: none; | |||
width: 100%; | |||
margin: 1rem 0; | |||
} | |||
} | } | ||
. | /* 6. MAIN PAGE LAYOUT (#mp-container) | ||
========================================================================== */ | |||
.mp-grid { | |||
display: grid; | |||
gap: 20px; | |||
margin: 20px 0; | |||
} | } | ||
. | .game-intro-card { | ||
background: var(--bg-content); | |||
border: 1px solid var(--border-color); | |||
border-radius: var(--radius-lg); | |||
overflow: hidden; | |||
transition: transform 0.2s ease, box-shadow 0.2s ease; | |||
} | } | ||
.game-intro-card:hover { | |||
transform: translateY(-4px); | |||
box-shadow: var(--shadow-md); | |||
border-color: var(--primary-300); | |||
} | } | ||
. | .game-header { | ||
background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-700) 100%); | |||
color: white; | |||
padding: 15px 20px; | |||
} | } | ||
. | .mana-line { | ||
height: 3px; | |||
width: 50px; | |||
background: var(--gold-base); | |||
margin-top: 8px; | |||
border-radius: 2px; | |||
} | } | ||
. | /* Social Links Layout */ | ||
.social-container { | |||
display: flex; | |||
flex-wrap: wrap; | |||
justify-content: center; | |||
gap: 15px; | |||
margin-top: -30px; /* Overlap effect */ | |||
position: relative; | |||
z-index: 10; | |||
} | } | ||
.social-pill { | |||
. | background: var(--bg-content); | ||
padding: 10px 20px; | |||
border-radius: 50px; | |||
box-shadow: var(--shadow-md); | |||
display: flex; | |||
align-items: center; | |||
gap: 10px; | |||
border: 1px solid var(--border-color); | |||
} | } | ||
/* | /* 7. UTILITIES & ANIMATIONS | ||
========================================================================== */ | |||
.text-primary { color: var(--primary-500) !important; } | |||
.bg-primary { background-color: var(--primary-500) !important; color: white; } | |||
} | .text-gold { color: var(--gold-base) !important; } | ||
.bg-gold-soft { background-color: var(--gold-soft) !important; } | |||
} | |||
} | |||
} | |||
.shadow-lg { box-shadow: var(--shadow-md); } | |||
.rounded-full { border-radius: 9999px; } | |||
/* Animations */ | |||
@media (prefers-reduced-motion: no-preference) { | |||
.animate-fade-in { | |||
animation: fadeIn 0.5s ease-out forwards; | |||
} | |||
} | } | ||
@keyframes fadeIn { | |||
from { opacity: 0; transform: translateY(10px); } | |||
to { opacity: 1; transform: translateY(0); } | |||
} | } | ||
. | /* Loading Skeletons */ | ||
.skeleton { | |||
background: linear-gradient(90deg, var(--bg-secondary) 25%, var(--border-color) 50%, var(--bg-secondary) 75%); | |||
background-size: 200% 100%; | |||
animation: skeleton-loading 1.5s infinite; | |||
} | } | ||
@keyframes skeleton-loading { | |||
0% { background-position: 200% 0; } | |||
100% { background-position: -200% 0; } | |||
} | } | ||
/* | /* 8. MESSAGE BOXES (Hatnotes) | ||
. | ========================================================================== */ | ||
.messagebox { | |||
margin: 1rem 0; | |||
padding: 15px 20px; | |||
border-left: 5px solid; | |||
border-radius: 4px; | |||
background: var(--bg-secondary); | |||
} | } | ||
/* | .messagebox-success { border-color: var(--status-success); color: var(--status-success); } | ||
.messagebox-error { border-color: var(--status-error); color: var(--status-error); } | |||
.messagebox-warning { border-color: var(--status-warning); background: var(--gold-soft); } | |||
/* 9. PRINT STYLES | |||
========================================================================== */ | |||
@media print { | |||
#mw-panel, #p-personal, #p-search, #footer, .social-container { | |||
display: none !important; | |||
} | |||
.mw-body { | |||
margin: 0 !important; | |||
border: none !important; | |||
} | |||
a::after { | |||
content: " (" attr(href) ")"; | |||
font-size: 0.8em; | |||
} | |||
} | } | ||
. | /* 10. VECTOR OVERRIDES (Personal Tools, Search) | ||
========================================================================== */ | |||
#p-personal { | |||
top: 5px !important; | |||
right: 15px !important; | |||
} | } | ||
#p-personal li a { | |||
# | color: var(--primary-500) !important; | ||
font-weight: 500; | |||
} | } | ||
.vector-search-box-input { | |||
. | border: 1px solid var(--border-color) !important; | ||
border-radius: 20px !important; | |||
background-color: var(--bg-secondary) !important; | |||
} | } | ||
. | |||
/* 11. CSS-ONLY THEME TOGGLE CONCEPT | |||
(Note: Full persistence requires JS, but this styles the UI) */ | |||
#pt-theme a { | |||
background: var(--primary-500) !important; | |||
color: white !important; | |||
# | padding: 5px 15px !important; | ||
border-radius: 20px !important; | |||
margin-top: 5px; | |||
} | } | ||
Revision as of 14:59, 29 March 2026
/* * MANA BREAK - OFFICIAL WIKI SKIN
* Theme: Modern Adventure (Teal & Gold)
* Version: 2.0.0
*/
/* 1. IMPORTS
========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@600;800&family=Montserrat:wght@400;500;600&display=swap');
/* Consolidated Wiki Modules */
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Colors.css&action=raw&ctype=text/css");
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Infobox.css&action=raw&ctype=text/css");
@import url("https://mbwiki.stairwaygames.work/w/index.php?title=MediaWiki:Tables.css&action=raw&ctype=text/css");
/* ... other imports should be combined into a single ResourceLoader module for performance ... */
/* 2. VARIABLES & COLOR SYSTEM
========================================================================== */
:root {
/* Primary Teal Palette (#1a6a7a) */
--primary-100: #e8f0f2;
--primary-200: #b9d1d6;
--primary-300: #8ab2ba;
--primary-400: #5b939e;
--primary-500: #1a6a7a; /* Base */
--primary-600: #155562;
--primary-700: #10404a;
--primary-800: #0a2a31;
--primary-900: #051519;
/* Accent Gold Palette (#eab759) */
--gold-soft: #fdf6e9;
--gold-base: #eab759;
--gold-dark: #c9932e;
/* Status Colors (WCAG AA Compliant) */
--status-success: #2d8a57;
--status-error: #c53030;
--status-warning: #b7791f;
--status-info: #2b6cb0;
/* Light Theme Base */
--bg-page: #f8fafc;
--bg-content: #ffffff;
--bg-secondary: #f1f5f9;
--text-main: #1a202c;
--text-muted: #4a5568;
--border-color: #e2e8f0;
--shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
--shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1);
--radius-md: 8px;
--radius-lg: 12px;
}
/* Dark Theme Variables */
.skin-vector-dark {
--bg-page: #0f172a;
--bg-content: #1e293b;
--bg-secondary: #334155;
--text-main: #f1f5f9;
--text-muted: #94a3b8;
--border-color: #475569;
--primary-100: #0f2d33;
--primary-500: #5eead4;
--gold-soft: #2d261a;
}
/* 3. BASE ELEMENTS
========================================================================== */
body {
font-family: 'Cinzel', system-ui, -apple-system, sans-serif;
background-color: var(--bg-page) !important;
color: var(--text-main);
line-height: 1.6;
}
h1, h2, h3, h4 {
font-family: 'Montserrat', sans-serif;
color: var(--primary-500);
font-weight: 600;
}
a {
color: var(--primary-500);
text-decoration: none;
transition: color 0.2s ease;
}
a:hover {
color: var(--primary-700);
text-decoration: underline;
}
/* Focus States */
a:focus-visible, button:focus-visible {
outline: 3px solid var(--primary-300);
outline-offset: 2px;
border-radius: 4px;
}
/* 4. WIKI COMPONENTS
========================================================================== */
/* Modernized Wikitable */
.wikitable {
width: 100% !important;
margin: 1.5rem 0;
border-collapse: separate;
border-spacing: 0;
border: 1px solid var(--border-color);
border-radius: var(--radius-md);
overflow: hidden; /* Clips corners for radius */
background: var(--bg-content);
}
.wikitable th {
background-color: var(--primary-500) !important;
color: #ffffff !important;
padding: 12px 15px !important;
font-weight: 600;
text-align: left;
}
.wikitable td {
padding: 10px 15px;
border-bottom: 1px solid var(--border-color);
}
.wikitable tr:last-child td { border-bottom: none; }
.wikitable tr:nth-child(even) { background-color: var(--bg-page); }
.wikitable tr:hover { background-color: var(--primary-100); }
/* Responsive Table Wrapper */
@media (max-width: 768px) {
.mw-parser-output { overflow-x: auto; }
.wikitable { min-width: 600px; }
}
/* Modern Navbox (Chip Style) */
.navbox {
background: var(--bg-content) !important;
border: 1px solid var(--primary-500) !important;
border-radius: var(--radius-md);
padding: 5px;
}
.navbox-title {
background: var(--primary-500) !important;
color: white !important;
border-radius: 6px 6px 0 0;
padding: 8px !important;
}
.navbox-group {
background: var(--primary-100) !important;
color: var(--primary-700) !important;
font-weight: 600 !important;
width: 15%;
}
.navbox-list ul {
display: flex;
flex-wrap: wrap;
gap: 8px;
list-style: none !important;
margin: 0 !important;
padding: 10px !important;
}
.navbox-list li {
background: var(--bg-secondary);
padding: 4px 12px;
border-radius: 20px;
font-size: 0.9em;
border: 1px solid var(--border-color);
}
/* Table of Contents */
.toc {
background: var(--bg-content);
border: 1px solid var(--border-color);
border-radius: var(--radius-md);
padding: 15px !important;
box-shadow: var(--shadow-sm);
}
.toc h2 {
font-size: 1.2rem;
margin-bottom: 10px;
}
/* 5. INFOBOXES & PORTABLE INFOBOXES
========================================================================== */
.portable-infobox, .infobox {
float: right;
clear: right;
width: 300px;
margin: 0 0 1rem 1rem;
background: var(--bg-content);
border: 1px solid var(--border-color);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-md);
overflow: hidden;
}
.pi-title {
background: var(--primary-500);
color: #fff;
padding: 15px;
text-align: center;
font-family: 'Fredoka', sans-serif;
font-size: 1.4rem;
}
.pi-item {
display: flex;
justify-content: space-between;
padding: 8px 15px;
border-bottom: 1px solid var(--border-color);
}
.pi-data-label { font-weight: 600; color: var(--text-muted); }
@media (max-width: 768px) {
.portable-infobox, .infobox {
float: none;
width: 100%;
margin: 1rem 0;
}
}
/* 6. MAIN PAGE LAYOUT (#mp-container)
========================================================================== */
.mp-grid {
display: grid;
gap: 20px;
margin: 20px 0;
}
.game-intro-card {
background: var(--bg-content);
border: 1px solid var(--border-color);
border-radius: var(--radius-lg);
overflow: hidden;
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.game-intro-card:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-md);
border-color: var(--primary-300);
}
.game-header {
background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-700) 100%);
color: white;
padding: 15px 20px;
}
.mana-line {
height: 3px;
width: 50px;
background: var(--gold-base);
margin-top: 8px;
border-radius: 2px;
}
/* Social Links Layout */
.social-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 15px;
margin-top: -30px; /* Overlap effect */
position: relative;
z-index: 10;
}
.social-pill {
background: var(--bg-content);
padding: 10px 20px;
border-radius: 50px;
box-shadow: var(--shadow-md);
display: flex;
align-items: center;
gap: 10px;
border: 1px solid var(--border-color);
}
/* 7. UTILITIES & ANIMATIONS
========================================================================== */
.text-primary { color: var(--primary-500) !important; }
.bg-primary { background-color: var(--primary-500) !important; color: white; }
.text-gold { color: var(--gold-base) !important; }
.bg-gold-soft { background-color: var(--gold-soft) !important; }
.shadow-lg { box-shadow: var(--shadow-md); }
.rounded-full { border-radius: 9999px; }
/* Animations */
@media (prefers-reduced-motion: no-preference) {
.animate-fade-in {
animation: fadeIn 0.5s ease-out forwards;
}
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Loading Skeletons */
.skeleton {
background: linear-gradient(90deg, var(--bg-secondary) 25%, var(--border-color) 50%, var(--bg-secondary) 75%);
background-size: 200% 100%;
animation: skeleton-loading 1.5s infinite;
}
@keyframes skeleton-loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
/* 8. MESSAGE BOXES (Hatnotes)
========================================================================== */
.messagebox {
margin: 1rem 0;
padding: 15px 20px;
border-left: 5px solid;
border-radius: 4px;
background: var(--bg-secondary);
}
.messagebox-success { border-color: var(--status-success); color: var(--status-success); }
.messagebox-error { border-color: var(--status-error); color: var(--status-error); }
.messagebox-warning { border-color: var(--status-warning); background: var(--gold-soft); }
/* 9. PRINT STYLES
========================================================================== */
@media print {
#mw-panel, #p-personal, #p-search, #footer, .social-container {
display: none !important;
}
.mw-body {
margin: 0 !important;
border: none !important;
}
a::after {
content: " (" attr(href) ")";
font-size: 0.8em;
}
}
/* 10. VECTOR OVERRIDES (Personal Tools, Search)
========================================================================== */
#p-personal {
top: 5px !important;
right: 15px !important;
}
#p-personal li a {
color: var(--primary-500) !important;
font-weight: 500;
}
.vector-search-box-input {
border: 1px solid var(--border-color) !important;
border-radius: 20px !important;
background-color: var(--bg-secondary) !important;
}
/* 11. CSS-ONLY THEME TOGGLE CONCEPT
(Note: Full persistence requires JS, but this styles the UI) */
#pt-theme a {
background: var(--primary-500) !important;
color: white !important;
padding: 5px 15px !important;
border-radius: 20px !important;
margin-top: 5px;
}