User:Udays108/common.css
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* ============================================================
MIT BioMicro Center — MediaWiki Custom Styles
Skin: Vector-2022
Scope: User:USERNAME/common.css (personal preview only)
Promote to MediaWiki:Common.css for site-wide deployment
============================================================ */
/* ── 1. Design Tokens ───────────────────────────────────────── */
:root {
--bmc-crimson: #a31f34;
--bmc-crimson-dark: #7a1626;
--bmc-crimson-light: #fde8ec;
--bmc-text: #1a1a1a;
--bmc-text-muted: #666;
--bmc-bg: #fff;
--bmc-bg-card: #f9f9f9;
--bmc-border: #e8e8e8;
--bmc-border-hover: #c8a0a8;
--bmc-shadow-card: 0 2px 10px rgba(163, 31, 52, 0.07);
--bmc-header-height: 68px;
--bmc-max-width: 1140px;
--bmc-font: 'Helvetica Neue', Arial, sans-serif;
}
/* ── 2. Base Typography ─────────────────────────────────────── */
body {
font-family: var(--bmc-font) !important;
color: var(--bmc-text);
line-height: 1.6;
}
.mw-body-content,
.mw-parser-output {
font-family: var(--bmc-font);
font-size: 0.9rem;
color: #333;
line-height: 1.6;
}
/* ── 3. Link Colors ─────────────────────────────────────────── */
/* Scope to body content — avoids clobbering UI chrome links */
.mw-body a,
.mw-body-content a,
.mw-parser-output a {
color: var(--bmc-crimson);
text-decoration: none;
}
.mw-body a:visited,
.mw-body-content a:visited {
color: var(--bmc-crimson);
}
.mw-body a:hover,
.mw-body-content a:hover,
.mw-parser-output a:hover {
color: var(--bmc-crimson-dark);
text-decoration: underline;
}
/* External link icon inherits color */
.mw-parser-output a.external {
color: var(--bmc-crimson);
}
/* ── 4. Header ──────────────────────────────────────────────── */
.vector-header {
background: var(--bmc-bg) !important;
border-bottom: 1px solid #e0e0e0 !important;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07) !important;
}
/* Remove Vector-2022's default colored top border if present */
.vector-header::before {
display: none;
}
/* Logo area */
.mw-logo {
display: flex;
align-items: center;
gap: 12px;
}
.mw-logo-wordmark {
font-family: var(--bmc-font) !important;
color: var(--bmc-text) !important;
}
.mw-logo-tagline {
font-size: 0.72rem;
color: var(--bmc-text-muted);
}
/* ── 5. Navigation ──────────────────────────────────────────── */
/* Vector-2022 left sidebar navigation */
.vector-main-menu-action > a,
.vector-main-menu .mw-list-item a,
#p-navigation .mw-list-item a {
font-family: var(--bmc-font);
font-size: 0.85rem;
font-weight: 500;
color: #333;
border-radius: 4px;
padding: 6px 10px;
transition: background 0.15s, color 0.15s;
text-decoration: none;
}
.vector-main-menu .mw-list-item a:hover,
#p-navigation .mw-list-item a:hover {
background: #f5f5f5;
color: var(--bmc-crimson);
text-decoration: none;
}
/* Active nav item (set by JS) */
.mw-list-item.bmc-active > a,
.mw-list-item.bmc-active > a:visited {
background: #f5f5f5;
color: var(--bmc-crimson);
font-weight: 600;
}
/* Portal section headings in sidebar */
.vector-main-menu .mw-portlet-nav-logo,
.vector-menu-heading {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: #999;
}
/* ── 6. Page Title (h1) ─────────────────────────────────────── */
h1.firstHeading,
.mw-first-heading {
font-family: var(--bmc-font) !important;
font-size: 2rem !important;
font-weight: 700 !important;
color: var(--bmc-text) !important;
letter-spacing: -0.5px;
border-bottom: 2px solid var(--bmc-crimson) !important;
padding-bottom: 12px !important;
margin-bottom: 24px !important;
}
/* ── 7. Content Headings ────────────────────────────────────── */
.mw-parser-output h2,
.mw-body-content h2 {
font-size: 1.35rem;
font-weight: 700;
color: var(--bmc-text);
padding-bottom: 10px;
border-bottom: 2px solid var(--bmc-crimson) !important;
margin: 48px 0 18px;
letter-spacing: -0.2px;
scroll-margin-top: 88px;
}
.mw-parser-output h2:first-child,
.mw-body-content h2:first-child {
margin-top: 0;
}
/* Remove Vector-2022's default h2 styling */
.mw-parser-output h2 .mw-headline,
.mw-body-content h2 .mw-headline {
border: none;
}
.mw-parser-output h3,
.mw-body-content h3 {
font-size: 1rem;
font-weight: 600;
color: var(--bmc-text);
margin: 28px 0 10px;
scroll-margin-top: 88px;
}
.mw-parser-output h4,
.mw-body-content h4 {
font-size: 0.88rem;
font-weight: 700;
color: #444;
margin: 20px 0 8px;
}
.mw-parser-output p {
font-size: 0.9rem;
color: #333;
margin-bottom: 14px;
}
/* ── 8. Table of Contents (Vector-2022) ─────────────────────── */
/* Vector-2022 renders TOC in .vector-toc / #mw-panel-toc */
.vector-toc,
#mw-panel-toc .vector-toc {
background: var(--bmc-bg-card) !important;
border: 1px solid var(--bmc-border) !important;
border-radius: 8px !important;
padding: 20px !important;
box-shadow: none !important;
}
/* TOC title: "Contents" / "On this page" */
.vector-toc .vector-toc-title,
.vector-toc-title-bar {
border-bottom: 1px solid var(--bmc-border) !important;
padding-bottom: 10px !important;
margin-bottom: 10px !important;
}
.vector-toc .vector-toc-title-text {
font-size: 0.78rem !important;
font-weight: 700 !important;
text-transform: uppercase !important;
letter-spacing: 0.08em !important;
color: #999 !important;
}
/* TOC toggle button */
.vector-toc-toggle {
display: none; /* Remove toggle button for cleaner look */
}
/* TOC links */
.vector-toc .vector-toc-link {
font-size: 0.82rem;
color: #444;
padding: 4px 8px;
display: block;
border-radius: 4px;
transition: background 0.12s, color 0.12s;
text-decoration: none;
}
.vector-toc .vector-toc-link:hover {
background: #f0e8ea;
color: var(--bmc-crimson);
text-decoration: none;
}
/* Active section highlight (Vector-2022 applies this on scroll) */
.vector-toc-list-item-active > .vector-toc-link,
.vector-toc-list-item-active > .vector-toc-link:visited {
color: var(--bmc-crimson);
font-weight: 600;
background: #fdf5f6;
}
/* Sub-section indent */
.vector-toc .vector-toc-list .vector-toc-list > li > .vector-toc-link {
padding-left: 20px;
font-size: 0.78rem;
color: var(--bmc-text-muted);
}
/* ── 9. Tables (.wikitable) ─────────────────────────────────── */
.wikitable {
width: 100%;
border-collapse: collapse !important;
font-size: 0.83rem;
font-family: var(--bmc-font);
background: var(--bmc-bg);
border: 1px solid #e4e4e4 !important;
border-radius: 8px;
overflow: hidden;
margin-bottom: 26px;
}
/* Wrap table for horizontal scroll on mobile */
.wikitable-wrapper {
overflow-x: auto;
border-radius: 8px;
border: 1px solid #e4e4e4;
margin-bottom: 26px;
}
/* Dark header */
.wikitable > thead > tr > th,
.wikitable > tr > th {
background: #1a1a1a !important;
color: #fff !important;
padding: 11px 14px !important;
font-weight: 600;
font-size: 0.78rem;
text-align: left;
letter-spacing: 0.03em;
white-space: nowrap;
border: none !important;
}
/* Body cells */
.wikitable > tbody > tr > td,
.wikitable > tr > td {
padding: 10px 14px !important;
vertical-align: top;
border-bottom: 1px solid #f0f0f0 !important;
border-left: none !important;
border-right: none !important;
border-top: none !important;
}
.wikitable > tbody > tr:last-child > td {
border-bottom: none !important;
}
/* Hover row */
.wikitable > tbody > tr:hover > td {
background: #fafafa;
}
/* Section row (use class="wikitable-section-row" in wiki markup) */
.wikitable .section-row > td {
background: #f5f5f5 !important;
font-weight: 600;
font-size: 0.8rem;
color: #555;
padding: 7px 14px !important;
}
/* Price / number column alignment */
.wikitable .price,
.wikitable .col-right {
text-align: right;
font-variant-numeric: tabular-nums;
font-weight: 500;
white-space: nowrap;
}
/* ── 10. Note / Alert Boxes ─────────────────────────────────── */
/* Usage in wiki: <div class="bmc-note"> ... </div> */
.bmc-note {
background: #fdf6f0;
border-left: 3px solid #e07b39;
padding: 10px 14px;
border-radius: 0 6px 6px 0;
font-size: 0.82rem;
color: #555;
margin: 12px 0 18px;
font-family: var(--bmc-font);
}
.bmc-note strong { color: #c0622a; }
.bmc-note-info {
background: #f0f6ff;
border-left-color: #3b7dd8;
}
.bmc-note-warn {
background: #fff9e6;
border-left-color: #d4a017;
}
/* Map to existing MediaWiki notice boxes too */
.mw-message-box-notice {
border-left-color: #3b7dd8 !important;
border-radius: 0 6px 6px 0 !important;
}
/* ── 11. Card Components ────────────────────────────────────── */
/* Usage in wiki: <div class="bmc-card"> ... </div> */
.bmc-card {
background: var(--bmc-bg-card);
border: 1px solid var(--bmc-border);
border-radius: 8px;
padding: 20px 22px;
transition: border-color 0.15s, box-shadow 0.15s;
font-family: var(--bmc-font);
}
.bmc-card:hover {
border-color: var(--bmc-border-hover);
box-shadow: var(--bmc-shadow-card);
}
.bmc-card h4 {
font-size: 0.88rem;
font-weight: 700;
color: var(--bmc-crimson);
margin-bottom: 6px;
letter-spacing: -0.1px;
}
.bmc-card p {
font-size: 0.82rem;
color: #555;
margin: 0;
line-height: 1.5;
}
/* Grid containers */
.bmc-grid-2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 16px;
margin: 20px 0 28px;
}
.bmc-grid-3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
margin: 20px 0 28px;
}
.bmc-grid-4 {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 14px;
margin: 20px 0 28px;
}
/* ── 12. Badges / Pills ─────────────────────────────────────── */
/* Usage: <span class="bmc-badge bmc-badge-red">Label</span> */
.bmc-badge {
display: inline-block;
font-size: 0.68rem;
padding: 2px 7px;
border-radius: 10px;
font-weight: 600;
white-space: nowrap;
font-family: var(--bmc-font);
}
.bmc-badge-red {
background: var(--bmc-crimson-light);
color: var(--bmc-crimson);
}
.bmc-badge-blue {
background: #e8f4fd;
color: #1a6fa8;
}
.bmc-badge-green {
background: #e8f9ef;
color: #1a8042;
}
.bmc-badge-gray {
background: #f0f0f0;
color: #555;
}
/* ── 13. Step List ──────────────────────────────────────────── */
/* Usage: <div class="bmc-steps"><div class="bmc-step">...</div></div> */
.bmc-steps {
margin: 16px 0 24px;
}
.bmc-step {
display: flex;
gap: 16px;
padding: 14px 0;
border-bottom: 1px solid #f0f0f0;
align-items: flex-start;
}
.bmc-step:last-child { border-bottom: none; }
.bmc-step-num {
flex-shrink: 0;
width: 28px;
height: 28px;
background: var(--bmc-crimson);
color: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.78rem;
font-weight: 700;
}
.bmc-step-content { flex: 1; }
.bmc-step-content strong { font-size: 0.88rem; color: var(--bmc-text); }
.bmc-step-content p { font-size: 0.82rem; color: #555; margin: 4px 0 0; }
/* ── 14. Contact Block ──────────────────────────────────────── */
.bmc-contact-block {
background: var(--bmc-bg-card);
border: 1px solid var(--bmc-border);
border-radius: 8px;
padding: 22px 24px;
display: flex;
gap: 40px;
flex-wrap: wrap;
font-size: 0.85rem;
font-family: var(--bmc-font);
}
.bmc-contact-item { display: flex; flex-direction: column; gap: 3px; }
.bmc-contact-item .label {
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.07em;
color: #999;
}
.bmc-contact-item .value {
color: var(--bmc-text);
font-weight: 500;
}
.bmc-contact-item a { color: var(--bmc-crimson); }
/* ── 15. Tab Panel System ───────────────────────────────────── */
/* Used on pricing page. JS activates these. */
/* Usage: wrap sections in <div class="tab-panel" id="tab-NAME"> */
.tab-bar-wrap {
background: linear-gradient(135deg, var(--bmc-crimson) 0%, var(--bmc-crimson-dark) 100%);
border-bottom: 3px solid rgba(0, 0, 0, 0.15);
margin-bottom: 0;
}
.tab-bar {
max-width: var(--bmc-max-width);
margin: 0 auto;
padding: 0 24px;
display: flex;
gap: 4px;
overflow-x: auto;
scrollbar-width: none;
}
.tab-bar::-webkit-scrollbar { display: none; }
.tab-btn {
flex-shrink: 0;
padding: 13px 22px;
font-size: 0.87rem;
font-weight: 500;
color: rgba(255, 255, 255, 0.7);
background: transparent;
border: none;
border-bottom: 3px solid transparent;
margin-bottom: -3px;
cursor: pointer;
white-space: nowrap;
transition: color 0.15s, border-color 0.15s, background 0.15s;
border-radius: 4px 4px 0 0;
font-family: var(--bmc-font);
}
.tab-btn:hover {
color: #fff;
background: rgba(255, 255, 255, 0.08);
}
.tab-btn.active {
color: #fff;
font-weight: 600;
background: rgba(255, 255, 255, 0.12);
border-bottom-color: #fff;
}
.tab-panel { display: none; }
.tab-panel.active { display: block; }
/* ── 16. Footer ─────────────────────────────────────────────── */
.vector-footer,
#footer {
background: #1a1a1a !important;
color: #aaa !important;
padding: 40px 0 !important;
font-size: 0.82rem;
font-family: var(--bmc-font);
border-top: none !important;
}
.vector-footer a,
#footer a {
color: #aaa !important;
text-decoration: none;
}
.vector-footer a:hover,
#footer a:hover {
color: #fff !important;
text-decoration: none;
}
.vector-footer-container,
#footer-info,
#footer-places {
max-width: var(--bmc-max-width) !important;
margin: 0 auto !important;
padding: 0 24px !important;
}
/* Footer category headings */
.vector-footer h4,
.vector-footer .mw-portlet-lang > h3,
#footer h4 {
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: #fff !important;
margin-bottom: 12px;
}
/* Footer link lists */
.vector-footer ul { list-style: none; }
.vector-footer ul li { margin-bottom: 6px; }
/* ── 17. Responsive ─────────────────────────────────────────── */
@media screen and (max-width: 860px) {
.bmc-grid-2,
.bmc-grid-3,
.bmc-grid-4 {
grid-template-columns: 1fr;
}
h1.firstHeading { font-size: 1.6rem !important; }
}
@media screen and (max-width: 580px) {
h1.firstHeading { font-size: 1.4rem !important; }
.bmc-contact-block {
flex-direction: column;
gap: 16px;
}
.tab-btn {
padding: 10px 14px;
font-size: 0.8rem;
}
}