<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://bmcwiki.mit.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gibcus</id>
	<title>BioMicro Center - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://bmcwiki.mit.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gibcus"/>
	<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php/Special:Contributions/Gibcus"/>
	<updated>2026-05-29T16:07:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css&amp;diff=131534</id>
		<title>User:Gibcus/common.css</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css&amp;diff=131534"/>
		<updated>2026-05-13T18:14:51Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css%26action%3Dedit&amp;diff=131533</id>
		<title>User:Gibcus/common.css&amp;action=edit</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css%26action%3Dedit&amp;diff=131533"/>
		<updated>2026-05-13T18:14:14Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css%26action%3Dedit&amp;diff=131532</id>
		<title>User:Gibcus/common.css&amp;action=edit</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.css%26action%3Dedit&amp;diff=131532"/>
		<updated>2026-05-13T18:08:15Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Created page with &amp;quot;/* ============================================================    BioMicro Center Wiki — CSS-only modern UI    Paste into: User:USERNAME/common.css    Targets: MediaWiki Vector (legacy) skin    Mimics: about.html design without requiring JavaScript    ============================================================ */  /* ── Base &amp;amp; Reset ────────────────────────────────────────────...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================&lt;br /&gt;
   BioMicro Center Wiki — CSS-only modern UI&lt;br /&gt;
   Paste into: User:USERNAME/common.css&lt;br /&gt;
   Targets: MediaWiki Vector (legacy) skin&lt;br /&gt;
   Mimics: about.html design without requiring JavaScript&lt;br /&gt;
   ============================================================ */&lt;br /&gt;
&lt;br /&gt;
/* ── Base &amp;amp; Reset ───────────────────────────────────────────── */&lt;br /&gt;
*, *::before, *::after { box-sizing: border-box; }&lt;br /&gt;
&lt;br /&gt;
/* Universal sans-serif — covers every element MW might leave in a serif/system font */&lt;br /&gt;
body.bmc-active, body.bmc-active * { font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important; }&lt;br /&gt;
body.bmc-active code, body.bmc-active pre, body.bmc-active kbd,&lt;br /&gt;
body.bmc-active tt, body.bmc-active samp { font-family: &amp;quot;SFMono-Regular&amp;quot;, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, monospace !important; }&lt;br /&gt;
&lt;br /&gt;
body, html {&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  color: #1a1a1a !important;&lt;br /&gt;
  background: #f4f4f4 !important;&lt;br /&gt;
  line-height: 1.6 !important;&lt;br /&gt;
  font-size: 16px !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a { color: #750014 !important; text-decoration: none !important; }&lt;br /&gt;
a:hover { text-decoration: underline !important; color: #5c0010 !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Contact topbar (CSS pseudo-element, decorative) ─────────── */&lt;br /&gt;
/* Shows contact info as a red strip above the header */&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
  background: #750014 !important;&lt;br /&gt;
  height: 32px !important;&lt;br /&gt;
  position: fixed !important;&lt;br /&gt;
  top: 0 !important;&lt;br /&gt;
  left: 0 !important;&lt;br /&gt;
  right: 0 !important;&lt;br /&gt;
  z-index: 200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-page-base::after {&lt;br /&gt;
  content: &amp;quot;biomicro@mit.edu  ·  617-715-4533  ·  Building 68-322&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  text-align: right;&lt;br /&gt;
  color: rgba(255,255,255,0.9);&lt;br /&gt;
  font-size: 0.72rem;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif;&lt;br /&gt;
  padding: 7px 28px;&lt;br /&gt;
  letter-spacing: 0.02em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Header (#mw-head) ──────────────────────────────────────── */&lt;br /&gt;
#mw-head {&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
  border-bottom: 1px solid #e0e0e0 !important;&lt;br /&gt;
  box-shadow: 0 1px 4px rgba(0,0,0,0.07) !important;&lt;br /&gt;
  height: 60px !important;&lt;br /&gt;
  top: 32px !important; /* sit below the red topbar */&lt;br /&gt;
  position: fixed !important;&lt;br /&gt;
  left: 0 !important;&lt;br /&gt;
  right: 0 !important;&lt;br /&gt;
  z-index: 150 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
  height: 92px !important; /* 32px topbar + 60px header */&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page tabs (Read / Edit / History) */&lt;br /&gt;
#left-navigation {&lt;br /&gt;
  margin-left: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
#left-navigation li a,&lt;br /&gt;
#right-navigation li a {&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  font-size: 0.83rem !important;&lt;br /&gt;
  font-weight: 500 !important;&lt;br /&gt;
  color: #555 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  padding: 6px 12px !important;&lt;br /&gt;
  transition: background 0.15s, color 0.15s !important;&lt;br /&gt;
}&lt;br /&gt;
#left-navigation li.selected a,&lt;br /&gt;
#left-navigation li a:hover,&lt;br /&gt;
#right-navigation li a:hover {&lt;br /&gt;
  background: #f5f5f5 !important;&lt;br /&gt;
  color: #750014 !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Search box in header */&lt;br /&gt;
#p-search {&lt;br /&gt;
  margin-top: 14px !important;&lt;br /&gt;
}&lt;br /&gt;
#searchInput {&lt;br /&gt;
  border: 1px solid #e0e0e0 !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  padding: 5px 10px !important;&lt;br /&gt;
  font-size: 0.83rem !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  color: #333 !important;&lt;br /&gt;
  width: 180px !important;&lt;br /&gt;
  outline: none !important;&lt;br /&gt;
  transition: border-color 0.15s !important;&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
#searchInput:focus { border-color: #750014 !important; }&lt;br /&gt;
#searchButton, #mw-searchButton {&lt;br /&gt;
  background: #750014 !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-size: 0.83rem !important;&lt;br /&gt;
  padding: 5px 10px !important;&lt;br /&gt;
  cursor: pointer !important;&lt;br /&gt;
  margin-left: 4px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Personal tools (login/logout) */&lt;br /&gt;
#p-personal li a {&lt;br /&gt;
  font-size: 0.8rem !important;&lt;br /&gt;
  color: #666 !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li a:hover { color: #750014 !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Logo &amp;amp; Sidebar container (#mw-navigation) ──────────────── */&lt;br /&gt;
#mw-navigation {&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
  border-right: 1px solid #e8e8e8 !important;&lt;br /&gt;
  top: 92px !important; /* below topbar + header */&lt;br /&gt;
  position: fixed !important;&lt;br /&gt;
  left: 0 !important;&lt;br /&gt;
  bottom: 0 !important;&lt;br /&gt;
  width: 180px !important;&lt;br /&gt;
  overflow-y: auto !important;&lt;br /&gt;
  z-index: 100 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Logo area */&lt;br /&gt;
#p-logo {&lt;br /&gt;
  position: static !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  height: auto !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  padding: 20px 16px 16px !important;&lt;br /&gt;
  border-bottom: 1px solid #e8e8e8 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide the actual logo image; replace with CSS text badge */&lt;br /&gt;
#p-logo a {&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
  height: auto !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-logo a::before {&lt;br /&gt;
  content: &amp;quot;BMC&amp;quot;;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  justify-content: center;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
  width: 38px;&lt;br /&gt;
  height: 38px;&lt;br /&gt;
  background: #750014;&lt;br /&gt;
  color: #fff;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  font-size: 0.9rem;&lt;br /&gt;
  border-radius: 4px;&lt;br /&gt;
  letter-spacing: -0.5px;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-logo a::after {&lt;br /&gt;
  content: &amp;quot;MIT BioMicro Center&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  font-size: 0.82rem;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  color: #1a1a1a;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
  letter-spacing: -0.1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Sidebar navigation portlets (#mw-panel) ─────────────────── */&lt;br /&gt;
#mw-panel {&lt;br /&gt;
  position: static !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  padding: 12px 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.portlet,&lt;br /&gt;
.mw-portlet {&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  padding: 0 0 8px !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet headings */&lt;br /&gt;
.portlet h3,&lt;br /&gt;
.mw-portlet-heading,&lt;br /&gt;
div.portlet h3 {&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  font-size: 0.68rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  text-transform: uppercase !important;&lt;br /&gt;
  letter-spacing: 0.08em !important;&lt;br /&gt;
  color: #999 !important;&lt;br /&gt;
  padding: 10px 16px 4px !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Portlet links */&lt;br /&gt;
.portlet li,&lt;br /&gt;
.mw-portlet-body li {&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  list-style: none !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
}&lt;br /&gt;
.portlet li a,&lt;br /&gt;
.mw-portlet-body li a {&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  padding: 5px 16px !important;&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  color: #444 !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  margin: 0 6px !important;&lt;br /&gt;
  transition: background 0.12s, color 0.12s !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.portlet li a:hover,&lt;br /&gt;
.mw-portlet-body li a:hover {&lt;br /&gt;
  background: #f0e8ea !important;&lt;br /&gt;
  color: #750014 !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Main content area (#content) ───────────────────────────── */&lt;br /&gt;
#content,&lt;br /&gt;
#mw-content-wrapper {&lt;br /&gt;
  margin-left: 180px !important; /* match sidebar width */&lt;br /&gt;
  margin-top: 92px !important;   /* topbar 32 + header 60 */&lt;br /&gt;
  margin-right: 0 !important;&lt;br /&gt;
  margin-bottom: 0 !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  border-radius: 0 !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  min-height: calc(100vh - 92px) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide MediaWiki &amp;quot;From bmcwiki...&amp;quot; subtitle */&lt;br /&gt;
#siteSub,&lt;br /&gt;
#contentSub { display: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Page Hero: style #firstHeading as the about.html hero ───── */&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-first-heading {&lt;br /&gt;
  background: linear-gradient(135deg, #750014 0%, #5c0010 100%) !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  font-size: 1.9rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  letter-spacing: -0.5px !important;&lt;br /&gt;
  padding: 36px 40px 32px !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Breadcrumb &amp;quot;Home ›&amp;quot; before the title */&lt;br /&gt;
#firstHeading::before {&lt;br /&gt;
  content: &amp;quot;Home  ›&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  font-size: 0.78rem;&lt;br /&gt;
  font-weight: 400;&lt;br /&gt;
  color: rgba(255,255,255,0.75);&lt;br /&gt;
  margin-bottom: 8px;&lt;br /&gt;
  letter-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Body content area ──────────────────────────────────────── */&lt;br /&gt;
#bodyContent {&lt;br /&gt;
  padding: 36px 40px 60px !important;&lt;br /&gt;
  max-width: 860px !important;&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Typography ─────────────────────────────────────────────── */&lt;br /&gt;
.mw-parser-output {&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
  font-size: 0.9rem !important;&lt;br /&gt;
  line-height: 1.6 !important;&lt;br /&gt;
  color: #333 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h2 {&lt;br /&gt;
  font-size: 1.35rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  color: #1a1a1a !important;&lt;br /&gt;
  padding-bottom: 10px !important;&lt;br /&gt;
  border-bottom: 2px solid #750014 !important;&lt;br /&gt;
  border-left: none !important;&lt;br /&gt;
  border-top: none !important;&lt;br /&gt;
  border-right: none !important;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  border-radius: 0 !important;&lt;br /&gt;
  margin: 40px 0 16px !important;&lt;br /&gt;
  letter-spacing: -0.2px !important;&lt;br /&gt;
  scroll-margin-top: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output h2:first-child { margin-top: 0 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h3 {&lt;br /&gt;
  font-size: 1rem !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
  color: #1a1a1a !important;&lt;br /&gt;
  margin: 24px 0 8px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output h4 {&lt;br /&gt;
  font-size: 0.88rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  color: #1a1a1a !important;&lt;br /&gt;
  margin: 16px 0 6px !important;&lt;br /&gt;
  letter-spacing: -0.1px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output p {&lt;br /&gt;
  margin-bottom: 14px !important;&lt;br /&gt;
  color: #333 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output ul,&lt;br /&gt;
.mw-parser-output ol {&lt;br /&gt;
  margin: 0 0 14px 22px !important;&lt;br /&gt;
  color: #333 !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output li { margin-bottom: 4px !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── TOC (Table of Contents) ────────────────────────────────── */&lt;br /&gt;
#toc, .toc {&lt;br /&gt;
  background: #f9f9f9 !important;&lt;br /&gt;
  border: 1px solid #e8e8e8 !important;&lt;br /&gt;
  border-radius: 8px !important;&lt;br /&gt;
  padding: 18px 20px !important;&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  min-width: 200px !important;&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  float: none !important;&lt;br /&gt;
  margin: 0 0 28px !important;&lt;br /&gt;
}&lt;br /&gt;
.toctitle h2,&lt;br /&gt;
#toc .toctitle h2 {&lt;br /&gt;
  font-size: 0.78rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  text-transform: uppercase !important;&lt;br /&gt;
  letter-spacing: 0.08em !important;&lt;br /&gt;
  color: #999 !important;&lt;br /&gt;
  margin-bottom: 10px !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
#toc ul, .toc ul {&lt;br /&gt;
  list-style: none !important;&lt;br /&gt;
  margin: 0 !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
#toc ul li, .toc ul li { margin: 0 0 2px !important; }&lt;br /&gt;
#toc ul li a, .toc ul li a {&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  color: #444 !important;&lt;br /&gt;
  padding: 3px 8px !important;&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
  transition: background 0.12s, color 0.12s !important;&lt;br /&gt;
}&lt;br /&gt;
#toc ul li a:hover, .toc ul li a:hover {&lt;br /&gt;
  background: #f0e8ea !important;&lt;br /&gt;
  color: #750014 !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Sub-items */&lt;br /&gt;
#toc ul ul li a, .toc ul ul li a {&lt;br /&gt;
  padding-left: 18px !important;&lt;br /&gt;
  font-size: 0.78rem !important;&lt;br /&gt;
  color: #666 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Edit section links ──────────────────────────────────────── */&lt;br /&gt;
.mw-editsection { display: inline !important; }&lt;br /&gt;
.mw-editsection a {&lt;br /&gt;
  font-size: 0.72rem !important;&lt;br /&gt;
  color: #999 !important;&lt;br /&gt;
  margin-left: 8px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-editsection a:hover { color: #750014 !important; }&lt;br /&gt;
.mw-editsection-bracket { color: #ddd !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Tables ─────────────────────────────────────────────────── */&lt;br /&gt;
/* Scoped to .wikitable only — layout tables (no class) handled separately below */&lt;br /&gt;
&lt;br /&gt;
.wikitable {&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
  margin: 1em 0 !important;&lt;br /&gt;
  font-size: 0.875rem !important;&lt;br /&gt;
  font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Helvetica, Arial, sans-serif !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  border-radius: 6px !important;&lt;br /&gt;
  overflow: hidden !important;&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
  table-layout: auto !important;&lt;br /&gt;
}&lt;br /&gt;
.wikitable th {&lt;br /&gt;
  background: #750014 !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
  font-size: 0.875rem !important;&lt;br /&gt;
  padding: 13px 18px !important;&lt;br /&gt;
  text-align: left !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  white-space: normal !important;&lt;br /&gt;
  overflow-wrap: break-word !important;&lt;br /&gt;
  line-height: 1.4 !important;&lt;br /&gt;
}&lt;br /&gt;
.wikitable td {&lt;br /&gt;
  padding: 12px 18px !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  border-bottom: 1px solid #e0e0e0 !important;&lt;br /&gt;
  vertical-align: top !important;&lt;br /&gt;
  color: #222 !important;&lt;br /&gt;
  font-size: 0.875rem !important;&lt;br /&gt;
  text-align: left !important;&lt;br /&gt;
  line-height: 1.5 !important;&lt;br /&gt;
  background: #fff !important;&lt;br /&gt;
  overflow-wrap: break-word !important;&lt;br /&gt;
}&lt;br /&gt;
/* Row separator */&lt;br /&gt;
.wikitable tr:last-child td { border-bottom: none !important; }&lt;br /&gt;
/* Section-description rows (colspan td used as sub-headers in Pricing tables) */&lt;br /&gt;
.wikitable td[colspan] {&lt;br /&gt;
  background: #f5f5f5 !important;&lt;br /&gt;
  color: #444 !important;&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  text-align: left !important;&lt;br /&gt;
  line-height: 1.5 !important;&lt;br /&gt;
}&lt;br /&gt;
/* Links inside table cells */&lt;br /&gt;
.wikitable td a { color: #750014 !important; }&lt;br /&gt;
.wikitable td a:hover { color: #750014 !important; text-decoration: underline !important; }&lt;br /&gt;
&lt;br /&gt;
/* Images inside table cells */&lt;br /&gt;
.wikitable td img {&lt;br /&gt;
  max-width: 160px !important;&lt;br /&gt;
  height: auto !important;&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin: 6px 0 8px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Paragraphs inside table cells */&lt;br /&gt;
.wikitable td p {&lt;br /&gt;
  margin: 0 0 6px !important;&lt;br /&gt;
  font-size: 0.875rem !important;&lt;br /&gt;
  line-height: 1.5 !important;&lt;br /&gt;
  color: #222 !important;&lt;br /&gt;
}&lt;br /&gt;
.wikitable td p:last-child { margin-bottom: 0 !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Code ───────────────────────────────────────────────────── */&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output pre,&lt;br /&gt;
.mw-parser-output tt {&lt;br /&gt;
  font-family: &amp;quot;SFMono-Regular&amp;quot;, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, monospace !important;&lt;br /&gt;
  background: #f4f4f4 !important;&lt;br /&gt;
  border: 1px solid #e8e8e8 !important;&lt;br /&gt;
  border-radius: 4px !important;&lt;br /&gt;
  font-size: 0.85rem !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output code,&lt;br /&gt;
.mw-parser-output tt { padding: 1px 5px !important; }&lt;br /&gt;
.mw-parser-output pre { padding: 12px 16px !important; overflow-x: auto !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Component classes (wiki editors add these to markup) ────── */&lt;br /&gt;
&lt;br /&gt;
.service-grid {&lt;br /&gt;
  display: grid;&lt;br /&gt;
  grid-template-columns: repeat(2, 1fr);&lt;br /&gt;
  gap: 16px;&lt;br /&gt;
  margin: 20px 0 28px;&lt;br /&gt;
}&lt;br /&gt;
.service-card {&lt;br /&gt;
  background: #f9f9f9;&lt;br /&gt;
  border: 1px solid #e8e8e8;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  padding: 20px 22px;&lt;br /&gt;
  transition: border-color 0.15s, box-shadow 0.15s;&lt;br /&gt;
}&lt;br /&gt;
.service-card:hover { border-color: #c8a0a8; box-shadow: 0 2px 10px rgba(117,0,20,0.07); }&lt;br /&gt;
.service-card h4 { font-size: 0.88rem !important; font-weight: 700 !important; color: #1a1a1a !important; margin-bottom: 6px !important; }&lt;br /&gt;
.service-card p { font-size: 0.82rem !important; color: #555 !important; margin: 0 !important; line-height: 1.5 !important; }&lt;br /&gt;
&lt;br /&gt;
.staff-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }&lt;br /&gt;
.staff-card { background: #f9f9f9; border: 1px solid #e8e8e8; border-radius: 8px; padding: 16px 18px; }&lt;br /&gt;
.staff-card .staff-name { font-size: 0.88rem; font-weight: 700; color: #1a1a1a; display: block; }&lt;br /&gt;
.staff-card .staff-role { font-size: 0.78rem; color: #666; margin-top: 3px; line-height: 1.4; display: block; }&lt;br /&gt;
.staff-card.director { grid-column: 1 / -1; background: #fdf5f6; border-color: #d4a0a8; display: flex; align-items: center; gap: 18px; }&lt;br /&gt;
.director-badge { width: 44px; height: 44px; background: #750014; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 1rem; flex-shrink: 0; }&lt;br /&gt;
.staff-card.director .staff-name { font-size: 1rem !important; }&lt;br /&gt;
.staff-card.director .staff-role { font-size: 0.82rem !important; color: #444 !important; font-weight: 500; }&lt;br /&gt;
&lt;br /&gt;
.pub-list { list-style: none !important; margin: 0 !important; padding: 0 !important; }&lt;br /&gt;
.pub-list li { padding: 14px 0 !important; border-bottom: 1px solid #f0f0f0 !important; font-size: 0.85rem !important; }&lt;br /&gt;
.pub-list li:last-child { border-bottom: none !important; }&lt;br /&gt;
.pub-list .pub-lab { font-weight: 700; color: #1a1a1a; display: block; }&lt;br /&gt;
.pub-list .pub-desc { color: #444; margin-top: 3px; line-height: 1.5; display: block; }&lt;br /&gt;
.pub-list .pub-cite { display: inline-block; margin-top: 5px; font-size: 0.75rem; background: #f0f0f0; color: #555; padding: 2px 8px; border-radius: 10px; }&lt;br /&gt;
&lt;br /&gt;
.affil-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin: 18px 0 24px; }&lt;br /&gt;
.affil-card { background: #f9f9f9; border: 1px solid #e8e8e8; border-radius: 8px; padding: 16px 18px; }&lt;br /&gt;
.affil-card .affil-name { font-size: 0.85rem; font-weight: 700; color: #1a1a1a; display: block; }&lt;br /&gt;
.affil-card .affil-rep { font-size: 0.78rem; color: #666; margin-top: 4px; display: block; }&lt;br /&gt;
&lt;br /&gt;
.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; }&lt;br /&gt;
.note strong { color: #1a1a1a; }&lt;br /&gt;
.note.note-info { background: #f0f6ff; border-left-color: #3b7dd8; }&lt;br /&gt;
&lt;br /&gt;
.contact-block { background: #f9f9f9; border: 1px solid #e8e8e8; border-radius: 8px; padding: 22px 24px; display: flex; gap: 40px; flex-wrap: wrap; font-size: 0.85rem; }&lt;br /&gt;
.contact-item { display: flex; flex-direction: column; gap: 3px; }&lt;br /&gt;
.contact-item .label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: #999; }&lt;br /&gt;
.contact-item .value { color: #1a1a1a; font-weight: 500; }&lt;br /&gt;
.contact-item a { color: #750014 !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Footer ─────────────────────────────────────────────────── */&lt;br /&gt;
#footer {&lt;br /&gt;
  background: #1a1a1a !important;&lt;br /&gt;
  color: #aaa !important;&lt;br /&gt;
  padding: 32px 40px !important;&lt;br /&gt;
  margin-left: 180px !important;&lt;br /&gt;
  border-top: none !important;&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
}&lt;br /&gt;
#footer a { color: #aaa !important; }&lt;br /&gt;
#footer a:hover { color: #fff !important; text-decoration: none !important; }&lt;br /&gt;
#footer ul { list-style: none !important; padding: 0 !important; margin: 0 !important; display: flex !important; flex-wrap: wrap !important; gap: 6px 20px !important; }&lt;br /&gt;
#footer ul li { padding: 0 !important; margin: 0 !important; font-size: 0.8rem !important; }&lt;br /&gt;
#footer-info li::before { content: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Footer top accent */&lt;br /&gt;
#footer::before {&lt;br /&gt;
  content: &amp;quot;&amp;quot;;&lt;br /&gt;
  display: block;&lt;br /&gt;
  height: 3px;&lt;br /&gt;
  background: #750014;&lt;br /&gt;
  margin: -32px -40px 24px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Responsive ─────────────────────────────────────────────── */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #mw-navigation {&lt;br /&gt;
    position: static !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    border-right: none !important;&lt;br /&gt;
    border-bottom: 1px solid #e8e8e8 !important;&lt;br /&gt;
  }&lt;br /&gt;
  #content, #mw-content-wrapper {&lt;br /&gt;
    margin-left: 0 !important;&lt;br /&gt;
    margin-top: 0 !important;&lt;br /&gt;
  }&lt;br /&gt;
  #footer { margin-left: 0 !important; }&lt;br /&gt;
  .service-grid, .staff-grid, .affil-grid { grid-template-columns: 1fr !important; }&lt;br /&gt;
  .contact-block { flex-direction: column !important; gap: 16px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Hide original MW chrome once the BMC wrapper is injected ── */&lt;br /&gt;
/* common.js adds .bmc-active to &amp;lt;body&amp;gt; after injecting #bmc-wrapper,&lt;br /&gt;
   so this only fires on view pages, leaving edit/special pages intact.&lt;br /&gt;
   The child selector hides ALL original MW elements regardless of skin&lt;br /&gt;
   version (Vector legacy, Vector 2022, etc.) without needing to list&lt;br /&gt;
   every possible ID.                                                    */&lt;br /&gt;
body.bmc-active &amp;gt; *:not(#bmc-wrapper):not(script):not(style) {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── BMC Shell (injected by common.js) ─────────────────────── */&lt;br /&gt;
&lt;br /&gt;
#bmc-wrapper {&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif;&lt;br /&gt;
  color: #1a1a1a;&lt;br /&gt;
  background: #fff;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Topbar */&lt;br /&gt;
.bmc-topbar { background: #750014; color: rgba(255,255,255,0.9); font-size: 0.75rem; padding: 6px 0; text-align: right; }&lt;br /&gt;
.bmc-topbar .inner { max-width: 1140px; margin: 0 auto; padding: 0 24px; }&lt;br /&gt;
.bmc-topbar a { color: rgba(255,255,255,0.85) !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-topbar a:hover { color: #fff !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-topbar span { margin: 0 6px; opacity: 0.5; }&lt;br /&gt;
&lt;br /&gt;
/* Header */&lt;br /&gt;
.bmc-header { background: #fff; border-bottom: 1px solid #e0e0e0; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 4px rgba(0,0,0,0.07); }&lt;br /&gt;
.bmc-header-inner { max-width: 1140px; margin: 0 auto; padding: 0 24px; display: flex; align-items: center; justify-content: space-between; height: 68px; }&lt;br /&gt;
.bmc-header-right { display: flex; align-items: center; gap: 16px; }&lt;br /&gt;
&lt;br /&gt;
/* Logo */&lt;br /&gt;
.bmc-logo { display: flex !important; align-items: center !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-logo-img { height: 56px !important; width: auto !important; display: block !important; }&lt;br /&gt;
&lt;br /&gt;
/* Nav */&lt;br /&gt;
.bmc-nav { display: flex; align-items: center; }&lt;br /&gt;
.bmc-nav &amp;gt; ul { list-style: none !important; display: flex !important; gap: 2px; margin: 0 !important; padding: 0 !important; }&lt;br /&gt;
.bmc-nav &amp;gt; ul &amp;gt; li { position: relative; }&lt;br /&gt;
.bmc-nav &amp;gt; ul &amp;gt; li &amp;gt; a { display: block !important; padding: 8px 14px !important; font-size: 0.85rem !important; font-weight: 500 !important; color: #333 !important; border-radius: 4px !important; white-space: nowrap; transition: background 0.15s, color 0.15s; text-decoration: none !important; background: transparent !important; border: none !important; }&lt;br /&gt;
.bmc-nav &amp;gt; ul &amp;gt; li &amp;gt; a:hover,&lt;br /&gt;
.bmc-nav &amp;gt; ul &amp;gt; li.bmc-active &amp;gt; a { background: #f5f5f5 !important; color: #750014 !important; text-decoration: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Dropdown */&lt;br /&gt;
.bmc-dropdown { position: relative; }&lt;br /&gt;
.bmc-dropdown &amp;gt; a::after { content: &#039; ▾&#039;; font-size: 0.65rem; opacity: 0.6; }&lt;br /&gt;
.bmc-dropdown-menu { display: none; position: absolute; top: calc(100% + 4px); left: 0; background: #fff; border: 1px solid #e0e0e0; border-radius: 6px; box-shadow: 0 6px 20px rgba(0,0,0,0.10); min-width: 200px; padding: 6px 0; z-index: 200; }&lt;br /&gt;
.bmc-dropdown-menu::before { content: &#039;&#039;; position: absolute; top: -8px; left: 0; right: 0; height: 8px; background: transparent; }&lt;br /&gt;
.bmc-dropdown:hover .bmc-dropdown-menu { display: block; }&lt;br /&gt;
.bmc-dropdown-menu a { display: block !important; padding: 8px 18px !important; font-size: 0.83rem !important; color: #333 !important; white-space: nowrap; text-decoration: none !important; background: transparent !important; transition: background 0.12s; }&lt;br /&gt;
.bmc-dropdown-menu a:hover { background: #faf0f0 !important; color: #750014 !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-divider { border-top: 1px solid #eee; margin: 4px 0; }&lt;br /&gt;
.bmc-group-label { padding: 6px 18px 2px; font-size: 0.7rem; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.05em; }&lt;br /&gt;
&lt;br /&gt;
/* Search form */&lt;br /&gt;
.bmc-search-form { display: flex; align-items: center; gap: 4px; }&lt;br /&gt;
.bmc-search-form input[type=&amp;quot;search&amp;quot;] { border: 1px solid #e0e0e0; border-radius: 4px; padding: 5px 10px; font-size: 0.83rem; font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif; color: #333; width: 180px; outline: none; background: #fff; }&lt;br /&gt;
.bmc-search-form input[type=&amp;quot;search&amp;quot;]:focus { border-color: #750014; }&lt;br /&gt;
.bmc-search-form button { background: #750014; border: none; border-radius: 4px; color: #fff; font-size: 0.85rem; padding: 5px 10px; cursor: pointer; }&lt;br /&gt;
.bmc-search-form button:hover { background: #5c0010; }&lt;br /&gt;
&lt;br /&gt;
/* Page hero */&lt;br /&gt;
.bmc-page-hero { background: linear-gradient(135deg, #750014 0%, #5c0010 100%); color: #fff; padding: 40px 0 36px; }&lt;br /&gt;
.bmc-page-hero .inner { max-width: 1140px; margin: 0 auto; padding: 0 24px; }&lt;br /&gt;
.bmc-breadcrumb { font-size: 0.78rem; margin-bottom: 10px; opacity: 0.75; }&lt;br /&gt;
.bmc-breadcrumb a { color: #fff !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-breadcrumb .sep { margin: 0 6px; }&lt;br /&gt;
.bmc-page-hero h1 { font-size: 2rem !important; font-weight: 700 !important; letter-spacing: -0.5px !important; color: #fff !important; margin: 0 !important; border: none !important; background: none !important; padding: 0 !important; box-shadow: none !important; }&lt;br /&gt;
&lt;br /&gt;
/* Page layout */&lt;br /&gt;
.bmc-page-layout { max-width: 1140px; margin: 0 auto; padding: 40px 24px 80px; display: grid; grid-template-columns: 220px 1fr; gap: 40px; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar */&lt;br /&gt;
.bmc-sidebar { position: sticky; top: 84px; align-self: start; }&lt;br /&gt;
.bmc-toc { background: #f9f9f9; border: 1px solid #e8e8e8; border-radius: 8px; padding: 20px; }&lt;br /&gt;
.bmc-toc h3 { font-size: 0.78rem !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.08em !important; color: #999 !important; margin-bottom: 12px !important; border: none !important; background: none !important; padding: 0 !important; box-shadow: none !important; }&lt;br /&gt;
.bmc-toc ul { list-style: none !important; margin: 0 !important; padding: 0 !important; }&lt;br /&gt;
.bmc-toc ul li { margin-bottom: 2px !important; }&lt;br /&gt;
.bmc-toc ul li a { font-size: 0.82rem !important; color: #444 !important; padding: 4px 8px !important; display: block !important; border-radius: 4px !important; text-decoration: none !important; transition: background 0.12s, color 0.12s; }&lt;br /&gt;
.bmc-toc ul li a:hover { background: #f0e8ea !important; color: #750014 !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-toc ul li.bmc-sub a { padding-left: 20px !important; color: #666 !important; font-size: 0.78rem !important; }&lt;br /&gt;
&lt;br /&gt;
/* Content */&lt;br /&gt;
.bmc-content { min-width: 0; font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif; font-size: 0.9rem; line-height: 1.6; color: #333; }&lt;br /&gt;
.bmc-content h2 { font-size: 1.35rem !important; font-weight: 700 !important; color: #1a1a1a !important; padding-bottom: 10px !important; border-bottom: 2px solid #750014 !important; border-left: none !important; border-top: none !important; border-right: none !important; background: none !important; box-shadow: none !important; border-radius: 0 !important; margin: 48px 0 18px !important; letter-spacing: -0.2px !important; scroll-margin-top: 88px !important; }&lt;br /&gt;
.bmc-content h2:first-child { margin-top: 0 !important; }&lt;br /&gt;
.bmc-content h3 { font-size: 1rem !important; font-weight: 600 !important; color: #1a1a1a !important; margin: 28px 0 10px !important; scroll-margin-top: 88px !important; }&lt;br /&gt;
.bmc-content p { margin-bottom: 14px; font-size: 0.9rem; color: #333; }&lt;br /&gt;
.bmc-content p:last-child { margin-bottom: 0; }&lt;br /&gt;
.bmc-content ul, .bmc-content ol { margin: 0 0 14px 22px; color: #333; }&lt;br /&gt;
.bmc-content li { margin-bottom: 4px; }&lt;br /&gt;
&lt;br /&gt;
/* Footer */&lt;br /&gt;
/* Edit bar — shown to logged-in users at top of content area */&lt;br /&gt;
.bmc-edit-bar { display: flex !important; gap: 12px !important; justify-content: flex-end !important; padding: 6px 0 10px !important; border-bottom: 1px solid #e8e8e8 !important; margin-bottom: 16px !important; }&lt;br /&gt;
.bmc-edit-bar a { font-size: 0.78rem !important; color: #750014 !important; text-decoration: none !important; font-weight: 500 !important; }&lt;br /&gt;
.bmc-edit-bar a:hover { text-decoration: underline !important; }&lt;br /&gt;
&lt;br /&gt;
.bmc-footer { background: #1a1a1a; color: #aaa; padding: 40px 0; font-size: 0.82rem; font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif; }&lt;br /&gt;
.bmc-footer-inner { max-width: 1140px; margin: 0 auto; padding: 0 24px; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 32px; }&lt;br /&gt;
.bmc-footer h4 { font-size: 0.75rem !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.08em !important; color: #fff !important; margin-bottom: 12px !important; border: none !important; background: none !important; padding: 0 !important; box-shadow: none !important; }&lt;br /&gt;
.bmc-footer ul { list-style: none !important; margin: 0 !important; padding: 0 !important; }&lt;br /&gt;
.bmc-footer ul li { margin-bottom: 6px !important; }&lt;br /&gt;
.bmc-footer ul li a { color: #aaa !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-footer ul li a:hover { color: #fff !important; text-decoration: none !important; }&lt;br /&gt;
.bmc-footer-bottom { max-width: 1140px; margin: 24px auto 0; padding: 20px 24px 0; border-top: 1px solid #333; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 0.77rem; color: #666; }&lt;br /&gt;
.bmc-footer-bottom a { color: #666 !important; }&lt;br /&gt;
.bmc-footer-bottom a:hover { color: #fff !important; }&lt;br /&gt;
&lt;br /&gt;
/* Responsive (bmc shell) */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  .bmc-page-layout { grid-template-columns: 1fr; }&lt;br /&gt;
  .bmc-sidebar { position: static; }&lt;br /&gt;
  .bmc-footer-inner { grid-template-columns: 1fr 1fr; }&lt;br /&gt;
}&lt;br /&gt;
@media (max-width: 580px) {&lt;br /&gt;
  .bmc-footer-inner { grid-template-columns: 1fr; }&lt;br /&gt;
  .bmc-nav &amp;gt; ul { display: none !important; }&lt;br /&gt;
  .bmc-page-hero h1 { font-size: 1.5rem !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── Content overrides: clean up main-page legacy styling ─── */&lt;br /&gt;
&lt;br /&gt;
/* Hide the BMC header/logo sticker images (JS handles this by src; CSS is a fallback) */&lt;br /&gt;
img[src*=&amp;quot;BMC_Header&amp;quot;],&lt;br /&gt;
img[src*=&amp;quot;bmc_logo_square&amp;quot;],&lt;br /&gt;
img[src*=&amp;quot;Bmc_logo&amp;quot;] {&lt;br /&gt;
  display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Keep header background even if inline style is present */&lt;br /&gt;
.wikitable th[style*=&amp;quot;background&amp;quot;] { background: #750014 !important; }&lt;br /&gt;
&lt;br /&gt;
/* ── Layout tables (non-wikitable): clean up legacy styling ──── */&lt;br /&gt;
/* The wiki uses plain tables (no .wikitable) for service grids and&lt;br /&gt;
   column layouts. Keep them as standard HTML tables — do NOT flex —&lt;br /&gt;
   but replace the legacy black borders with subtle card styling.      */&lt;br /&gt;
&lt;br /&gt;
/* Outer layout table: remove legacy table-level border/background */&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable):not(.navbox):not(.infobox) {&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
  border-collapse: separate !important;&lt;br /&gt;
  border-spacing: 6px !important;&lt;br /&gt;
  margin-bottom: 24px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Layout cells with inline border (service grid cards) */&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable) td[style*=&amp;quot;border&amp;quot;] {&lt;br /&gt;
  border: 1px solid #e8e8e8 !important;&lt;br /&gt;
  border-radius: 6px !important;&lt;br /&gt;
  padding: 14px 16px !important;&lt;br /&gt;
  vertical-align: top !important;&lt;br /&gt;
  background: #f9f9f9 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Section-header cells (Assisted Services / Walkup / Informatics) — colspan rows */&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable) td[colspan][style*=&amp;quot;border&amp;quot;] {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border-radius: 6px !important;&lt;br /&gt;
  padding: 10px 16px !important;&lt;br /&gt;
  text-align: left !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inner nested tables inside service cards — strip borders (non-wikitable only) */&lt;br /&gt;
.bmc-content .mw-parser-output td &amp;gt; table:not(.wikitable) {&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border-spacing: 0 !important;&lt;br /&gt;
  width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
.bmc-content .mw-parser-output td &amp;gt; table:not(.wikitable) td {&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  padding: 0 !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Service card headings: wiki uses &amp;lt;big&amp;gt;&amp;lt;b&amp;gt;title&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt; */&lt;br /&gt;
.bmc-content .mw-parser-output big b,&lt;br /&gt;
.bmc-content .mw-parser-output big strong {&lt;br /&gt;
  font-size: 0.9rem !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  color: #1a1a1a !important;&lt;br /&gt;
  display: block !important;&lt;br /&gt;
  margin-bottom: 6px !important;&lt;br /&gt;
  font-family: &#039;Helvetica Neue&#039;, Arial, sans-serif !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Lists inside service cards */&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable) ul,&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable) li {&lt;br /&gt;
  font-size: 0.82rem !important;&lt;br /&gt;
  color: #444 !important;&lt;br /&gt;
  margin-bottom: 3px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Plain layout cells without border (e.g. News page columns) */&lt;br /&gt;
.bmc-content .mw-parser-output &amp;gt; table:not(.wikitable) td:not([style*=&amp;quot;border&amp;quot;]) {&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  padding: 0 8px !important;&lt;br /&gt;
  vertical-align: top !important;&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Submission&amp;diff=131509</id>
		<title>BioMicroCenter:Submission</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Submission&amp;diff=131509"/>
		<updated>2026-05-12T15:56:23Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* MIT Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
== Submitting to the BioMicro Center ==&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center accepts samples from MIT-affiliated and external users. For an overview of available services, see the [[BioMicroCenter|home page]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== MIT Users ==&lt;br /&gt;
&lt;br /&gt;
MIT users access the BioMicro Center through [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center/?tab=about iLabs], which requires an MIT Kerberos account and an active MIT cost object. Kerberos accounts are available to members of MIT, the Whitehead Institute, and qualifying users at the Broad and Ragon Institutes. If you do not have a Kerberos account, see [https://ist.mit.edu/accounts MIT IS&amp;amp;T Accounts].&lt;br /&gt;
&lt;br /&gt;
See [[BioMicroCenter:Pricing|Pricing]] for current rates.&lt;br /&gt;
&lt;br /&gt;
=== Assisted services ===&lt;br /&gt;
&lt;br /&gt;
Assisted services are those where samples are delivered to the BioMicro Center and processed by staff. These include sequencing, library preparation, sample QC, and informatics.&lt;br /&gt;
&lt;br /&gt;
To submit, log in to iLabs and follow these paths:&lt;br /&gt;
&lt;br /&gt;
* [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=services &#039;&#039;&#039;Genomics Services&#039;&#039;&#039;] (sequencing, library preparation, sample QC): Request Services → BioMicro Requests → Initiate Request&lt;br /&gt;
* [https://mit-ki.ilabsolutions.com/sc/3189/bioinformatics-and-computing-core/?tab=services &#039;&#039;&#039;Informatics Services&#039;&#039;&#039;] (bioinformatics and computing): Request Services → Initiate Request&lt;br /&gt;
&lt;br /&gt;
After submitting, you will receive an email once your project has been captured from iLabs. Once you have received that confirmation, bring your samples to 68-322 during regular business hours. If you cannot access the building, call the lab at 617-715-4533.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purchase orders:&#039;&#039;&#039; If you are paying by PO, you must submit with an MIT cost object. Fields for the PO number are included in the submission forms. The MIT cost object is a backup that will only be charged if payment via PO cannot be collected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Approval:&#039;&#039;&#039; The BioMicro Center does not hold projects waiting for financial approval. If a submission is not rejected in a timely manner, we will proceed and recharge normally. Please ensure your cost object is active before submitting.&lt;br /&gt;
&lt;br /&gt;
Once your data is ready, see [[BioMicroCenter:FAQ#DOWNLOADING_DATA|Downloading your data]] for instructions on retrieving results.&lt;br /&gt;
&lt;br /&gt;
=== Walk-up services ===&lt;br /&gt;
&lt;br /&gt;
Walk-up services are those where users operate equipment themselves after receiving training. To schedule equipment, log in to [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center/?tab=about iLabs] and follow this path:&lt;br /&gt;
&lt;br /&gt;
Schedule Equipment → expand the service → View Schedule&lt;br /&gt;
&lt;br /&gt;
Some equipment requires training before sign-up is permitted. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] to arrange training.&lt;br /&gt;
&lt;br /&gt;
After-hours access to the core is part of the walk-up process and requires a one-time form:&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/nxdzbesvp2mab69wofotm/New_User_Sign_Up_Form.docx?rlkey=x9ftkatdlm897fbeol2ibv8tb&amp;amp;st=ag0jsvn9&amp;amp;dl=0 After-Hours Access Form]&lt;br /&gt;
&lt;br /&gt;
=== New labs ===&lt;br /&gt;
&lt;br /&gt;
New labs are set up in iLabs by your PI or a designated administrator — having MIT spending permission does not automatically carry over to iLabs. For assistance getting your lab registered, see [https://ki-sbc.mit.edu/core-access KI Shared Research Core Access] or contact [mailto:ciminojv@mit.edu Jack Cimino] at the Koch Institute.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== External Users ==&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center primarily serves the MIT community. We welcome external users when capacity allows, with the understanding that MIT samples always have priority. &#039;&#039;&#039;The BioMicro Center reserves the right to decline any submission.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See [[BioMicroCenter:Pricing|Pricing]] for current rates.&lt;br /&gt;
&lt;br /&gt;
=== New external labs ===&lt;br /&gt;
&lt;br /&gt;
Each new external lab must complete a one-time form before quotes can be provided:&lt;br /&gt;
* [https://www.dropbox.com/s/tgnmr6lrubprjzx/New_External%20User%20Form_2018.xlsx?dl=0 New External User Form] — required once per lab&lt;br /&gt;
&lt;br /&gt;
=== Assisted services ===&lt;br /&gt;
&lt;br /&gt;
Assisted services are those where samples are delivered to the BioMicro Center and processed by staff.&lt;br /&gt;
&lt;br /&gt;
To submit samples, download and complete the appropriate form below and send it along with your samples.&lt;br /&gt;
&lt;br /&gt;
If you are bringing samples in person, please email [mailto:biomicro@mit.edu biomicro@mit.edu] in advance to coordinate a drop-off date and time. Once that is arranged, you are welcome to come by 68-322 during regular business hours. If you cannot access the building on arrival, call the lab at 617-715-4533.&lt;br /&gt;
&lt;br /&gt;
If you are shipping samples, see the shipping instructions below.&lt;br /&gt;
&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/7jfss8ofhp98g0doiv9ph/BMC_EXT_shortRead25.xlsx?rlkey=syhww29wpavjakekc2d5lyskl&amp;amp;dl=0 Short Read Library Prep and/or Sequencing] — multipage form; separate tabs for prep and sequencing&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/lgnx0bbfz3lrn00zyplyw/LongReadSeq_User_Form.xlsx?dl=0&amp;amp;rlkey=x1tbksv8swv5xhvp91m68eg42 Long Read Sequencing]&lt;br /&gt;
* [https://www.dropbox.com/s/kuodtqu77079st7/BMC_EXT_FAFP_v4.xlsx?dl=0 Advanced Analytical / Bioanalyzer]&lt;br /&gt;
&lt;br /&gt;
Ship DNA samples at 4°C; ship RNA samples on dry ice. Use overnight delivery and address packages to:&lt;br /&gt;
&lt;br /&gt;
  MIT BioMicro Center&lt;br /&gt;
  31 Ames Street, Building 68-322&lt;br /&gt;
  Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
Please email an electronic copy of your completed order form and PO to [mailto:biomicro@mit.edu biomicro@mit.edu].&lt;br /&gt;
&lt;br /&gt;
Once your data is ready, see [[BioMicroCenter:FAQ#DOWNLOADING_DATA|Downloading your data]] for instructions on retrieving results.&lt;br /&gt;
&lt;br /&gt;
=== Walk-up services ===&lt;br /&gt;
&lt;br /&gt;
Walk-up services for external users are generally performed as assisted services, with staff operating the equipment at a nominal fee above the standard equipment rate. This allows scheduling around MIT user demand. After-hours access is not available to external users.&lt;br /&gt;
&lt;br /&gt;
To arrange walk-up access, contact [mailto:biomicro@mit.edu biomicro@mit.edu].&lt;br /&gt;
&lt;br /&gt;
=== Billing ===&lt;br /&gt;
&lt;br /&gt;
Please email purchase orders to [mailto:bio-billing@mit.edu bio-billing@mit.edu].&lt;br /&gt;
&lt;br /&gt;
Direct payment inquiries and checks to:&lt;br /&gt;
&lt;br /&gt;
  Massachusetts Institute of Technology&lt;br /&gt;
  Biology Finance Office&lt;br /&gt;
  77 Massachusetts Avenue, 68-157&lt;br /&gt;
  Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
For a W-9: [https://vpf.mit.edu/forms/7/1220 MIT W-9 Form]&lt;br /&gt;
&lt;br /&gt;
A Technical Services Agreement (TSA) — pre-approved by MIT legal and not open to redlining — is available upon request. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] for details.&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Submission&amp;diff=131508</id>
		<title>BioMicroCenter:Submission</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Submission&amp;diff=131508"/>
		<updated>2026-05-12T15:56:12Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* MIT Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
== Submitting to the BioMicro Center ==&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center accepts samples from MIT-affiliated and external users. For an overview of available services, see the [[BioMicroCenter|home page]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== MIT Users ==&lt;br /&gt;
&lt;br /&gt;
qqqqqqqMIT users access the BioMicro Center through [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center/?tab=about iLabs], which requires an MIT Kerberos account and an active MIT cost object. Kerberos accounts are available to members of MIT, the Whitehead Institute, and qualifying users at the Broad and Ragon Institutes. If you do not have a Kerberos account, see [https://ist.mit.edu/accounts MIT IS&amp;amp;T Accounts].&lt;br /&gt;
&lt;br /&gt;
See [[BioMicroCenter:Pricing|Pricing]] for current rates.&lt;br /&gt;
&lt;br /&gt;
=== Assisted services ===&lt;br /&gt;
&lt;br /&gt;
Assisted services are those where samples are delivered to the BioMicro Center and processed by staff. These include sequencing, library preparation, sample QC, and informatics.&lt;br /&gt;
&lt;br /&gt;
To submit, log in to iLabs and follow these paths:&lt;br /&gt;
&lt;br /&gt;
* [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=services &#039;&#039;&#039;Genomics Services&#039;&#039;&#039;] (sequencing, library preparation, sample QC): Request Services → BioMicro Requests → Initiate Request&lt;br /&gt;
* [https://mit-ki.ilabsolutions.com/sc/3189/bioinformatics-and-computing-core/?tab=services &#039;&#039;&#039;Informatics Services&#039;&#039;&#039;] (bioinformatics and computing): Request Services → Initiate Request&lt;br /&gt;
&lt;br /&gt;
After submitting, you will receive an email once your project has been captured from iLabs. Once you have received that confirmation, bring your samples to 68-322 during regular business hours. If you cannot access the building, call the lab at 617-715-4533.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Purchase orders:&#039;&#039;&#039; If you are paying by PO, you must submit with an MIT cost object. Fields for the PO number are included in the submission forms. The MIT cost object is a backup that will only be charged if payment via PO cannot be collected.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Approval:&#039;&#039;&#039; The BioMicro Center does not hold projects waiting for financial approval. If a submission is not rejected in a timely manner, we will proceed and recharge normally. Please ensure your cost object is active before submitting.&lt;br /&gt;
&lt;br /&gt;
Once your data is ready, see [[BioMicroCenter:FAQ#DOWNLOADING_DATA|Downloading your data]] for instructions on retrieving results.&lt;br /&gt;
&lt;br /&gt;
=== Walk-up services ===&lt;br /&gt;
&lt;br /&gt;
Walk-up services are those where users operate equipment themselves after receiving training. To schedule equipment, log in to [https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center/?tab=about iLabs] and follow this path:&lt;br /&gt;
&lt;br /&gt;
Schedule Equipment → expand the service → View Schedule&lt;br /&gt;
&lt;br /&gt;
Some equipment requires training before sign-up is permitted. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] to arrange training.&lt;br /&gt;
&lt;br /&gt;
After-hours access to the core is part of the walk-up process and requires a one-time form:&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/nxdzbesvp2mab69wofotm/New_User_Sign_Up_Form.docx?rlkey=x9ftkatdlm897fbeol2ibv8tb&amp;amp;st=ag0jsvn9&amp;amp;dl=0 After-Hours Access Form]&lt;br /&gt;
&lt;br /&gt;
=== New labs ===&lt;br /&gt;
&lt;br /&gt;
New labs are set up in iLabs by your PI or a designated administrator — having MIT spending permission does not automatically carry over to iLabs. For assistance getting your lab registered, see [https://ki-sbc.mit.edu/core-access KI Shared Research Core Access] or contact [mailto:ciminojv@mit.edu Jack Cimino] at the Koch Institute.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== External Users ==&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center primarily serves the MIT community. We welcome external users when capacity allows, with the understanding that MIT samples always have priority. &#039;&#039;&#039;The BioMicro Center reserves the right to decline any submission.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
See [[BioMicroCenter:Pricing|Pricing]] for current rates.&lt;br /&gt;
&lt;br /&gt;
=== New external labs ===&lt;br /&gt;
&lt;br /&gt;
Each new external lab must complete a one-time form before quotes can be provided:&lt;br /&gt;
* [https://www.dropbox.com/s/tgnmr6lrubprjzx/New_External%20User%20Form_2018.xlsx?dl=0 New External User Form] — required once per lab&lt;br /&gt;
&lt;br /&gt;
=== Assisted services ===&lt;br /&gt;
&lt;br /&gt;
Assisted services are those where samples are delivered to the BioMicro Center and processed by staff.&lt;br /&gt;
&lt;br /&gt;
To submit samples, download and complete the appropriate form below and send it along with your samples.&lt;br /&gt;
&lt;br /&gt;
If you are bringing samples in person, please email [mailto:biomicro@mit.edu biomicro@mit.edu] in advance to coordinate a drop-off date and time. Once that is arranged, you are welcome to come by 68-322 during regular business hours. If you cannot access the building on arrival, call the lab at 617-715-4533.&lt;br /&gt;
&lt;br /&gt;
If you are shipping samples, see the shipping instructions below.&lt;br /&gt;
&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/7jfss8ofhp98g0doiv9ph/BMC_EXT_shortRead25.xlsx?rlkey=syhww29wpavjakekc2d5lyskl&amp;amp;dl=0 Short Read Library Prep and/or Sequencing] — multipage form; separate tabs for prep and sequencing&lt;br /&gt;
* [https://www.dropbox.com/scl/fi/lgnx0bbfz3lrn00zyplyw/LongReadSeq_User_Form.xlsx?dl=0&amp;amp;rlkey=x1tbksv8swv5xhvp91m68eg42 Long Read Sequencing]&lt;br /&gt;
* [https://www.dropbox.com/s/kuodtqu77079st7/BMC_EXT_FAFP_v4.xlsx?dl=0 Advanced Analytical / Bioanalyzer]&lt;br /&gt;
&lt;br /&gt;
Ship DNA samples at 4°C; ship RNA samples on dry ice. Use overnight delivery and address packages to:&lt;br /&gt;
&lt;br /&gt;
  MIT BioMicro Center&lt;br /&gt;
  31 Ames Street, Building 68-322&lt;br /&gt;
  Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
Please email an electronic copy of your completed order form and PO to [mailto:biomicro@mit.edu biomicro@mit.edu].&lt;br /&gt;
&lt;br /&gt;
Once your data is ready, see [[BioMicroCenter:FAQ#DOWNLOADING_DATA|Downloading your data]] for instructions on retrieving results.&lt;br /&gt;
&lt;br /&gt;
=== Walk-up services ===&lt;br /&gt;
&lt;br /&gt;
Walk-up services for external users are generally performed as assisted services, with staff operating the equipment at a nominal fee above the standard equipment rate. This allows scheduling around MIT user demand. After-hours access is not available to external users.&lt;br /&gt;
&lt;br /&gt;
To arrange walk-up access, contact [mailto:biomicro@mit.edu biomicro@mit.edu].&lt;br /&gt;
&lt;br /&gt;
=== Billing ===&lt;br /&gt;
&lt;br /&gt;
Please email purchase orders to [mailto:bio-billing@mit.edu bio-billing@mit.edu].&lt;br /&gt;
&lt;br /&gt;
Direct payment inquiries and checks to:&lt;br /&gt;
&lt;br /&gt;
  Massachusetts Institute of Technology&lt;br /&gt;
  Biology Finance Office&lt;br /&gt;
  77 Massachusetts Avenue, 68-157&lt;br /&gt;
  Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
For a W-9: [https://vpf.mit.edu/forms/7/1220 MIT W-9 Form]&lt;br /&gt;
&lt;br /&gt;
A Technical Services Agreement (TSA) — pre-approved by MIT legal and not open to redlining — is available upon request. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] for details.&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:ShortRead&amp;diff=131507</id>
		<title>BioMicroCenter:ShortRead</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:ShortRead&amp;diff=131507"/>
		<updated>2026-05-12T15:54:40Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* MiSeq i100 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
The MIT BioMicro Center offers short-read sequencing on five platforms from three manufacturers, spanning low to high output. All sequencing includes library quality control (RT-PCR and Fragment Analyzer), demultiplexing, and FASTQ delivery. Pricing is available to MIT users at [[MIT:Pricing]] and to all users at [[BioMicroCenter:Pricing]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f8f9fa; border:1px solid #ccc; padding:12px 16px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Choosing a platform?&#039;&#039;&#039; Jump to [[#PLATFORM_COMPARISON|platform comparison]] and [[#FAQ|FAQ]] below, or contact [mailto:biomicro@mit.edu biomicro@mit.edu].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OUTPUT TIERS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:8%; background:#dce8f5;&amp;quot; | OUTPUT&lt;br /&gt;
! style=&amp;quot;width:18%; background:#dce8f5;&amp;quot; | PLATFORM&lt;br /&gt;
! style=&amp;quot;width:22%; background:#dce8f5;&amp;quot; | READS / UNIT&lt;br /&gt;
! style=&amp;quot;width:20%; background:#dce8f5;&amp;quot; | MIN SUBMISSION&lt;br /&gt;
! style=&amp;quot;width:32%; background:#dce8f5;&amp;quot; | TYPICAL USE&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f0fe; font-weight:bold; vertical-align:middle;&amp;quot; rowspan=&amp;quot;2&amp;quot; | HIGH&lt;br /&gt;
| [[Image:BMC_NovaXplus.jpg|center|120px]] &amp;lt;br&amp;gt; &#039;&#039;&#039;NovaSeqX Plus&#039;&#039;&#039;&lt;br /&gt;
| 1.2B reads/lane (10B FC) &amp;lt;br&amp;gt; 3.0B reads/lane (25B FC)&lt;br /&gt;
| 110 µL at 2 nM per lane&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-size:92%;&amp;quot; | Largest experiments requiring billions of reads: cohort-scale WGS, ultra-deep sequencing, high-replicate RNA-seq studies&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-size:90%; color:#555; text-align:left; padding:4px 10px;&amp;quot; | &#039;&#039;Available through collaboration with nearby academic shared resources. Contact [mailto:biomicro@mit.edu BMC staff] to inquire.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e6f4ea; font-weight:bold; vertical-align:middle;&amp;quot; | MID&lt;br /&gt;
| [[Image:Element_AVITI.jpg|center|120px]] &amp;lt;br&amp;gt; &#039;&#039;&#039;Element AVITI24&#039;&#039;&#039;&lt;br /&gt;
| ~400M reads/lane &amp;lt;br&amp;gt; (~800M per 2-lane flowcell)&lt;br /&gt;
| 15 µL at 2 nM&lt;br /&gt;
| style=&amp;quot;text-align:left; font-size:92%;&amp;quot; | Standard depth experiments: RNA-seq, ChIP-seq, ATAC-seq, WGS at moderate coverage; tolerates low-complexity libraries well&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; font-weight:bold; vertical-align:middle;&amp;quot; rowspan=&amp;quot;4&amp;quot; | LOW&lt;br /&gt;
| [[Image:2023_Singular_G4.jpg|center|120px]] &amp;lt;br&amp;gt; &#039;&#039;&#039;Singular G4&#039;&#039;&#039;&lt;br /&gt;
| ~100M reads/lane &amp;lt;br&amp;gt; (4 lanes/flowcell)&lt;br /&gt;
| 12 µL at 4 nM&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align:left; font-size:92%;&amp;quot; | Smaller experiments, amplicons, validation, pilot studies, and applications where cost-per-lane is the primary driver&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:BMC_i100.jpg|center|120px]] &amp;lt;br&amp;gt; &#039;&#039;&#039;MiSeq i100&#039;&#039;&#039;&lt;br /&gt;
| 5M – 100M reads/flowcell&lt;br /&gt;
| 40 µL at 2 nM&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;!-- no image yet: replace with [[Image:filename.ext|center|120px]] --&amp;gt; &amp;lt;br&amp;gt; &#039;&#039;&#039;MiSeq classic&#039;&#039;&#039;&lt;br /&gt;
| 1M – 25M reads/flowcell&lt;br /&gt;
| 40 µL at 2 nM&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-size:90%; color:#555; text-align:left; padding:4px 10px;&amp;quot; | &#039;&#039;MiSeq classic is off contract and will be retired upon instrument failure. MiSeq i100 offers walkup service (MIT only, training required).&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING PLATFORMS ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════ ILLUMINA ═══════════════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Illumina ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;ILLUMINA&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center operates the [https://www.illumina.com/systems/sequencing-platforms/miseq-i100.html MiSeq i100] and provides access to [https://www.illumina.com/systems/sequencing-platforms/novaseq-x-plus.html NovaSeqX Plus] through collaboration with nearby academic core facilities. Both instruments use Illumina&#039;s two-color XLEAP-SBS chemistry (G bases are inferred from signal absence) and are best suited to high-complexity libraries. UDIs are strongly recommended on both platforms.&lt;br /&gt;
&lt;br /&gt;
=== NovaSeqX Plus ===&lt;br /&gt;
&lt;br /&gt;
NovaSeqX Plus sequencing is available through BMC&#039;s collaboration with local academic core facilities, and is well suited to projects requiring the deepest coverage or largest sample counts. It is only available for MIT users. These collaborations provide advantaged pricing to MIT users.&lt;br /&gt;
&lt;br /&gt;
* See [[MIT:Pricing|Pricing]] for rates.&lt;br /&gt;
* Full flowcells (8 lanes, 10B or 25B) have priority over individual lanes; wait times for single lanes can vary.&lt;br /&gt;
* Minimum 2 nM; 110 µL per lane.&lt;br /&gt;
* Custom sequencing primers: at least 30 µL at 100 µM of each primer type per flowcell. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] before planning a custom library prep.&lt;br /&gt;
&lt;br /&gt;
=== MiSeq i100 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:470px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
 ! Service&lt;br /&gt;
 ! MiSeq i100 Sequencing&lt;br /&gt;
 |-&lt;br /&gt;
 | INPUT || Illumina libraries&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN VOLUME || 40 µL&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN CONCENTRATION || 2 nM (~0.4 ng/µL for 300 bp library)&lt;br /&gt;
 |-&lt;br /&gt;
 | INCLUDED SERVICES&lt;br /&gt;
 |&lt;br /&gt;
* Quality Control: Fragment Analyzer and qPCR&lt;br /&gt;
* Illumina Sequencing&lt;br /&gt;
* Demultiplexing&lt;br /&gt;
 |-&lt;br /&gt;
 | DATA FORMATS&lt;br /&gt;
 |&lt;br /&gt;
* FASTQ&lt;br /&gt;
* BCL (stored 30 days)&lt;br /&gt;
 |-&lt;br /&gt;
 | PRICING || [[MIT:Pricing]] · [[BioMicroCenter:Pricing]]&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBMISSION&lt;br /&gt;
 |&lt;br /&gt;
* MIT (Assisted) – [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 iLabs]&lt;br /&gt;
* MIT (Walkup) – [https://mit.ilabsolutions.com/schedules/555535#/schedule/ iLabs calendar] (training required)&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
The MiSeq i100 uses XLEAP-SBS chemistry on a patterned (CMOS nanowell) flowcell and is the BMC&#039;s walkup-capable instrument. It supports the longest read lengths of any instrument in the center (up to 1000 nt), making it ideal for amplicon panels, 16S rRNA surveys, validation runs, and other applications where read length matters more than throughput.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kits available:&#039;&#039;&#039; 100 nt (25M, 100M), 300 nt (5M, 25M, 100M), 600 nt (5M, 25M, 50M), 1000 nt (25M). Run times range from under 4 hours (25M 100 nt) to ~24 hours (100M 300 nt).&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Walkup service&#039;&#039;&#039; is not available to external users. Runs must be scheduled in the [https://mit.ilabsolutions.com/schedules/555535#/schedule/ iLabs calendar]. Server training and storage access on BMC servers is required.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom sequencing primers:&#039;&#039;&#039; At least 15 µL of each primer type at 100 µM must be provided per flowcell. Contact [mailto:biomicro@mit.edu biomicro@mit.edu] before planning a custom library prep.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thanks to:&#039;&#039;&#039; MIT VPR, Drs. Gene Li, Michael Birnbaum, Dept. of Biology, Scott Ritterbush &#039;89 SM &#039;92&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== MiSeq classic ===&lt;br /&gt;
&lt;br /&gt;
The MiSeq classic uses 4-color SBS chemistry on a non-patterned (random cluster) flowcell. It is available for users with established protocols on v2/v3 chemistry. We maintain minimal reagent stocks so turn around times may vary.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
 ! Kit&lt;br /&gt;
 ! Approx. reads&lt;br /&gt;
 ! Notes&lt;br /&gt;
 |-&lt;br /&gt;
 | 70 nt (V2) || ~15M || 30 or 70 SE&lt;br /&gt;
 |-&lt;br /&gt;
 | 150 nt (V3) || ~25M || 75 PE&lt;br /&gt;
 |-&lt;br /&gt;
 | 300 nt (V2) || ~15M || 150 PE&lt;br /&gt;
 |-&lt;br /&gt;
 | 500 nt (V2) || ~15M || 250 PE&lt;br /&gt;
 |-&lt;br /&gt;
 | 600 nt (V3) || ~25M || 300 PE&lt;br /&gt;
 |-&lt;br /&gt;
 | 500 nt NANO || ~1M || Reduced output run&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[MIT:Pricing]] · [[BioMicroCenter:Pricing]] for kit pricing. Custom sequencing primers follow the same submission guidelines as the MiSeq i100: at least 15 µL at 100 µM per primer type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Donor information for MiSeq classic is not recorded in current source pages. Please update if known. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════ ELEMENT BIOSCIENCES ═══════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Element Biosciences ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;ELEMENT&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center operates an [https://www.elementbiosciences.com/products/aviti24 AVITI24] from Element Biosciences. The AVITI24 uses Element&#039;s proprietary [https://www.elementbiosciences.com/resources/avidity-sequencing Avidity Base Chemistry (ABC)], a 4-color sequencing approach that achieves high base-call accuracy (&amp;gt;80% of reads Q40+) by leveraging multivalent binding of avidites rather than single-nucleotide incorporation. The random flowcell and rolling-circle amplification approach produce low levels of index hopping and optical duplicates compared to patterned-flowcell instruments. Beyond standard NGS, the AVITI24 supports [https://www.elementbiosciences.com/products/aviti24/cytoprofiling Teton CytoProfiling] for direct in-cell co-detection of RNA, protein, and morphology — see [[BioMicroCenter:Spatial|Spatial Services]] for details.&lt;br /&gt;
&lt;br /&gt;
=== AVITI24 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:370px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
 ! Service&lt;br /&gt;
 ! Element Sequencing&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBMISSION || Illumina (P5/P7) libraries&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN VOLUME || 15 µL&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN CONCENTRATION || 2 nM&lt;br /&gt;
 |-&lt;br /&gt;
 | INCLUDED SERVICES&lt;br /&gt;
 |&lt;br /&gt;
* Quality Control: Fragment Analyzer and qPCR&lt;br /&gt;
* Element Sequencing&lt;br /&gt;
* Demultiplexing&lt;br /&gt;
 |-&lt;br /&gt;
 | ADDITIONAL SERVICES ||&lt;br /&gt;
* Quality Control&lt;br /&gt;
* Element library preparation&lt;br /&gt;
 |-&lt;br /&gt;
 | DATA FORMATS&lt;br /&gt;
 |&lt;br /&gt;
* FASTQ (stored 1 year)&lt;br /&gt;
 |-&lt;br /&gt;
 | QUALITY CONTROL&lt;br /&gt;
 |&lt;br /&gt;
* [https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ FASTQC]&lt;br /&gt;
* Basic run metrics (alignment rate, complexity)&lt;br /&gt;
* Basic RNAseq metrics (where applicable)&lt;br /&gt;
* Basic paired end metrics (where applicable)&lt;br /&gt;
* Contamination checks&lt;br /&gt;
 |-&lt;br /&gt;
 | PRICING || [[MIT:Pricing]] · [[BioMicroCenter:Pricing]]&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBMISSION&lt;br /&gt;
 |&lt;br /&gt;
* MIT – [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 iLabs]&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kits and run times:&#039;&#039;&#039;&lt;br /&gt;
* 75 PE (150 nt total): ~24 hours, ~400M reads/lane&lt;br /&gt;
* 150 PE (300 nt total): ~38 hours, ~400M reads/lane&lt;br /&gt;
* 300 PE (600 nt total): ~60 hours, ~200M reads (single lane only)&lt;br /&gt;
&lt;br /&gt;
Each flowcell has two independently-addressable lanes. Both lanes must be loaded to run a flowcell, but each can carry a different library pool. 300PE kits are single-lane only.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anchors:&#039;&#039;&#039; The BMC runs P5/P7-anchored (Illumina Freestyle) libraries as standard. Element Adept (SP5/SP27) libraries are also supported but require a 5′-phosphate on the forward strand for circularization — contact [mailto:biomicro@mit.edu biomicro@mit.edu] before preparing Adept libraries.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indexing:&#039;&#039;&#039; Index orientation differs from standard Illumina: indexes are read from antisense primers with the P7-side first (index 1). Provide index sequences &#039;&#039;&#039;as read&#039;&#039;&#039; on the instrument, not as ordered. For dual-indexed libraries this is typically antisense to the ordered oligo sequence.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Custom primers:&#039;&#039;&#039; 70 µL at 100 µM for Read 1; 40 µL at 100 µM for all other reads. Custom primers must not interfere with other users&#039; samples in the same lane.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimum read guarantee:&#039;&#039;&#039; Guaranteed if (a) BMC performed QC, (b) library diversity is high especially in the first 5 bases of Read 1, and (c) concentration ≥ 2 nM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thanks to:&#039;&#039;&#039; Element Biosciences; Scott Ritterbush&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════ SINGULAR GENOMICS ════════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Singular Genomics ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;SINGULAR&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BioMicro Center operates a [https://www.singulargenomics.com G4] from Singular Genomics. The G4 uses a 4-color SBS chemistry on a patterned flowcell and delivers index-hopping rates comparable to non-patterned Illumina instruments (HiSeq/GAIIx level) — substantially lower than X-Amp patterned flowcells. This makes it a practical choice for experiments that do not require UDIs. The G4 supports four independently-addressable lanes per flowcell and up to four flowcells per run, offering per-lane flexibility at competitive per-lane cost.&lt;br /&gt;
&lt;br /&gt;
=== G4 ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
 | style=&amp;quot;width:370px;&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
 ! Service&lt;br /&gt;
 ! Singular G4 Sequencing&lt;br /&gt;
 |-&lt;br /&gt;
 | INPUT || Illumina (P5/P7) libraries&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN VOLUME || 12 µL&lt;br /&gt;
 |-&lt;br /&gt;
 | MIN CONCENTRATION || 4 nM&lt;br /&gt;
 |-&lt;br /&gt;
 | INCLUDED SERVICES&lt;br /&gt;
 |&lt;br /&gt;
* Quality Control: Fragment Analyzer and qPCR&lt;br /&gt;
* Pool conversion: P5/P7 → S1/S2 by PCR&lt;br /&gt;
* Singular Sequencing&lt;br /&gt;
* Demultiplexing&lt;br /&gt;
 |-&lt;br /&gt;
 | ADDITIONAL SERVICES ||&lt;br /&gt;
* Quality Control&lt;br /&gt;
* Singular library preparation&lt;br /&gt;
 |-&lt;br /&gt;
 | DATA FORMATS&lt;br /&gt;
 |&lt;br /&gt;
* FASTQ (stored 1 year)&lt;br /&gt;
 |-&lt;br /&gt;
 | QUALITY CONTROL&lt;br /&gt;
 |&lt;br /&gt;
* [https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ FASTQC]&lt;br /&gt;
* Basic run metrics (alignment rate, complexity)&lt;br /&gt;
* Basic RNAseq metrics (where applicable)&lt;br /&gt;
* Contamination checks&lt;br /&gt;
 |-&lt;br /&gt;
 | PRICING || [[MIT:Pricing]] · [[BioMicroCenter:Pricing]]&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBMISSION&lt;br /&gt;
 |&lt;br /&gt;
* MIT – [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 iLabs]&lt;br /&gt;
 |-&lt;br /&gt;
|}&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kits and run times:&#039;&#039;&#039;&lt;br /&gt;
* 50 PE (100 nt total): ~11 hours, ~100M reads/lane&lt;br /&gt;
* 150 PE (300 nt total): ~24 hours, ~100M reads/lane&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Library submission:&#039;&#039;&#039; Submit standard Illumina (P5/P7) libraries. The BMC converts the pool to S1/S2 anchors by PCR prior to sequencing — do &#039;&#039;&#039;not&#039;&#039;&#039; submit S1/S2-anchored libraries directly.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indexing:&#039;&#039;&#039; After conversion, indexes are read from S1 (index 1) then S2 (index 2), in the &#039;&#039;&#039;same orientation&#039;&#039;&#039; as ordered in classical Illumina library preps. Dual 8-nt indexes are required for all lane-by-lane sequencing. Custom index primers are not permitted.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lane by lane:&#039;&#039;&#039;&lt;br /&gt;
* Must be 50 PE or 150 PE dual-indexed.&lt;br /&gt;
* Pool must be compatible with TruSeq, Nextera, smRNA, or Solexa sequencing primers.&lt;br /&gt;
* 4 lanes per flowcell; up to 4 flowcells per run.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Minimum read guarantee:&#039;&#039;&#039; Guaranteed if (a) BMC performed QC, (b) no custom primers, and (c) concentration ≥ 4 nM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thanks to:&#039;&#039;&#039; Singular Genomics&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PLATFORM COMPARISON ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;PLATFORM_COMPARISON&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#dce8f5;&amp;quot; | SPEC&lt;br /&gt;
! style=&amp;quot;background:#e8f0fe;&amp;quot; | NovaSeqX Plus&lt;br /&gt;
! style=&amp;quot;background:#e6f4ea;&amp;quot; | Element AVITI24&lt;br /&gt;
! style=&amp;quot;background:#fff3e0;&amp;quot; | Singular G4&lt;br /&gt;
! style=&amp;quot;background:#fff3e0;&amp;quot; | MiSeq i100&lt;br /&gt;
! style=&amp;quot;background:#fff3e0;&amp;quot; | MiSeq classic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Read lengths&#039;&#039;&#039;&lt;br /&gt;
| 100 nt, 300 nt&lt;br /&gt;
| 75 PE, 150 PE, 300 PE&lt;br /&gt;
| 50 PE, 150 PE&lt;br /&gt;
| 100–1000 nt&lt;br /&gt;
| 70–600 nt&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Flowcell type&#039;&#039;&#039;&lt;br /&gt;
| Patterned (X-Amp)&lt;br /&gt;
| Random&lt;br /&gt;
| Patterned&lt;br /&gt;
| Patterned (CMOS nanowell)&lt;br /&gt;
| Random&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chemistry&#039;&#039;&#039;&lt;br /&gt;
| 2-color XLEAP-SBS (G=dark)&lt;br /&gt;
| 4-color avidity SBS&lt;br /&gt;
| 4-color SBS&lt;br /&gt;
| 2-color XLEAP-SBS (G=dark)&lt;br /&gt;
| 4-color SBS&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Index hopping&#039;&#039;&#039;&lt;br /&gt;
| High — UDIs required&lt;br /&gt;
| Low — UDIs not needed&lt;br /&gt;
| Low (patterned, non-XLEAP)&lt;br /&gt;
| Present — UDIs recommended&lt;br /&gt;
| Low (non-patterned)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Low-complexity libraries&#039;&#039;&#039;&lt;br /&gt;
| Struggles&lt;br /&gt;
| Handles well&lt;br /&gt;
| Handles well&lt;br /&gt;
| Struggles&lt;br /&gt;
| Handles well&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Lane flexibility&#039;&#039;&#039;&lt;br /&gt;
| Lane-by-lane (full FC priority)&lt;br /&gt;
| Lane-by-lane&lt;br /&gt;
| Lane-by-lane&lt;br /&gt;
| Full flowcell only&lt;br /&gt;
| Full flowcell only&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Walkup&#039;&#039;&#039;&lt;br /&gt;
| No (collaboration)&lt;br /&gt;
| No&lt;br /&gt;
| No&lt;br /&gt;
| Yes (training required)&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Illumina lib compatible&#039;&#039;&#039;&lt;br /&gt;
| Yes (native)&lt;br /&gt;
| Yes (P5/P7 Freestyle)&lt;br /&gt;
| Yes — BMC converts pool by PCR&lt;br /&gt;
| Yes (native)&lt;br /&gt;
| Yes (native)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Donated / supported by&#039;&#039;&#039;&lt;br /&gt;
| Local core collaboration&lt;br /&gt;
| Element Biosciences; Scott Ritterbush&lt;br /&gt;
| Singular Genomics&lt;br /&gt;
| MIT VPR; Drs. Gene Li, Michael Birnbaum; Dept. of Biology; Scott Ritterbush &#039;89 SM &#039;92&lt;br /&gt;
| &amp;lt;!-- unknown: please update --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQ&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== My library has low complexity. Which platform should I use? ===&lt;br /&gt;
Avoid the NovaSeqX Plus and MiSeq i100 — both use 2-color XLEAP-SBS chemistry where G bases are inferred from signal absence, making low-diversity early cycles prone to run failure. The AVITI24, Singular G4, and MiSeq classic all use 4-color chemistry and handle low-complexity libraries well. Always contact [mailto:biomicro@mit.edu biomicro@mit.edu] before submitting unconventional libraries.&lt;br /&gt;
&lt;br /&gt;
=== Do I need unique dual indexes (UDIs)? ===&lt;br /&gt;
* &#039;&#039;&#039;NovaSeqX Plus&#039;&#039;&#039; – Yes, required (patterned X-Amp flowcell).&lt;br /&gt;
* &#039;&#039;&#039;MiSeq i100&#039;&#039;&#039; – Recommended (patterned CMOS flowcell).&lt;br /&gt;
* &#039;&#039;&#039;AVITI24&#039;&#039;&#039; – Not required; index hopping is low on random flowcells.&lt;br /&gt;
* &#039;&#039;&#039;Singular G4&#039;&#039;&#039; – Not required; patterned but does not use X-Amp chemistry; hopping is on par with HiSeq/GAIIx.&lt;br /&gt;
* &#039;&#039;&#039;MiSeq classic&#039;&#039;&#039; – Not required; non-patterned flowcell has low hopping.&lt;br /&gt;
&lt;br /&gt;
=== How long is my data stored? ===&lt;br /&gt;
* FASTQ files: 1 year for AVITI24, Singular G4, MiSeq i100.&lt;br /&gt;
* BCL files (MiSeq): 30 days.&lt;br /&gt;
* Long-term storage is available; see [[BioMicroCenter:Pricing]] for active storage and tape archive options.&lt;br /&gt;
&lt;br /&gt;
=== What quality control is included? ===&lt;br /&gt;
All runs include a final pool QC (RT-PCR and Fragment Analyzer) and post-sequencing QC (FastQC, run metrics, alignment rate, complexity, RNAseq metrics where applicable, contamination checks). Users who opt out of pre-sequencing QC by providing their own concentration forfeit read guarantees.&lt;br /&gt;
&lt;br /&gt;
=== Can I pool samples from multiple labs? ===&lt;br /&gt;
Yes, but users are responsible for minimizing index cross-contamination and [https://www.illumina.com/science/education/minimizing-index-hopping.html index crosstalk]. The BMC does not combine projects within a lane.&lt;br /&gt;
&lt;br /&gt;
== SUBMISSION ==&lt;br /&gt;
&lt;br /&gt;
All sequencing is submitted through [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 iLabs]. External users should contact [mailto:biomicro@mit.edu biomicro@mit.edu] directly. Samples must meet the minimum volume and concentration requirements listed above; coordinate with BMC staff before sending non-standard submissions.&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=131506</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=131506"/>
		<updated>2026-05-12T15:50:04Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=131505</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=131505"/>
		<updated>2026-05-12T15:44:55Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:People&amp;diff=131446</id>
		<title>BioMicroCenter:People</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:People&amp;diff=131446"/>
		<updated>2026-05-08T19:11:13Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* WET LAB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&amp;lt;!-- Tables have been created with pipe syntax to present this information --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BioMicro Center Staff ==&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SL_07.jpg|right|100px]]&lt;br /&gt;
[[User:Stuart S. Levine|&#039;&#039;&#039;Stuart Levine&#039;&#039;&#039;]] - Director&lt;br /&gt;
* Phone: 617-452-2949&lt;br /&gt;
* Email: slevine@mit.edu&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- This creates a centered table that is just a single cell 350 wide with a purple border --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WET LAB ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This centered table has no border and a general height per row of 150xp --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JHG.jpg|right|100px]]&lt;br /&gt;
[[User:Johan_Gibcus|&#039;&#039;&#039;Johan Gibcus&#039;&#039;&#039;]], Ph.D., P.M.P - Project Manager&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: gibcus@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AlexS.jpg|right|100px]]&lt;br /&gt;
[[User:Alexei|&#039;&#039;&#039;Alex Stortchevoi&#039;&#039;&#039;]], Ph.D. - Research Scientist in Biology&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: alyosha@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:NKBMC04082024.jpg|right|100px]]&lt;br /&gt;
[[User:Noelani Kamelamela|&#039;&#039;&#039;Noelani Kamelamela&#039;&#039;&#039;]] - Lab Manager&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: hilo1@mit.edu&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Hallee_ChristopherS.jpg|right|100px]]&lt;br /&gt;
[[User:Challee|&#039;&#039;&#039;Christopher Hallee&#039;&#039;&#039;]] - Sequencing Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: challee@mit.edu&lt;br /&gt;
Illumina Sequencing and Quality Control Specialist&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Avanyish.jpg|right|100px]]&lt;br /&gt;
[[User:Avanyish|&#039;&#039;&#039;Avanyish Toniappa&#039;&#039;&#039;]] - Automation Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: toniappa@mit.edu&lt;br /&gt;
Automation and Library Preparation Specialist&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Skylarhebert.JPEG|right|100px]]&lt;br /&gt;
[[User:Skylar|&#039;&#039;&#039;Sky Hebert&#039;&#039;&#039;]] - Library Preparation Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: shebert@mit.edu&lt;br /&gt;
Library Preparation and ONT Specialist&lt;br /&gt;
&amp;lt;!--end of this line --&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:cstj.jpg|right|100px]]&lt;br /&gt;
[[User:cstjohn|&#039;&#039;&#039;Caroline St John&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: cstjohn@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Uday.jpeg|right|100px]]&lt;br /&gt;
Uday Sethi - Co-op&lt;br /&gt;
* Email: udays108@mit.edu&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- Everything in this table has to be entered before the |}, and now enough has been commented so that anyone can make sense of this --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[BioMicroCenter:BioInformaticsStaff|INFORMATICS LAB]] ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:VincentBMC.jpg‎|right|100px]]&lt;br /&gt;
[[User:Vincent L. Butty|&#039;&#039;&#039;Vincent Butty&#039;&#039;&#039;]], M.D., Ph.D. - BioInformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: vbutty@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Duaduan Ma.jpg‎|right|100px]]&lt;br /&gt;
[[User:Duanduan Ma|&#039;&#039;&#039;Duanduan Ma&#039;&#039;&#039;]], Ph.D. - BioInformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: duan@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image: yann.jpeg|right|100px]]&lt;br /&gt;
[[User:yanvrb|&#039;&#039;&#039;Yann Vanrobaeys&#039;&#039;&#039;]], Ph.D. - Bioinformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: yannvrb@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Charlie_Demurjian_headshot.jpg|right|100px]]&lt;br /&gt;
[https://www.linkedin.com/in/cdemurjian/ &#039;&#039;&#039;Charlie Demurjian&#039;&#039;&#039;] - Lead Data Specialist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: cdemu@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:fl13.jpeg|right|100px]]&lt;br /&gt;
[[User:taishajo|&#039;&#039;&#039;Taisha Joseph-Risch&#039;&#039;&#039;]] - Research Data Specialist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: taishajo@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Huiming_Ding.JPG|right|100px]]&lt;br /&gt;
[[User:Huiming Ding|&#039;&#039;&#039;Huiming Ding&#039;&#039;&#039;]], Ph.D. - Research Computing Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: huiming@mit.edu&lt;br /&gt;
&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:allen.jpg|right|100px]]&lt;br /&gt;
[[User:Asoberan|&#039;&#039;&#039;Allen Soberanes&#039;&#039;&#039;]] - Systems and IT Administrator&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: asoberan@mit.edu&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== BioMicro Center Alumni ==&lt;br /&gt;
=== STAFF ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pradhan-Dikshant.jpg|right|100px]] &lt;br /&gt;
[[User:Dpradhan|&#039;&#039;&#039;Dikshant Pradhan&#039;&#039;&#039;]]&lt;br /&gt;
* Start Date - End Date &lt;br /&gt;
* Research Specialist&lt;br /&gt;
* Email: dpradhan@mit.edu&lt;br /&gt;
* Currently in graduate school at BU&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:180611_Sam.jpg|right|100px]]&lt;br /&gt;
[[User:Sam Mildrum|&#039;&#039;&#039;Sam Mildrum&#039;&#039;&#039;]]  &lt;br /&gt;
* June 2018 - September 2022 &lt;br /&gt;
* Automation Specialist&lt;br /&gt;
* Email: sam.mildrum@maine.edu&lt;br /&gt;
* Currently Senior Research Associate at Omega Therapeutics&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:P2130493.JPG|right|100px]]&lt;br /&gt;
[[User:Barbara Karampalas|&#039;&#039;&#039;Barbara Karampalas&#039;&#039;&#039;]]&lt;br /&gt;
* Jan 2011 - May 2012&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Currently Lab Manager for Dr. Chris Voigt&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:kthai.jpg|right|100px]]&lt;br /&gt;
[[User:Kevin K. Thai|&#039;&#039;&#039;Kevin Thai&#039;&#039;&#039;]]&lt;br /&gt;
* Sept 2009 - July 2012&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* PhD Biology at MIT 2017&lt;br /&gt;
* Currently Scientist at Amgen&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Sinapius.jpg|right|100px]]&lt;br /&gt;
[[User:Ryan Sinapius|&#039;&#039;&#039;Ryan Sinapius&#039;&#039;&#039;]]&lt;br /&gt;
* Nov 2010 - Nov 2012&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* Currently Research Associate at [http://www.cellsignal.com Cell Signaling Technology]&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rabo.jpg|right|100px]] &lt;br /&gt;
[[User:Ryan Abo|&#039;&#039;&#039;Ryan Abo&#039;&#039;&#039;]] &lt;br /&gt;
* Apr 2012- Apr 2013&lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* Currently Sr Scientist at Ribon Therapeutics&lt;br /&gt;
&amp;lt;!--end of this line --&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Scott_Morin.jpg|right|100px]]&lt;br /&gt;
[[User:Scott J. Morin|&#039;&#039;&#039;Scott J. Morin&#039;&#039;&#039;]]&lt;br /&gt;
*July 2012 - June 2014&lt;br /&gt;
*Technical Assistant&lt;br /&gt;
*DO at University of New England College of Osteopathic Medicine 2014&lt;br /&gt;
*Currently Resident Physician at Mt Auburn Hospital&lt;br /&gt;
* Email: smorin89@gmail.com&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Shmulik Motola.jpg|right|100px]]&lt;br /&gt;
[[User:Shmulik Motola|&#039;&#039;&#039;Shmulik Motola&#039;&#039;&#039;]] &lt;br /&gt;
* January 2012 - October 2015&lt;br /&gt;
* Lab manager&lt;br /&gt;
* Currently Core Director, G-INCPM at Weizmann Institute &lt;br /&gt;
* Email: shmulik.motola@weizmann.ac.il&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Vidya_S.png|right|100px]]&lt;br /&gt;
[[User:Vidya Subramanian|&#039;&#039;&#039;Vidya Subramanian&#039;&#039;&#039;]]&lt;br /&gt;
* June 2015 - April 2016&lt;br /&gt;
* Research Scientist&lt;br /&gt;
* Currently Research Scientist II at Broad Institute &lt;br /&gt;
* Email: &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:miniterm21.jpg|right|100px]]&lt;br /&gt;
[[User:Leigh J Manley|&#039;&#039;&#039;Leigh Manley&#039;&#039;&#039;]]&lt;br /&gt;
* April 2014 - May 2016&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* PhD UTSW&lt;br /&gt;
* Email: leigh.j.manley@gmail.com&lt;br /&gt;
 |width=25|&lt;br /&gt;
&amp;lt;!-- This creates an empty cell 25 wide with no border and this is the second cell in the row --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Manlinlab7.jpg|right|100px]]&lt;br /&gt;
[[User:Manlin Luo|&#039;&#039;&#039;Manlin Luo&#039;&#039;&#039;]] &lt;br /&gt;
* 1997-2016&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Retired&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:MGravina.jpg|right|80px]]&lt;br /&gt;
[[User:Michael Gravina|&#039;&#039;&#039;Michael Gravina&#039;&#039;&#039;]] &lt;br /&gt;
* December 2010 - August 2016&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Currently Research Associate at OSU&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:jie.jpg‎|right|100px]] &lt;br /&gt;
[[User:Jie Wu|&#039;&#039;&#039;Jie Wu&#039;&#039;&#039;]] &lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* September 2013-November 2016&lt;br /&gt;
* Currently Sr Research Scientist at Phillips&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:IMG_0921.jpg|right|100px]]&lt;br /&gt;
[[User:Fangming Zheng|&#039;&#039;&#039;Fangming Zheng&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July 2016-June 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Jon Penterman.jpg|right|100px]]&lt;br /&gt;
[[User:Jon Penterman|&#039;&#039;&#039;Jon Penterman&#039;&#039;&#039;]] &lt;br /&gt;
* Lab Manager&lt;br /&gt;
* December 2015-November 2017&lt;br /&gt;
* Currently Scientist at CRISPR Therapeutics&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Index.jpg|right|100px]]&lt;br /&gt;
[[User:Namita Wadke|&#039;&#039;&#039;Namita Wadke&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Assistant: 2016-2018&lt;br /&gt;
* Currently at Aldatu Biosciences&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Vineet3.jpeg|right|125px]]&lt;br /&gt;
[[User:Vineet Vishwanath|&#039;&#039;&#039;Vineet Vishwanath&#039;&#039;&#039;]] &lt;br /&gt;
*Sequencing and Quality Control Specialist&lt;br /&gt;
*August 2018-August 2020&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Austinh.jpg|right|100px]]&lt;br /&gt;
[[User:Austin Hendricks|&#039;&#039;&#039;Austin Hendricks&#039;&#039;&#039;]] &lt;br /&gt;
* Coop: 2013&lt;br /&gt;
* Automation Technologist: 2015-2021&lt;br /&gt;
* Currently Grad Student at UNM&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ChloeM.jpg|right|100px]]&lt;br /&gt;
[[User:Chloe Morgan|&#039;&#039;&#039;Chloe Morgan&#039;&#039;&#039;]] &lt;br /&gt;
* Senior Research Support Associate: 2019-2021&lt;br /&gt;
* MD Tufts University Medical School&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Fugen.jpg|right|100px]]&lt;br /&gt;
[[User:Fugen Li|&#039;&#039;&#039;Fugen Li&#039;&#039;&#039;]]&lt;br /&gt;
* July 2010 - Dec 2011&lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* Currently Sr Scientist at Sanofi-Aventis&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Stephen.JPG|right|100px]] &lt;br /&gt;
[[User:Stephen Goldman|&#039;&#039;&#039;Stephen Goldman&#039;&#039;&#039;]] &lt;br /&gt;
* System Administrator&lt;br /&gt;
* 1962/11/26-2022/09/30&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ali.jpg|right|100px]]&lt;br /&gt;
[[User:Allison Perrotta|&#039;&#039;&#039;Allison Perrotta&#039;&#039;&#039;]] &lt;br /&gt;
* Nov 2008 - Sep 2010&lt;br /&gt;
* Technical Assistant &lt;br /&gt;
* PhD Biological Engineering at MIT 2017&lt;br /&gt;
* Currently FAS II at Illumina&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[User:Jingzhi Zhu|&#039;&#039;&#039;Jingzhi Zhu&#039;&#039;&#039;]] &lt;br /&gt;
* Research Computing Specialist&lt;br /&gt;
* Email: jingzhi@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:tatum-2.jpeg|right|100px]]&lt;br /&gt;
[[User:Tmurdock|&#039;&#039;&#039;Tatum Murdock&#039;&#039;&#039;]] &lt;br /&gt;
* Automation Specialist 2021-2024&lt;br /&gt;
* Currently Grad Student at Vanderbilt University&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SKR_BMC.jpg|right|100px]]&lt;br /&gt;
[[User:skeppler|&#039;&#039;&#039;Sabine Keppler Ross&#039;&#039;&#039;]] &lt;br /&gt;
* Library Preparation 2024-2025&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UROPS / COOPS ===&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AvantiShrikumar.jpg|right|100px]]&lt;br /&gt;
[[User:Avanti Shrikumar|&#039;&#039;&#039;Avanti Shrikumar&#039;&#039;&#039;]]&lt;br /&gt;
* UROP&lt;br /&gt;
* Sep 2010 - Jan 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pic.jpg|right|100px]] &lt;br /&gt;
[[User:Eris Bame|&#039;&#039;&#039;Eris Bame&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* July-Dec 2010&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ksulli.jpg|right|80px]]&lt;br /&gt;
[[User:Katherine Sullivan|&#039;&#039;&#039;Katie Sullivan&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* Jan-June 2011&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:elliott.j.jpg|right|80px]]&lt;br /&gt;
[[User:Justin Elliott|&#039;&#039;&#039;Justin Elliott&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* Jan-June 2011&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:270627 10150316369264740 594529739 9434885 4028882 n.jpg|right|100px]]&lt;br /&gt;
[[User:Kaitlyn N. Sanders|&#039;&#039;&#039;Kaitlyn Sanders&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* July-Dec 2011&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Lebowitz.j.jpg|right|100px]]&lt;br /&gt;
[[User:Jessica L. Lebowitz|&#039;&#039;&#039;Jessica Lebowitz&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2011&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Ln123.png|right|80px]]&lt;br /&gt;
[[User:Linda Nguyen|&#039;&#039;&#039;Linda Nguyen&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-June 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pictureforwebsite.JPG|right|80px]]&lt;br /&gt;
[[User:Margaret Minnig|&#039;&#039;&#039;Margaret Minnig&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Photo_for_website.JPG‎|right|80px]]&lt;br /&gt;
[[User:Kate Tracka|&#039;&#039;&#039;Kate Tracka&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2012&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:PDP2.jpg|right|80px]]&lt;br /&gt;
[[User:Paraj Patel|&#039;&#039;&#039;Paraj Patel&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-Jun 2013&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:millet.jpg|right|80px]]&lt;br /&gt;
[[User:Pierrick Millet|&#039;&#039;&#039;Pierrick Millet&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-Jun 2013&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:BMC_stockScientist.jpg|right|100px]]&lt;br /&gt;
[[User:Zach Banks|&#039;&#039;&#039;Zach Banks&#039;&#039;&#039;]] &lt;br /&gt;
* UROP&lt;br /&gt;
* &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Machado.jpg|right|100px]]&lt;br /&gt;
[[User:ENTER HERE|&#039;&#039;&#039;Ashley Machado&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* July-Dec 2013&lt;br /&gt;
Sample Prep&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Soltoff.jpg|right|100px]]&lt;br /&gt;
[[User:Alexander E. Soltoff|&#039;&#039;&#039;Alexander Soltoff&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* July-Dec 2013&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Ani_Webb.jpg|right|100px]]&lt;br /&gt;
[[User:Ani S. Webb|&#039;&#039;&#039;Ani Webb&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* Jan-June 2014&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:OWWEmblem.png|right|100px]]&lt;br /&gt;
[[User:Samuel Kaplan|&#039;&#039;&#039;Samuel Kaplan&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* Jan-June 2014&lt;br /&gt;
  |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AdamP.jpg|right|100px]]&lt;br /&gt;
[[User:Adam Perez|&#039;&#039;&#039;Adam Perez&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: perezad@mit.edu&lt;br /&gt;
Quality Control&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JonathanPicture.JPG|right|100px]]&lt;br /&gt;
[[User:Jonathan Olson|&#039;&#039;&#039;Jonathan&#039;&#039;&#039;]]&lt;br /&gt;
*Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: olsonj@mit.edu&lt;br /&gt;
Quality Control&lt;br /&gt;
|width=25|&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rachel_Stoddard.jpg|right|100px]]&lt;br /&gt;
[[User:Rachel Stoddard|&#039;&#039;&#039;Rachel Stoddard&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*June 2015-December 2015&lt;br /&gt;
 |width=25|&lt;br /&gt;
 &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rob_Freeman.png|right|100px]]&lt;br /&gt;
[[User:Robert H. Freeman|&#039;&#039;&#039;Robert Freeman&#039;&#039;&#039;]]&lt;br /&gt;
* Co -op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July 2015-January 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Image1-2.jpg|right|100px]]&lt;br /&gt;
[[User:Roberto Mennuti|&#039;&#039;&#039;Roberto Mennuti&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:20160126_102243.JPG|right|100px]]&lt;br /&gt;
[[User:Kathryn Larkin|&#039;&#039;&#039;Kathryn Larkin&#039;&#039;&#039;]] &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:20160126_102242-1.jpg|right|100px]]&lt;br /&gt;
[[User:Asa M. Budnick|&#039;&#039;&#039;Asa Budnick&#039;&#039;&#039;]] &lt;br /&gt;
* Co-op&lt;br /&gt;
* Library Preparation&lt;br /&gt;
* January-July 2016&lt;br /&gt;
  |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Kevin_Lema.jpg|right|100px]]&lt;br /&gt;
[[User:Kevin Lema|&#039;&#039;&#039;Kevin Lema&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:alexis_hester.JPG|right|100px]]&lt;br /&gt;
[[User:Alexis Hester|&#039;&#039;&#039;Alexis Hester&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Coriposner.jpg|right|100px]]&lt;br /&gt;
[[User:Cori Posner|&#039;&#039;&#039;Cori Posner&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:CharlieMintz.jpg|right|100px]]&lt;br /&gt;
[[User:Charlie Mintz|&#039;&#039;&#039;Charlie Mintz&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
&amp;lt;!--beginning of new line--&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Meghna.jpeg|right|100px]]&lt;br /&gt;
[[User:Meghna Kuppuraju|&#039;&#039;&#039;Meghna Kuppuraju&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Viren.png|right|100px]]&lt;br /&gt;
[[User:Viren Kumar Dayal |&#039;&#039;&#039;Viren Kumar Dayal&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Duncan.jpg|right|100px]]&lt;br /&gt;
[[User:Duncan Andrew Locke|&#039;&#039;&#039;Duncan Locke&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: lockedu@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2017&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[User: Abigail Blake|&#039;&#039;&#039;Abigail Blake&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ablake@mit.edu&lt;br /&gt;
Specialty: Quality Control&lt;br /&gt;
Fall 2017&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:A.jpg|right|100px]]&lt;br /&gt;
[[User:Meghan Masotti|&#039;&#039;&#039;Meghan Masotti&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: mmasotti@mit.edu&lt;br /&gt;
Specialty: Quality Control &amp;amp;Sample Prep.&lt;br /&gt;
Spring 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:EMILY.jpg|right|100px]]&lt;br /&gt;
[[User:Emily Evangelista|&#039;&#039;&#039;Emily Evangelista&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2018&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:INSERT|right|100px]]&lt;br /&gt;
[[User:Melissa Franco|&#039;&#039;&#039;Melissa Franco&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:Kr124325.jpg |right|100px]]&lt;br /&gt;
[[User:Orourke.k|&#039;&#039;&#039;Kelly O&#039;Rourke&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*January-July 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:JULIA.jpg|right|100px]]&lt;br /&gt;
[[User:Julia Breed|&#039;&#039;&#039;Julia Breed&#039;&#039;&#039;]] - COOP &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality control&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:WillPhoto.jpeg|right|100px]]&lt;br /&gt;
[[User:William Bonaventura|&#039;&#039;&#039;William Bonaventura&#039;&#039;&#039;]] - COOP &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:JOSEPH.jpg |right|100px]]&lt;br /&gt;
[[User:Joekatz|&#039;&#039;&#039;Joseph Katz&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:Dang.png|right|100px]]&lt;br /&gt;
[[User:Dang-Huy Nguyen|&#039;&#039;&#039;Dang-Huy Nguyen&#039;&#039;&#039;]] - COOP Spring 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: dhnguyen@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Spring 2019&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:VindyaPhoto.jpeg|right|100px]]&lt;br /&gt;
[[User:Vindya Tumati|&#039;&#039;&#039;Vindya Tumati&#039;&#039;&#039;]] - COOP Spring 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: vtumati@mit.edu&lt;br /&gt;
Specialty: Quality Control&lt;br /&gt;
Spring 2019&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:taeykim.jpg|right|100px]]&lt;br /&gt;
[[User:Taeyun Kim|&#039;&#039;&#039;Taeyun Kim&#039;&#039;&#039;]] - COOP Fall 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: taeykim@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2019&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Simrah.jpg|right|100px]]&lt;br /&gt;
[[User:Simrah Ahmed|&#039;&#039;&#039;Simrah Ahmed&#039;&#039;&#039;]] - COOP Fall 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ahmedsim@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2019&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Thy.png|right|100px]]&lt;br /&gt;
* Janssy Garcia - Co-op Spring 2020&lt;br /&gt;
* Thy Nguyen (pictured) - Co-op Spring 2020&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Merline.jpg|right|100px]]&lt;br /&gt;
[[User:Challee|&#039;&#039;&#039;Merline Senat&#039;&#039;&#039;]] - Co-op Fall 2020&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: merline@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Devin.jpg|right|100px]]&lt;br /&gt;
[[User:Devin|&#039;&#039;&#039;Devin Chatterjee&#039;&#039;&#039;]] - Co-op Fall 2020&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: dchatt@mit.edu&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Mali.jpg|right|100px]]&lt;br /&gt;
[[User:Mali|&#039;&#039;&#039;Mali DiMeo&#039;&#039;&#039;]] - Co-op Spring 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: mdimeo@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Tram.jpg|right|100px]]&lt;br /&gt;
[[User:Tram|&#039;&#039;&#039;Tram Huynh&#039;&#039;&#039;]] - Co-op Spring 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: thuynh@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Owen.jpg|right|100px]]&lt;br /&gt;
[[User:Owen|&#039;&#039;&#039;Owen Spencer&#039;&#039;&#039;]] - Co-op Fall 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ospencer@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Victoria.jpg|right|100px]]&lt;br /&gt;
[[User:Victoria|&#039;&#039;&#039;Victoria Russo&#039;&#039;&#039;]] - Co-op Fall 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: russov@mit.edu &lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:baifan-1.jpg|right|100px]]&lt;br /&gt;
[[User:Baifan|&#039;&#039;&#039;Baifan Zhou&#039;&#039;&#039;]] - Co-op Fall 2022&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: baifan@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:egihasani.jpg|right|100px]]&lt;br /&gt;
[[User:Egi|&#039;&#039;&#039;Egi Hasani&#039;&#039;&#039;]] - Co-op Fall 2022&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ehasani@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JakeS.jpg|right|100px]]&lt;br /&gt;
[[User:Jake3784|&#039;&#039;&#039;Jake Schissel&#039;&#039;&#039;]] - FAIRdata Co-op Fall 2022&lt;br /&gt;
* Email: jschisse@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SalmaAlawi.png|right|100px]]&lt;br /&gt;
[[User:Salma|&#039;&#039;&#039;Salma Alawi&#039;&#039;&#039;]] - Data Co-op Spring 2023&lt;br /&gt;
* Email: salawi@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Liammccoart.jpg|right|100px]]&lt;br /&gt;
[[User:Liam|&#039;&#039;&#039;Liam McCoart&#039;&#039;&#039;]] - Co-op Spring 2023&lt;br /&gt;
* Email: mccoart@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Snigdha.jpg|right|100px]]&lt;br /&gt;
[[User:Snigdha|&#039;&#039;&#039;Snigdha Patra&#039;&#039;&#039;]] - Co-op Spring 2023&lt;br /&gt;
* Email: patras@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Simrensamba.jpg|right|100px]]&lt;br /&gt;
[[User:Simren|&#039;&#039;&#039;Simren Samba&#039;&#039;&#039;]] - Co-op Fall 2023&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ssamba@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ENiemiec.jpeg|right|100px]]&lt;br /&gt;
[[User:Elizabeth|&#039;&#039;&#039;Elizabeth Niemiec&#039;&#039;&#039;]] - Co-op Fall 2023&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: eniemiec@mit.edu&lt;br /&gt;
&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:EuniceK.jpg|right|100px]]&lt;br /&gt;
[[User:kooe|&#039;&#039;&#039;Eunice Koo&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op- Data - Fall 2023&lt;br /&gt;
* Email: kooe@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:BMClindatran.jpeg|right|100px]]&lt;br /&gt;
[[User:lttran|&#039;&#039;&#039;Linda Tran&#039;&#039;&#039;]] - Co-op Spring 2024&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: lttran@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Gideon_mitcoop.jpeg|right|100px]]&lt;br /&gt;
[[User:Gideon|&#039;&#039;&#039;Gideon Donahue&#039;&#039;&#039;]] - Co-op Spring 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: gideon03@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Neil_.jpeg|right|100px]]&lt;br /&gt;
[[User:Neil|&#039;&#039;&#039;Neil Sheth&#039;&#039;&#039;]] - Co-op Single Cell Fall 2023-Fall 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: neil98@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:jalyon.jpeg|right|100px]]&lt;br /&gt;
[[User:Jalyon|&#039;&#039;&#039;Jared Lyon&#039;&#039;&#039;]] - Drylab Co-op Spring 2024&lt;br /&gt;
* Email: jalyon@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:sara1463.jpeg|right|100px]]&lt;br /&gt;
[[User:Gideon|&#039;&#039;&#039;Sara Farinha&#039;&#039;&#039;]] - Wetlab Co-op Fall 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: sara1463@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:bolducje.jpeg|right|100px]]&lt;br /&gt;
[[User:bolducnu.jpg|&#039;&#039;&#039;Jessica Bolduc&#039;&#039;&#039;]] - Wetlab Co-op Fall 2024&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: bolducje@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:frankie.jpeg|right|100px]]&lt;br /&gt;
[[User:Jalyon|&#039;&#039;&#039;Francesca Licciardello&#039;&#039;&#039;]]&lt;br /&gt;
* Drylab Co-op Fall 2024&lt;br /&gt;
* Email: fl13@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Hannah.jpg|right|100px]]&lt;br /&gt;
[[User:hannahj4|&#039;&#039;&#039;Hannah Jackson&#039;&#039;&#039;]] - Wetlab Co-op Spring 2025&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: hannahj4@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:maddie.jpeg|right|100px]]&lt;br /&gt;
[[User:madelin9|&#039;&#039;&#039;Madeline Fiedler&#039;&#039;&#039;]] - Wetlab Co-op Spring 2025&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: madelin9@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Marley.jpg|right|100px]]&lt;br /&gt;
[[User:marleyoc|&#039;&#039;&#039;Marley O&#039;Connor&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: marleyoc@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:jackie.jpg|right|100px]]&lt;br /&gt;
[[User:pottlej|&#039;&#039;&#039;Jacqueline Pottle&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: pottlej@mit.edu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:People&amp;diff=131445</id>
		<title>BioMicroCenter:People</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:People&amp;diff=131445"/>
		<updated>2026-05-08T19:10:57Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* WET LAB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&amp;lt;!-- Tables have been created with pipe syntax to present this information --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BioMicro Center Staff ==&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SL_07.jpg|right|100px]]&lt;br /&gt;
[[User:Stuart S. Levine|&#039;&#039;&#039;Stuart Levine&#039;&#039;&#039;]] - Director&lt;br /&gt;
* Phone: 617-452-2949&lt;br /&gt;
* Email: slevine@mit.edu&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- This creates a centered table that is just a single cell 350 wide with a purple border --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WET LAB ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This centered table has no border and a general height per row of 150xp --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JHG.jpg|right|100px]]&lt;br /&gt;
[[User:Johan_Gibcus|&#039;&#039;&#039;Johan Gibcus&#039;&#039;&#039;]], Ph.D.,P.M.P - Project Manager&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: gibcus@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AlexS.jpg|right|100px]]&lt;br /&gt;
[[User:Alexei|&#039;&#039;&#039;Alex Stortchevoi&#039;&#039;&#039;]], Ph.D. - Research Scientist in Biology&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: alyosha@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:NKBMC04082024.jpg|right|100px]]&lt;br /&gt;
[[User:Noelani Kamelamela|&#039;&#039;&#039;Noelani Kamelamela&#039;&#039;&#039;]] - Lab Manager&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: hilo1@mit.edu&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Hallee_ChristopherS.jpg|right|100px]]&lt;br /&gt;
[[User:Challee|&#039;&#039;&#039;Christopher Hallee&#039;&#039;&#039;]] - Sequencing Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: challee@mit.edu&lt;br /&gt;
Illumina Sequencing and Quality Control Specialist&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Avanyish.jpg|right|100px]]&lt;br /&gt;
[[User:Avanyish|&#039;&#039;&#039;Avanyish Toniappa&#039;&#039;&#039;]] - Automation Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: toniappa@mit.edu&lt;br /&gt;
Automation and Library Preparation Specialist&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Skylarhebert.JPEG|right|100px]]&lt;br /&gt;
[[User:Skylar|&#039;&#039;&#039;Sky Hebert&#039;&#039;&#039;]] - Library Preparation Specialist&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: shebert@mit.edu&lt;br /&gt;
Library Preparation and ONT Specialist&lt;br /&gt;
&amp;lt;!--end of this line --&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:cstj.jpg|right|100px]]&lt;br /&gt;
[[User:cstjohn|&#039;&#039;&#039;Caroline St John&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: cstjohn@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Uday.jpeg|right|100px]]&lt;br /&gt;
Uday Sethi - Co-op&lt;br /&gt;
* Email: udays108@mit.edu&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- Everything in this table has to be entered before the |}, and now enough has been commented so that anyone can make sense of this --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[BioMicroCenter:BioInformaticsStaff|INFORMATICS LAB]] ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:VincentBMC.jpg‎|right|100px]]&lt;br /&gt;
[[User:Vincent L. Butty|&#039;&#039;&#039;Vincent Butty&#039;&#039;&#039;]], M.D., Ph.D. - BioInformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: vbutty@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Duaduan Ma.jpg‎|right|100px]]&lt;br /&gt;
[[User:Duanduan Ma|&#039;&#039;&#039;Duanduan Ma&#039;&#039;&#039;]], Ph.D. - BioInformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: duan@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image: yann.jpeg|right|100px]]&lt;br /&gt;
[[User:yanvrb|&#039;&#039;&#039;Yann Vanrobaeys&#039;&#039;&#039;]], Ph.D. - Bioinformatics Research Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: yannvrb@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Charlie_Demurjian_headshot.jpg|right|100px]]&lt;br /&gt;
[https://www.linkedin.com/in/cdemurjian/ &#039;&#039;&#039;Charlie Demurjian&#039;&#039;&#039;] - Lead Data Specialist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: cdemu@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:fl13.jpeg|right|100px]]&lt;br /&gt;
[[User:taishajo|&#039;&#039;&#039;Taisha Joseph-Risch&#039;&#039;&#039;]] - Research Data Specialist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: taishajo@mit.edu&lt;br /&gt;
 &lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Huiming_Ding.JPG|right|100px]]&lt;br /&gt;
[[User:Huiming Ding|&#039;&#039;&#039;Huiming Ding&#039;&#039;&#039;]], Ph.D. - Research Computing Scientist&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: huiming@mit.edu&lt;br /&gt;
&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:allen.jpg|right|100px]]&lt;br /&gt;
[[User:Asoberan|&#039;&#039;&#039;Allen Soberanes&#039;&#039;&#039;]] - Systems and IT Administrator&lt;br /&gt;
* Phone: x44945&lt;br /&gt;
* Email: asoberan@mit.edu&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== BioMicro Center Alumni ==&lt;br /&gt;
=== STAFF ===&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pradhan-Dikshant.jpg|right|100px]] &lt;br /&gt;
[[User:Dpradhan|&#039;&#039;&#039;Dikshant Pradhan&#039;&#039;&#039;]]&lt;br /&gt;
* Start Date - End Date &lt;br /&gt;
* Research Specialist&lt;br /&gt;
* Email: dpradhan@mit.edu&lt;br /&gt;
* Currently in graduate school at BU&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:180611_Sam.jpg|right|100px]]&lt;br /&gt;
[[User:Sam Mildrum|&#039;&#039;&#039;Sam Mildrum&#039;&#039;&#039;]]  &lt;br /&gt;
* June 2018 - September 2022 &lt;br /&gt;
* Automation Specialist&lt;br /&gt;
* Email: sam.mildrum@maine.edu&lt;br /&gt;
* Currently Senior Research Associate at Omega Therapeutics&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:P2130493.JPG|right|100px]]&lt;br /&gt;
[[User:Barbara Karampalas|&#039;&#039;&#039;Barbara Karampalas&#039;&#039;&#039;]]&lt;br /&gt;
* Jan 2011 - May 2012&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Currently Lab Manager for Dr. Chris Voigt&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:kthai.jpg|right|100px]]&lt;br /&gt;
[[User:Kevin K. Thai|&#039;&#039;&#039;Kevin Thai&#039;&#039;&#039;]]&lt;br /&gt;
* Sept 2009 - July 2012&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* PhD Biology at MIT 2017&lt;br /&gt;
* Currently Scientist at Amgen&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Sinapius.jpg|right|100px]]&lt;br /&gt;
[[User:Ryan Sinapius|&#039;&#039;&#039;Ryan Sinapius&#039;&#039;&#039;]]&lt;br /&gt;
* Nov 2010 - Nov 2012&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* Currently Research Associate at [http://www.cellsignal.com Cell Signaling Technology]&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rabo.jpg|right|100px]] &lt;br /&gt;
[[User:Ryan Abo|&#039;&#039;&#039;Ryan Abo&#039;&#039;&#039;]] &lt;br /&gt;
* Apr 2012- Apr 2013&lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* Currently Sr Scientist at Ribon Therapeutics&lt;br /&gt;
&amp;lt;!--end of this line --&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Scott_Morin.jpg|right|100px]]&lt;br /&gt;
[[User:Scott J. Morin|&#039;&#039;&#039;Scott J. Morin&#039;&#039;&#039;]]&lt;br /&gt;
*July 2012 - June 2014&lt;br /&gt;
*Technical Assistant&lt;br /&gt;
*DO at University of New England College of Osteopathic Medicine 2014&lt;br /&gt;
*Currently Resident Physician at Mt Auburn Hospital&lt;br /&gt;
* Email: smorin89@gmail.com&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Shmulik Motola.jpg|right|100px]]&lt;br /&gt;
[[User:Shmulik Motola|&#039;&#039;&#039;Shmulik Motola&#039;&#039;&#039;]] &lt;br /&gt;
* January 2012 - October 2015&lt;br /&gt;
* Lab manager&lt;br /&gt;
* Currently Core Director, G-INCPM at Weizmann Institute &lt;br /&gt;
* Email: shmulik.motola@weizmann.ac.il&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Vidya_S.png|right|100px]]&lt;br /&gt;
[[User:Vidya Subramanian|&#039;&#039;&#039;Vidya Subramanian&#039;&#039;&#039;]]&lt;br /&gt;
* June 2015 - April 2016&lt;br /&gt;
* Research Scientist&lt;br /&gt;
* Currently Research Scientist II at Broad Institute &lt;br /&gt;
* Email: &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:miniterm21.jpg|right|100px]]&lt;br /&gt;
[[User:Leigh J Manley|&#039;&#039;&#039;Leigh Manley&#039;&#039;&#039;]]&lt;br /&gt;
* April 2014 - May 2016&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
* PhD UTSW&lt;br /&gt;
* Email: leigh.j.manley@gmail.com&lt;br /&gt;
 |width=25|&lt;br /&gt;
&amp;lt;!-- This creates an empty cell 25 wide with no border and this is the second cell in the row --&amp;gt;&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Manlinlab7.jpg|right|100px]]&lt;br /&gt;
[[User:Manlin Luo|&#039;&#039;&#039;Manlin Luo&#039;&#039;&#039;]] &lt;br /&gt;
* 1997-2016&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Retired&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:MGravina.jpg|right|80px]]&lt;br /&gt;
[[User:Michael Gravina|&#039;&#039;&#039;Michael Gravina&#039;&#039;&#039;]] &lt;br /&gt;
* December 2010 - August 2016&lt;br /&gt;
* Technical Associate&lt;br /&gt;
* Currently Research Associate at OSU&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:jie.jpg‎|right|100px]] &lt;br /&gt;
[[User:Jie Wu|&#039;&#039;&#039;Jie Wu&#039;&#039;&#039;]] &lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* September 2013-November 2016&lt;br /&gt;
* Currently Sr Research Scientist at Phillips&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:IMG_0921.jpg|right|100px]]&lt;br /&gt;
[[User:Fangming Zheng|&#039;&#039;&#039;Fangming Zheng&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Assistant&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July 2016-June 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Jon Penterman.jpg|right|100px]]&lt;br /&gt;
[[User:Jon Penterman|&#039;&#039;&#039;Jon Penterman&#039;&#039;&#039;]] &lt;br /&gt;
* Lab Manager&lt;br /&gt;
* December 2015-November 2017&lt;br /&gt;
* Currently Scientist at CRISPR Therapeutics&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Index.jpg|right|100px]]&lt;br /&gt;
[[User:Namita Wadke|&#039;&#039;&#039;Namita Wadke&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Assistant: 2016-2018&lt;br /&gt;
* Currently at Aldatu Biosciences&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Vineet3.jpeg|right|125px]]&lt;br /&gt;
[[User:Vineet Vishwanath|&#039;&#039;&#039;Vineet Vishwanath&#039;&#039;&#039;]] &lt;br /&gt;
*Sequencing and Quality Control Specialist&lt;br /&gt;
*August 2018-August 2020&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Austinh.jpg|right|100px]]&lt;br /&gt;
[[User:Austin Hendricks|&#039;&#039;&#039;Austin Hendricks&#039;&#039;&#039;]] &lt;br /&gt;
* Coop: 2013&lt;br /&gt;
* Automation Technologist: 2015-2021&lt;br /&gt;
* Currently Grad Student at UNM&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ChloeM.jpg|right|100px]]&lt;br /&gt;
[[User:Chloe Morgan|&#039;&#039;&#039;Chloe Morgan&#039;&#039;&#039;]] &lt;br /&gt;
* Senior Research Support Associate: 2019-2021&lt;br /&gt;
* MD Tufts University Medical School&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Fugen.jpg|right|100px]]&lt;br /&gt;
[[User:Fugen Li|&#039;&#039;&#039;Fugen Li&#039;&#039;&#039;]]&lt;br /&gt;
* July 2010 - Dec 2011&lt;br /&gt;
* BioInformatics Scientist&lt;br /&gt;
* Currently Sr Scientist at Sanofi-Aventis&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Stephen.JPG|right|100px]] &lt;br /&gt;
[[User:Stephen Goldman|&#039;&#039;&#039;Stephen Goldman&#039;&#039;&#039;]] &lt;br /&gt;
* System Administrator&lt;br /&gt;
* 1962/11/26-2022/09/30&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ali.jpg|right|100px]]&lt;br /&gt;
[[User:Allison Perrotta|&#039;&#039;&#039;Allison Perrotta&#039;&#039;&#039;]] &lt;br /&gt;
* Nov 2008 - Sep 2010&lt;br /&gt;
* Technical Assistant &lt;br /&gt;
* PhD Biological Engineering at MIT 2017&lt;br /&gt;
* Currently FAS II at Illumina&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[User:Jingzhi Zhu|&#039;&#039;&#039;Jingzhi Zhu&#039;&#039;&#039;]] &lt;br /&gt;
* Research Computing Specialist&lt;br /&gt;
* Email: jingzhi@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:tatum-2.jpeg|right|100px]]&lt;br /&gt;
[[User:Tmurdock|&#039;&#039;&#039;Tatum Murdock&#039;&#039;&#039;]] &lt;br /&gt;
* Automation Specialist 2021-2024&lt;br /&gt;
* Currently Grad Student at Vanderbilt University&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SKR_BMC.jpg|right|100px]]&lt;br /&gt;
[[User:skeppler|&#039;&#039;&#039;Sabine Keppler Ross&#039;&#039;&#039;]] &lt;br /&gt;
* Library Preparation 2024-2025&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UROPS / COOPS ===&lt;br /&gt;
&lt;br /&gt;
{| border=0 align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AvantiShrikumar.jpg|right|100px]]&lt;br /&gt;
[[User:Avanti Shrikumar|&#039;&#039;&#039;Avanti Shrikumar&#039;&#039;&#039;]]&lt;br /&gt;
* UROP&lt;br /&gt;
* Sep 2010 - Jan 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pic.jpg|right|100px]] &lt;br /&gt;
[[User:Eris Bame|&#039;&#039;&#039;Eris Bame&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* July-Dec 2010&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ksulli.jpg|right|80px]]&lt;br /&gt;
[[User:Katherine Sullivan|&#039;&#039;&#039;Katie Sullivan&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* Jan-June 2011&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:elliott.j.jpg|right|80px]]&lt;br /&gt;
[[User:Justin Elliott|&#039;&#039;&#039;Justin Elliott&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* Jan-June 2011&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:270627 10150316369264740 594529739 9434885 4028882 n.jpg|right|100px]]&lt;br /&gt;
[[User:Kaitlyn N. Sanders|&#039;&#039;&#039;Kaitlyn Sanders&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant &lt;br /&gt;
* July-Dec 2011&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Lebowitz.j.jpg|right|100px]]&lt;br /&gt;
[[User:Jessica L. Lebowitz|&#039;&#039;&#039;Jessica Lebowitz&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2011&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Ln123.png|right|80px]]&lt;br /&gt;
[[User:Linda Nguyen|&#039;&#039;&#039;Linda Nguyen&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-June 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Pictureforwebsite.JPG|right|80px]]&lt;br /&gt;
[[User:Margaret Minnig|&#039;&#039;&#039;Margaret Minnig&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2012&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Photo_for_website.JPG‎|right|80px]]&lt;br /&gt;
[[User:Kate Tracka|&#039;&#039;&#039;Kate Tracka&#039;&#039;&#039;]] &lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* July-Dec 2012&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:PDP2.jpg|right|80px]]&lt;br /&gt;
[[User:Paraj Patel|&#039;&#039;&#039;Paraj Patel&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-Jun 2013&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:millet.jpg|right|80px]]&lt;br /&gt;
[[User:Pierrick Millet|&#039;&#039;&#039;Pierrick Millet&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op Assistant&lt;br /&gt;
* Jan-Jun 2013&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:BMC_stockScientist.jpg|right|100px]]&lt;br /&gt;
[[User:Zach Banks|&#039;&#039;&#039;Zach Banks&#039;&#039;&#039;]] &lt;br /&gt;
* UROP&lt;br /&gt;
* &lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Machado.jpg|right|100px]]&lt;br /&gt;
[[User:ENTER HERE|&#039;&#039;&#039;Ashley Machado&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* July-Dec 2013&lt;br /&gt;
Sample Prep&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Soltoff.jpg|right|100px]]&lt;br /&gt;
[[User:Alexander E. Soltoff|&#039;&#039;&#039;Alexander Soltoff&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* July-Dec 2013&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Ani_Webb.jpg|right|100px]]&lt;br /&gt;
[[User:Ani S. Webb|&#039;&#039;&#039;Ani Webb&#039;&#039;&#039;]]&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* Jan-June 2014&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:OWWEmblem.png|right|100px]]&lt;br /&gt;
[[User:Samuel Kaplan|&#039;&#039;&#039;Samuel Kaplan&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
* Technical Co-op&lt;br /&gt;
* Jan-June 2014&lt;br /&gt;
  |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:AdamP.jpg|right|100px]]&lt;br /&gt;
[[User:Adam Perez|&#039;&#039;&#039;Adam Perez&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: perezad@mit.edu&lt;br /&gt;
Quality Control&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JonathanPicture.JPG|right|100px]]&lt;br /&gt;
[[User:Jonathan Olson|&#039;&#039;&#039;Jonathan&#039;&#039;&#039;]]&lt;br /&gt;
*Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: olsonj@mit.edu&lt;br /&gt;
Quality Control&lt;br /&gt;
|width=25|&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rachel_Stoddard.jpg|right|100px]]&lt;br /&gt;
[[User:Rachel Stoddard|&#039;&#039;&#039;Rachel Stoddard&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*June 2015-December 2015&lt;br /&gt;
 |width=25|&lt;br /&gt;
 &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Rob_Freeman.png|right|100px]]&lt;br /&gt;
[[User:Robert H. Freeman|&#039;&#039;&#039;Robert Freeman&#039;&#039;&#039;]]&lt;br /&gt;
* Co -op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July 2015-January 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Image1-2.jpg|right|100px]]&lt;br /&gt;
[[User:Roberto Mennuti|&#039;&#039;&#039;Roberto Mennuti&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:20160126_102243.JPG|right|100px]]&lt;br /&gt;
[[User:Kathryn Larkin|&#039;&#039;&#039;Kathryn Larkin&#039;&#039;&#039;]] &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:20160126_102242-1.jpg|right|100px]]&lt;br /&gt;
[[User:Asa M. Budnick|&#039;&#039;&#039;Asa Budnick&#039;&#039;&#039;]] &lt;br /&gt;
* Co-op&lt;br /&gt;
* Library Preparation&lt;br /&gt;
* January-July 2016&lt;br /&gt;
  |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Kevin_Lema.jpg|right|100px]]&lt;br /&gt;
[[User:Kevin Lema|&#039;&#039;&#039;Kevin Lema&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:alexis_hester.JPG|right|100px]]&lt;br /&gt;
[[User:Alexis Hester|&#039;&#039;&#039;Alexis Hester&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Coriposner.jpg|right|100px]]&lt;br /&gt;
[[User:Cori Posner|&#039;&#039;&#039;Cori Posner&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2016&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:CharlieMintz.jpg|right|100px]]&lt;br /&gt;
[[User:Charlie Mintz|&#039;&#039;&#039;Charlie Mintz&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
&amp;lt;!--beginning of new line--&amp;gt;&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Meghna.jpeg|right|100px]]&lt;br /&gt;
[[User:Meghna Kuppuraju|&#039;&#039;&#039;Meghna Kuppuraju&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Viren.png|right|100px]]&lt;br /&gt;
[[User:Viren Kumar Dayal |&#039;&#039;&#039;Viren Kumar Dayal&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2017&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Duncan.jpg|right|100px]]&lt;br /&gt;
[[User:Duncan Andrew Locke|&#039;&#039;&#039;Duncan Locke&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: lockedu@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2017&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[User: Abigail Blake|&#039;&#039;&#039;Abigail Blake&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ablake@mit.edu&lt;br /&gt;
Specialty: Quality Control&lt;br /&gt;
Fall 2017&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:A.jpg|right|100px]]&lt;br /&gt;
[[User:Meghan Masotti|&#039;&#039;&#039;Meghan Masotti&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: mmasotti@mit.edu&lt;br /&gt;
Specialty: Quality Control &amp;amp;Sample Prep.&lt;br /&gt;
Spring 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:EMILY.jpg|right|100px]]&lt;br /&gt;
[[User:Emily Evangelista|&#039;&#039;&#039;Emily Evangelista&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2018&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:INSERT|right|100px]]&lt;br /&gt;
[[User:Melissa Franco|&#039;&#039;&#039;Melissa Franco&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*January-July 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:Kr124325.jpg |right|100px]]&lt;br /&gt;
[[User:Orourke.k|&#039;&#039;&#039;Kelly O&#039;Rourke&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*January-July 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:JULIA.jpg|right|100px]]&lt;br /&gt;
[[User:Julia Breed|&#039;&#039;&#039;Julia Breed&#039;&#039;&#039;]] - COOP &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality control&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:WillPhoto.jpeg|right|100px]]&lt;br /&gt;
[[User:William Bonaventura|&#039;&#039;&#039;William Bonaventura&#039;&#039;&#039;]] - COOP &lt;br /&gt;
* Co-op&lt;br /&gt;
*Quality Control&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:JOSEPH.jpg |right|100px]]&lt;br /&gt;
[[User:Joekatz|&#039;&#039;&#039;Joseph Katz&#039;&#039;&#039;]] - COOP&lt;br /&gt;
* Co-op&lt;br /&gt;
*Sample Prep&lt;br /&gt;
*July-December 2018&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:Dang.png|right|100px]]&lt;br /&gt;
[[User:Dang-Huy Nguyen|&#039;&#039;&#039;Dang-Huy Nguyen&#039;&#039;&#039;]] - COOP Spring 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: dhnguyen@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Spring 2019&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:VindyaPhoto.jpeg|right|100px]]&lt;br /&gt;
[[User:Vindya Tumati|&#039;&#039;&#039;Vindya Tumati&#039;&#039;&#039;]] - COOP Spring 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: vtumati@mit.edu&lt;br /&gt;
Specialty: Quality Control&lt;br /&gt;
Spring 2019&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:taeykim.jpg|right|100px]]&lt;br /&gt;
[[User:Taeyun Kim|&#039;&#039;&#039;Taeyun Kim&#039;&#039;&#039;]] - COOP Fall 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: taeykim@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2019&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Simrah.jpg|right|100px]]&lt;br /&gt;
[[User:Simrah Ahmed|&#039;&#039;&#039;Simrah Ahmed&#039;&#039;&#039;]] - COOP Fall 2019&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ahmedsim@mit.edu&lt;br /&gt;
Specialty: Quality control&lt;br /&gt;
Fall 2019&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Thy.png|right|100px]]&lt;br /&gt;
* Janssy Garcia - Co-op Spring 2020&lt;br /&gt;
* Thy Nguyen (pictured) - Co-op Spring 2020&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Merline.jpg|right|100px]]&lt;br /&gt;
[[User:Challee|&#039;&#039;&#039;Merline Senat&#039;&#039;&#039;]] - Co-op Fall 2020&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: merline@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Devin.jpg|right|100px]]&lt;br /&gt;
[[User:Devin|&#039;&#039;&#039;Devin Chatterjee&#039;&#039;&#039;]] - Co-op Fall 2020&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: dchatt@mit.edu&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
|- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Mali.jpg|right|100px]]&lt;br /&gt;
[[User:Mali|&#039;&#039;&#039;Mali DiMeo&#039;&#039;&#039;]] - Co-op Spring 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: mdimeo@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Tram.jpg|right|100px]]&lt;br /&gt;
[[User:Tram|&#039;&#039;&#039;Tram Huynh&#039;&#039;&#039;]] - Co-op Spring 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: thuynh@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Owen.jpg|right|100px]]&lt;br /&gt;
[[User:Owen|&#039;&#039;&#039;Owen Spencer&#039;&#039;&#039;]] - Co-op Fall 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ospencer@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Victoria.jpg|right|100px]]&lt;br /&gt;
[[User:Victoria|&#039;&#039;&#039;Victoria Russo&#039;&#039;&#039;]] - Co-op Fall 2021&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: russov@mit.edu &lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:baifan-1.jpg|right|100px]]&lt;br /&gt;
[[User:Baifan|&#039;&#039;&#039;Baifan Zhou&#039;&#039;&#039;]] - Co-op Fall 2022&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: baifan@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:egihasani.jpg|right|100px]]&lt;br /&gt;
[[User:Egi|&#039;&#039;&#039;Egi Hasani&#039;&#039;&#039;]] - Co-op Fall 2022&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ehasani@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:JakeS.jpg|right|100px]]&lt;br /&gt;
[[User:Jake3784|&#039;&#039;&#039;Jake Schissel&#039;&#039;&#039;]] - FAIRdata Co-op Fall 2022&lt;br /&gt;
* Email: jschisse@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:SalmaAlawi.png|right|100px]]&lt;br /&gt;
[[User:Salma|&#039;&#039;&#039;Salma Alawi&#039;&#039;&#039;]] - Data Co-op Spring 2023&lt;br /&gt;
* Email: salawi@mit.edu&lt;br /&gt;
 |width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Liammccoart.jpg|right|100px]]&lt;br /&gt;
[[User:Liam|&#039;&#039;&#039;Liam McCoart&#039;&#039;&#039;]] - Co-op Spring 2023&lt;br /&gt;
* Email: mccoart@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
 |width=25|&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Snigdha.jpg|right|100px]]&lt;br /&gt;
[[User:Snigdha|&#039;&#039;&#039;Snigdha Patra&#039;&#039;&#039;]] - Co-op Spring 2023&lt;br /&gt;
* Email: patras@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Simrensamba.jpg|right|100px]]&lt;br /&gt;
[[User:Simren|&#039;&#039;&#039;Simren Samba&#039;&#039;&#039;]] - Co-op Fall 2023&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: ssamba@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:ENiemiec.jpeg|right|100px]]&lt;br /&gt;
[[User:Elizabeth|&#039;&#039;&#039;Elizabeth Niemiec&#039;&#039;&#039;]] - Co-op Fall 2023&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: eniemiec@mit.edu&lt;br /&gt;
&lt;br /&gt;
 |- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
 |width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:EuniceK.jpg|right|100px]]&lt;br /&gt;
[[User:kooe|&#039;&#039;&#039;Eunice Koo&#039;&#039;&#039;]]&lt;br /&gt;
* Co-op- Data - Fall 2023&lt;br /&gt;
* Email: kooe@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:BMClindatran.jpeg|right|100px]]&lt;br /&gt;
[[User:lttran|&#039;&#039;&#039;Linda Tran&#039;&#039;&#039;]] - Co-op Spring 2024&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: lttran@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Gideon_mitcoop.jpeg|right|100px]]&lt;br /&gt;
[[User:Gideon|&#039;&#039;&#039;Gideon Donahue&#039;&#039;&#039;]] - Co-op Spring 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: gideon03@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Neil_.jpeg|right|100px]]&lt;br /&gt;
[[User:Neil|&#039;&#039;&#039;Neil Sheth&#039;&#039;&#039;]] - Co-op Single Cell Fall 2023-Fall 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: neil98@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:jalyon.jpeg|right|100px]]&lt;br /&gt;
[[User:Jalyon|&#039;&#039;&#039;Jared Lyon&#039;&#039;&#039;]] - Drylab Co-op Spring 2024&lt;br /&gt;
* Email: jalyon@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:sara1463.jpeg|right|100px]]&lt;br /&gt;
[[User:Gideon|&#039;&#039;&#039;Sara Farinha&#039;&#039;&#039;]] - Wetlab Co-op Fall 2024&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: sara1463@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
[[Image:bolducje.jpeg|right|100px]]&lt;br /&gt;
[[User:bolducnu.jpg|&#039;&#039;&#039;Jessica Bolduc&#039;&#039;&#039;]] - Wetlab Co-op Fall 2024&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: bolducje@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:frankie.jpeg|right|100px]]&lt;br /&gt;
[[User:Jalyon|&#039;&#039;&#039;Francesca Licciardello&#039;&#039;&#039;]]&lt;br /&gt;
* Drylab Co-op Fall 2024&lt;br /&gt;
* Email: fl13@mit.edu&lt;br /&gt;
&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Hannah.jpg|right|100px]]&lt;br /&gt;
[[User:hannahj4|&#039;&#039;&#039;Hannah Jackson&#039;&#039;&#039;]] - Wetlab Co-op Spring 2025&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: hannahj4@mit.edu&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;height:25px;&amp;quot;&lt;br /&gt;
 | colspan=&amp;quot;5&amp;quot; |&lt;br /&gt;
 |- style=&amp;quot;height:150xp;&amp;quot; &lt;br /&gt;
&amp;lt;!-- This gives us a &amp;quot;linebreak&amp;quot; of sorts, the colspan indicated is 5 which means there should only be five cells in a row (three bios and two |width=25| cells), anything else will mess up this table formatting, but that can be fixed by resetting the colspan for all &amp;quot;linebreaks&amp;quot; (rowspan can be used similarly) --&amp;gt;&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:maddie.jpeg|right|100px]]&lt;br /&gt;
[[User:madelin9|&#039;&#039;&#039;Madeline Fiedler&#039;&#039;&#039;]] - Wetlab Co-op Spring 2025&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: madelin9@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:Marley.jpg|right|100px]]&lt;br /&gt;
[[User:marleyoc|&#039;&#039;&#039;Marley O&#039;Connor&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone: x54533&lt;br /&gt;
* Email: marleyoc@mit.edu&lt;br /&gt;
|width=25|&lt;br /&gt;
|width=350 style=&amp;quot;border: 1px solid purple;&amp;quot;|&lt;br /&gt;
[[Image:jackie.jpg|right|100px]]&lt;br /&gt;
[[User:pottlej|&#039;&#039;&#039;Jacqueline Pottle&#039;&#039;&#039;]] - Co-op&lt;br /&gt;
* Phone x54533&lt;br /&gt;
* Email: pottlej@mit.edu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=File:JHG.jpg&amp;diff=131444</id>
		<title>File:JHG.jpg</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=File:JHG.jpg&amp;diff=131444"/>
		<updated>2026-05-08T19:10:00Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Gibcus uploaded a new version of File:JHG.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=File:JHG.jpg&amp;diff=131443</id>
		<title>File:JHG.jpg</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=File:JHG.jpg&amp;diff=131443"/>
		<updated>2026-05-08T19:05:50Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=MIT:Pricing&amp;diff=131440</id>
		<title>MIT:Pricing</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=MIT:Pricing&amp;diff=131440"/>
		<updated>2026-05-06T15:38:19Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* 10X CHROMIUM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PRICING UPDATE 7/1/2025&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - HIGH OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
Please note that samples submitted from [[BioMicroCenter:CoreDeps|&#039;&#039;&#039;CORE LAB&#039;&#039;&#039;s]] will be given priority on all equipment. The BioMicro Center reserves the right to reject samples for any reason.&lt;br /&gt;
&lt;br /&gt;
=== NOVASEQX / NOVASEQ6000 SEQUENCING ===&lt;br /&gt;
&lt;br /&gt;
Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! NOVASEQ SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 10B 150PE Lane^^ || $1,850 || $2,000 || rowspan=&amp;quot;2&amp;quot; | Per Lane || rowspan=&amp;quot;5&amp;quot; | Through collaboration with nearby academic shared resources&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 150PE Lane^^ || $2,600 || $2,860&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 10B 300nt^^ || $12,160 || $13,376 || rowspan=&amp;quot;3&amp;quot; | Per Flowcell&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 300nt^^ || $16,200 || $17,820&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 100nt^^ || $5,750 || $6,325&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^^ - through collaboration with nearby academic shared resources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - MID OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
=== [https://openwetware.org/wiki/BioMicroCenter:Element_Sequencing ELEMENT AVITI24] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ELEMENT AVITI SEQUENCING !! Lane/Flowcell !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 75 PE || Full flowcell (2 lane, 800m read) || $1,900 || $2,090 || per flowcell || rowspan=&amp;quot;5&amp;quot; | Includes final pool quality control (RT-PCR and FA), sequencing, and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| One lane (~400m read) || $1,000 || $1,100 || per lane&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 150 PE || Full flowcell (2 lane, ~800m read) || $2,650 || $2,915 || per flowcell&lt;br /&gt;
|-&lt;br /&gt;
| One lane (~400m read) || $1,375 || $1,513 || per lane&lt;br /&gt;
|-&lt;br /&gt;
| 300 PE || Full flowcell (~200m reads) || $3,500 || $3,850 || per lane&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - LOW OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
=== [https://openwetware.org/wiki/BioMicroCenter:Singular_Sequencing#Requirements%2FThings_to_Consider SINGULAR G4] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SINGULAR G4 SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 50 PE: F3 Lane (~100m reads) || $300 || $330 || per lane || rowspan=&amp;quot;3&amp;quot; | Includes final pool quality control (RT-PCR and FA), sequencing, and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| Rapid 300nt: F3 flowcell (~400m reads)* || $1,800 || $1,980 || per flowcell&lt;br /&gt;
|-&lt;br /&gt;
| 150 PE: F3 Lane (~100m reads) || $450 || $495 || per lane&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Rapid flowcells are required for adapted Illumina libraries.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MISEQ SEQUENCING ===&lt;br /&gt;
&lt;br /&gt;
==== MiSeq i100 Assisted ====&lt;br /&gt;
Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || rowspan=&amp;quot;2&amp;quot; | 5M || $715 || $786.50 || rowspan=&amp;quot;9&amp;quot; | per kit || rowspan=&amp;quot;9&amp;quot; | Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,040 || $1,144&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;4&amp;quot; | 25M || $925 || $1,017.50&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $1,334 || $1,467.40&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,570 || $1,727&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1000nt&#039;&#039;&#039; || $2,590 || $2,849&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;2&amp;quot; | 100M || $1,540 || $1,694&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $2,125 || $2,337.50&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 50M || $2,125 || $2,337.50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MiSeq i100 Walkup ====&lt;br /&gt;
Training and lab storage on BMC servers required. Run must be scheduled in the [https://mit.ilabsolutions.com/schedules/555535#/schedule/ iLabs calendar.]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! RunTime !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Machine usage || — || $120 || $132 || per run || — || training and lab storage on BMC servers required.&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || rowspan=&amp;quot;2&amp;quot; | 5M || $381 || $419.10 || rowspan=&amp;quot;9&amp;quot; | per kit || 8h || rowspan=&amp;quot;9&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $665 || $731.50 || 16h&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;4&amp;quot; | 25M || $565 || $621.50 || 5h&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $920 || $1,012 || 8h&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,125 || $1,238 || 16h&lt;br /&gt;
|-&lt;br /&gt;
| 1000nt || $1,921 || $2,113.10 || 24h&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;2&amp;quot; | 100M || $1,130 || $1,243 || 5h&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $1,638.50 || $1,802.35 || 8h&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 50M || $1,638.50 || $1,802.35 || 16h&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MiSeq classic ====&lt;br /&gt;
&lt;br /&gt;
* MiSeq is off contract and will be retired upon instrument failure&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 70nt || 15M || $1,320 || $1,452 || rowspan=&amp;quot;6&amp;quot; | per kit || rowspan=&amp;quot;6&amp;quot; | Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| 150nt || 25M || $1,430 || $1,573&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || 15M || $1,595 || $1,754.50&lt;br /&gt;
|-&lt;br /&gt;
| 500nt || 15M || $1,760 || $1,936&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 25M || $2,200 || $2,420&lt;br /&gt;
|-&lt;br /&gt;
| 500nt || 1M &amp;amp;nbsp;&#039;&#039;&#039;NANO&#039;&#039;&#039; || $770 || $847&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OTHER SHORT READ SERVICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SHORT READ SUPPORTING SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Quality Control Only -only one QC is included per sequencing lane. || $35 || $38.50 || per sample || Includes RT-PCR and Frag.Analyzer&lt;br /&gt;
|-&lt;br /&gt;
| Rapid Quality Control - Use SYBR for sample quantification for pooling instead of qPCR. Only available for pooling. || $15 || $16.50 || per sample || Includes Fluorometric quantification and Frag.Analyzer&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only (short read) || $25 || $27.50 || per sample || Includes qPCR values from standard QC only&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only - full plate(short read) || $400 || $440 || per plate || excludes column 1 (used for controls)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== LONG READ SEQUENCING ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PROMETHION SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 72 hour Flowcell || $1,200 || $1,320 || per Flowcell || Fastq stored for 1y. Trace data stored only 30d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PACBIO REVIO SEQUENCING^^ !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| SMRT Cell || $2,900 || $3,190 || per SMRT Cell || Fastq stored for 1y. Trace data stored only 30d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^^ - through collaboration with nearby academic shared resources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LIBRARY GENERATION ==&lt;br /&gt;
&lt;br /&gt;
=== SHORT READ LIBRARY - DNA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ILLUMINA Sample Preparation !! colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:blue;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;STANDARD THROUGHPUT DNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for individual samples. Repreps will typically be attempted on failed samples without charge. || colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center; color:blue;&amp;quot; | &#039;&#039;&#039;HIGH THROUGHPUT DNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for sample batches. Repreps will NOT be attempted on failed samples without charge. Low volume (&amp;lt;=5ul) submission must be coordinated with BMC staff. Initial QC not included.&lt;br /&gt;
|-&lt;br /&gt;
! ILLUMINA Sample Preparation !! Type !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | LIGATION BASED NEB UltraII || STD || per sample || $105 || $115 || Includes QC, adapter ligation, size selection, barcoding, enrichment, and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 24 || style=&amp;quot;color:blue;&amp;quot; | $900 || style=&amp;quot;color:blue;&amp;quot; | $990 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes adapter ligation, size selection, barcoding, enrichment, and quality control spotcheck (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 96 || style=&amp;quot;color:blue;&amp;quot; | $1,800 || style=&amp;quot;color:blue;&amp;quot; | $1,980&lt;br /&gt;
|-&lt;br /&gt;
| Tagmentation &amp;amp;nbsp;&amp;amp;nbsp;NEXTERA-XT || rowspan=&amp;quot;2&amp;quot; | STD || rowspan=&amp;quot;2&amp;quot; | per Sample || $105 || $115 || rowspan=&amp;quot;2&amp;quot; | Includes set-up, tagmentation, indexing, enrichment, and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| Tagmentation &amp;amp;nbsp;&amp;amp;nbsp;NEXTERA-FLEX || $157 || $173&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | NEXTERA-XT OR FLEX || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $900 || style=&amp;quot;color:blue;&amp;quot; | $990 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes tagmentation, indexing, enrichment, and quality control spotcheck (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,800 || style=&amp;quot;color:blue;&amp;quot; | $1,980&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 16S Amplicon || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 48 || style=&amp;quot;color:blue;&amp;quot; | $1,900 || style=&amp;quot;color:blue;&amp;quot; | $2,090 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes normalization, enrichment, pooling and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | add&#039;l 48 || style=&amp;quot;color:blue;&amp;quot; | $650 || style=&amp;quot;color:blue;&amp;quot; | $715&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Other Amplicon || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 48 || style=&amp;quot;color:blue;&amp;quot; | $1,600 || style=&amp;quot;color:blue;&amp;quot; | $1,760 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes normalization, enrichment, pooling and quality control (SYBR and FA). &amp;amp;nbsp;&amp;amp;nbsp;Samples *must* be submitted amplified with appropriate linkers.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | add&#039;l 48 || style=&amp;quot;color:blue;&amp;quot; | $630 || style=&amp;quot;color:blue;&amp;quot; | $693&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;ADDITIONAL FEES&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Samples not in proper input format will be subject to these additional charges.&lt;br /&gt;
|-&lt;br /&gt;
| High Throughput Setup || || 48 samples || $60 || $66 ||&lt;br /&gt;
|-&lt;br /&gt;
| Sample Cleanup || || per sample || $5 || $5.50 || SPRI cleanup of samples to remove impurities.&lt;br /&gt;
|-&lt;br /&gt;
| Quantification || || per sample || $10 || $11 || Quantification of samples (FA) prior to arraying.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SHORT READ LIBRARY - RNA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ILLUMINA Sample Preparation !! colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:blue;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;STANDARD RNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for individual samples. Repreps will typically be attempted on failed samples without charge. || colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center; color:blue;&amp;quot; | &#039;&#039;&#039;HIGH THROUGHPUT RNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Repreps will NOT be attempted on failed samples without charge. Low volume (&amp;lt;=5ul) submission must be coordinated with BMC staff. Initial QC not included. Mixing of multiple projects not recommended.&lt;br /&gt;
|-&lt;br /&gt;
! ILLUMINA Sample Preparation !! Type !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | polyA based isolation &amp;amp;nbsp;&amp;amp;nbsp;NEB UltraII RNAseq || &#039;&#039;&#039;STD&#039;&#039;&#039; || per sample || $157 || $173 || Includes QC, polyA isolation, generation of cDNA, library construction, indexing and quality control (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,500 || style=&amp;quot;color:blue;&amp;quot; | $1,650 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,000 || style=&amp;quot;color:blue;&amp;quot; | $3,300&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | High Throughput 3&#039; Digital Gene Expression (HT3DGE) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,050 || style=&amp;quot;color:blue;&amp;quot; | $1,155 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes generation of cDNA, library construction, indexing and library quality control. Does not include sample QC.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,100 || style=&amp;quot;color:blue;&amp;quot; | $2,310&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Total RNA sequencing &amp;amp;nbsp;&amp;amp;nbsp;NEB RNAseq +Ribodepletion || &#039;&#039;&#039;STD&#039;&#039;&#039; || per sample || $235 || $258.50 || Includes sample QC, ribosomal depletion, generation of cDNA, library construction, indexing and library quality control.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only, covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,500 || style=&amp;quot;color:blue;&amp;quot; | $2,750 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only, covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $5,000 || style=&amp;quot;color:blue;&amp;quot; | $5,500&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Low Input polyA+ &amp;amp;nbsp;&amp;amp;nbsp;Clontech SMARTseq + NexteraXT or Flex || &#039;&#039;&#039;STD&#039;&#039;&#039; v4 || per sample || $262 || $289 || rowspan=&amp;quot;3&amp;quot; | Includes generation of cDNA, amplification, library construction, indexing and quality control (SYBR + FA). Single sample includes initial QC.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; v2 || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,000 || style=&amp;quot;color:blue;&amp;quot; | $2,200&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; v2 || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,200 || style=&amp;quot;color:blue;&amp;quot; | $3,520&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Low Input Mammalian Total &amp;amp;nbsp;&amp;amp;nbsp;Clontech ZapR Kit || STD || per sample || $210 || $231 || Includes generation of cDNA, amplification, library construction, rRNA degradation, indexing and quality control (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,000 || style=&amp;quot;color:blue;&amp;quot; | $3,300 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $5,000 || style=&amp;quot;color:blue;&amp;quot; | $5,500&lt;br /&gt;
|-&lt;br /&gt;
| Small RNA || STD || per sample || $289 || $318 || Uses NEB, BIOO or QIAGEN small RNA kit&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;ADDITIONAL FEES&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Samples not in proper input format will be subject to these additional charges.&lt;br /&gt;
|-&lt;br /&gt;
| High Throughput Setup || || 48 samples || $60 || $66 ||&lt;br /&gt;
|-&lt;br /&gt;
| Sample Cleanup || || per sample || $5 || $5.50 || SPRI cleanup of samples to remove impurities.&lt;br /&gt;
|-&lt;br /&gt;
| Quantification || || per sample || $10 || $11 || Quantification of samples (FA) prior to arraying.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== LONG READ LIBRARIES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Oxford Nanopore Sample Preparation !! Nanopore Kit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit&lt;br /&gt;
|-&lt;br /&gt;
| Standard Ligation || LSK || $160 || $176 || per sample/pool&lt;br /&gt;
|-&lt;br /&gt;
| Native Barcoding &amp;amp;nbsp;&amp;amp;nbsp;(ligation indexing) || - || $50 || $55 || rowspan=&amp;quot;5&amp;quot; | per sample&lt;br /&gt;
|-&lt;br /&gt;
| SMARTseq -&amp;gt; Ligation || Cv4+LSK || $300 || $330&lt;br /&gt;
|-&lt;br /&gt;
| Rapid Prep (tagment - ~10-20kb) || RAD || $150 || $165&lt;br /&gt;
|-&lt;br /&gt;
| Long Insert Prep || RAD (modified, target &amp;gt;100kb) || $262 || $289&lt;br /&gt;
|-&lt;br /&gt;
| Direct RNA || RNA004 || $160 || $176&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PacBio Sample Preparation !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Basic Library || $315 || $346 || Per Library&lt;br /&gt;
|-&lt;br /&gt;
| $157 || $173 || Per add&#039;l Sample&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Genomic Library || $472 || $520 || Per Library&lt;br /&gt;
|-&lt;br /&gt;
| $235 || $258 || Per add&#039;l Sample&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SAMPLE EXTRACTION ==&lt;br /&gt;
&lt;br /&gt;
=== CHEMAGIC360 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! TYPE !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT &lt;br /&gt;
|-&lt;br /&gt;
| DNA || 96 || $700 || $770 &lt;br /&gt;
|-&lt;br /&gt;
| RNA || 96 || $800 || $880 &lt;br /&gt;
|-&lt;br /&gt;
| RNA/DNA Isolation - Assisted || 12 samples || $300 || $330 &lt;br /&gt;
|-&lt;br /&gt;
| RNA/DNA Isolation - Assisted || 96 samples || $1,000 || $1,100 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SINGLE CELL &amp;amp; SPATIAL SERVICES ==&lt;br /&gt;
&lt;br /&gt;
=== 10X CHROMIUM ===&lt;br /&gt;
&lt;br /&gt;
Please email biomicro@mit.edu two weeks prior to desired submission date so we will have reagents ready for you.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 10X USAGE !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;Assisted Service&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;DIGITAL GENE EXPRESSION&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 5&#039; RNA &amp;amp;nbsp;&amp;amp;nbsp;3&#039; RNA || setup || $1,015 || $1,116.50 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $1,750 || $1,925 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 5&#039; RNA &amp;amp;nbsp;&amp;amp;nbsp;3&#039; RNA - on chip multiplexing || setup || $1,150 || $1,265 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per 4 samples || $2,305 || $2,535 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Fixed RNA (Flex v2) &amp;amp;nbsp;&amp;amp;nbsp;probe based. human/mouse only || setup || $2,700 || $2,970 || charge per submission - up to 48 samples&lt;br /&gt;
|-&lt;br /&gt;
| per sample (1-plex) || $270 || $297 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Amplicon (CITE-SEQ, TCR, BCR, antibody barcode, etc // per amplicon) || setup || $470 || $517 || additional prep beyond DGE&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $45 || $50 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;scATACseq&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | ATACseq || setup || $880 || $968 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $1,675 || $1,843 || Includes QC and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;Multiome (ATAC+3&#039;RNA)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | MULTI || setup || $1,800 || $1,980 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $3,100 || $3,410 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;CANCELLATION&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| per session ||  || $200 || $220 || &amp;lt; 24h notice&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VISIUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SLIDES !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| HD: polyA or FFPE (human/mouse only) || 1 slide / 2 tiles || $7,850 || $8,596 || Includes library generation only.&lt;br /&gt;
|-&lt;br /&gt;
| QC - FFPE Scroll || per scroll || $60 || $66 || RNA isolation from FFPE scroll&lt;br /&gt;
|-&lt;br /&gt;
| QC - Fresh Frozen Scroll || per scroll || $40 || $44 || RNA isolation from FF scroll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AVITI24 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! AVITI24 SPATIAL !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Slide Only || rowspan=&amp;quot;5&amp;quot; | per slide || $150 || $165 || slide: 1, 12, or 48 well&lt;br /&gt;
|-&lt;br /&gt;
| Optimization Only || $800 || $880 || used when the run fails&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.elementbiosciences.com/products/aviti24/cytoprofiling Teton Defined Panel] || $7,200 || $7,920 || scroll to predefined panels&lt;br /&gt;
|-&lt;br /&gt;
| Atlas Short || $5,500 || $6,050 || for CRISPR screens / short sequencing&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.elementbiosciences.com/products/aviti24/cytoprofiling Antibody Add-on] || $360 || $396 || scroll to flexible protein customization&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OTHER GENOMICS SERVICES ==&lt;br /&gt;
&lt;br /&gt;
=== [[BioMicroCenter:QC|QUALITY CONTROL]] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! QUALITY CONTROL !! unit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Analyzer: RNA or DNA || per sample || $15 || $16.50 ||&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Analyzer: Preloaded row || per row (12) || $80 || $88 || 2ul per sample in each well using plates from BMC&lt;br /&gt;
|-&lt;br /&gt;
| FemtoPulse: RNA or DNA || per sample || $30 || $33 ||&lt;br /&gt;
|-&lt;br /&gt;
| FemtoPulse: Preloaded Row || per row (12) || $160 || $176 || 2ul per sample in each well using plates from BMC&lt;br /&gt;
|-&lt;br /&gt;
| BioAnalyzer: Walkup Service || per chip || $50 || $55 ||&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only (Short read quantification test) || per sample || $25 || $27.50 || 4 point serial dilution&lt;br /&gt;
|-&lt;br /&gt;
| Full plate qPCR (short read quantification test) || per plate || $400 || $440 || full plate only (exclude column 1 for standards) - must be to BMC specifications.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;Sample QC services:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Fresh Frozen Curl || per curl || $40 || $44 ||&lt;br /&gt;
|-&lt;br /&gt;
| FFPE Curl || per curl || $60 || $66 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OLIGO SYNTHESIS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! Service !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | DNAscript Syntax || Setup (per run) || $1,000 || $1,100 || Per run cost&lt;br /&gt;
|-&lt;br /&gt;
| 2000 nucleotide synthesis || $500 || $550 || Up to 96 samples&lt;br /&gt;
|-&lt;br /&gt;
| 8000 nucleotide synthesis || $1,500 || $1,650 || Up to 96 samples&lt;br /&gt;
|-&lt;br /&gt;
| add Biotin (max48) || $115 || $126 || max 48 per run and 2 per oligo. Couple to T only.&lt;br /&gt;
|-&lt;br /&gt;
| add Fluor || $300 || $330 ||&lt;br /&gt;
|-&lt;br /&gt;
| add quench || $100 || $110 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[BioMicroCenter:RTPCR|REAL TIME PCR]] ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OTHER LAB SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB / MIT]] !! unit !! SIGN UP !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Roche LightCycler 480 || $15 || per plate || [https://mit.ilabsolutions.com/schedules/261680#/schedule/ CALENDAR] *available for CORE only || Email biomicro@mit.edu for training&lt;br /&gt;
|-&lt;br /&gt;
| SYBR Green (KAPA/Roche) || $45 || per ml ||  || Available for MIT only&lt;br /&gt;
|-&lt;br /&gt;
| 96-well PLATES || $10 || per plate ||  || Available for MIT only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== OTHER LAB SERVICES ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OTHER LAB SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB / MIT]] !! unit !! SIGN UP !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;COVARIS SONICATOR&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| COVARIS E220 || $20 || per hour || [https://mit.ilabsolutions.com/equipment/261752/?tab=schedule ilab calendar] || tubes available for purchase.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;PIPPIN PREP&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Gel Isolation || $75 || per gel (5 lanes) || TBA ||&lt;br /&gt;
|-&lt;br /&gt;
| Training || $25 || per session || TBA || Email biomicro@mit.edu for training.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;PLATE READER&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Varioskan || $18 || per hour || [https://mit.ilabsolutions.com/schedules/262715#/schedule/ CALENDAR] || Email biomicro@mit.edu for training&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;ROBOTICS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Tecan EVO 150 || $75 || per 1h block - based on scheduled time. || [https://mit.ilabsolutions.com/schedules/262347#/schedule/ CALENDAR] ||&lt;br /&gt;
|-&lt;br /&gt;
| non-filter tips || $8 || per box ||  || ** Please let us know if there is additional plasticware you would like us to stock.&lt;br /&gt;
|-&lt;br /&gt;
| Filter tips || $12.00 || per box ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Training || $65 || per hour || Email biomicro@mit.edu ||&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;NANODROP&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Nanodrop || -- ||  || Walk up service || * no charge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== COMPUTATIONAL SERVICES ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! COMPUTATIONAL SERVICES !! unit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! Other MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Support || per hour || $90 || $125 || Very limited support for non-MIT users&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Share || per 0.1FTE || $1,250 || N/A || MIT only. Priority access to informatics.&lt;br /&gt;
|-&lt;br /&gt;
| Ingenuity Pathway Analysis || per dataset || $100 || $110 || Recovery of licence cost.&lt;br /&gt;
|-&lt;br /&gt;
| Active Data storage || per TB per year || $100 || $300 ||&lt;br /&gt;
|-&lt;br /&gt;
| Tape Archive / Recovery || per tape || $60 || $70 ||&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Training Classes || per session || $50 || $100 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
OLD&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2025 | FY2025 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2023b | FY2023-Feb Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2023 | FY2023 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2022 | FY2022 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2021 | FY2021 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2019 | FY2019 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2017 | FY2017 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2016 | FY2016 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2015 | FY2015 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2014 | FY2014 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2013 | FY2013 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2012 | FY2012 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2011 | FY2011 Pricing]]&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=MIT:Pricing&amp;diff=131439</id>
		<title>MIT:Pricing</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=MIT:Pricing&amp;diff=131439"/>
		<updated>2026-05-06T15:37:48Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* VISIUM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;PRICING UPDATE 7/1/2025&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - HIGH OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
Please note that samples submitted from [[BioMicroCenter:CoreDeps|&#039;&#039;&#039;CORE LAB&#039;&#039;&#039;s]] will be given priority on all equipment. The BioMicro Center reserves the right to reject samples for any reason.&lt;br /&gt;
&lt;br /&gt;
=== NOVASEQX / NOVASEQ6000 SEQUENCING ===&lt;br /&gt;
&lt;br /&gt;
Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! NOVASEQ SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 10B 150PE Lane^^ || $1,850 || $2,000 || rowspan=&amp;quot;2&amp;quot; | Per Lane || rowspan=&amp;quot;5&amp;quot; | Through collaboration with nearby academic shared resources&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 150PE Lane^^ || $2,600 || $2,860&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 10B 300nt^^ || $12,160 || $13,376 || rowspan=&amp;quot;3&amp;quot; | Per Flowcell&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 300nt^^ || $16,200 || $17,820&lt;br /&gt;
|-&lt;br /&gt;
| NovaSeqX 25B 100nt^^ || $5,750 || $6,325&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^^ - through collaboration with nearby academic shared resources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - MID OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
=== [https://openwetware.org/wiki/BioMicroCenter:Element_Sequencing ELEMENT AVITI24] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ELEMENT AVITI SEQUENCING !! Lane/Flowcell !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 75 PE || Full flowcell (2 lane, 800m read) || $1,900 || $2,090 || per flowcell || rowspan=&amp;quot;5&amp;quot; | Includes final pool quality control (RT-PCR and FA), sequencing, and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| One lane (~400m read) || $1,000 || $1,100 || per lane&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 150 PE || Full flowcell (2 lane, ~800m read) || $2,650 || $2,915 || per flowcell&lt;br /&gt;
|-&lt;br /&gt;
| One lane (~400m read) || $1,375 || $1,513 || per lane&lt;br /&gt;
|-&lt;br /&gt;
| 300 PE || Full flowcell (~200m reads) || $3,500 || $3,850 || per lane&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SEQUENCING - LOW OUTPUT ==&lt;br /&gt;
&lt;br /&gt;
=== [https://openwetware.org/wiki/BioMicroCenter:Singular_Sequencing#Requirements%2FThings_to_Consider SINGULAR G4] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SINGULAR G4 SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 50 PE: F3 Lane (~100m reads) || $300 || $330 || per lane || rowspan=&amp;quot;3&amp;quot; | Includes final pool quality control (RT-PCR and FA), sequencing, and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| Rapid 300nt: F3 flowcell (~400m reads)* || $1,800 || $1,980 || per flowcell&lt;br /&gt;
|-&lt;br /&gt;
| 150 PE: F3 Lane (~100m reads) || $450 || $495 || per lane&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Rapid flowcells are required for adapted Illumina libraries.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MISEQ SEQUENCING ===&lt;br /&gt;
&lt;br /&gt;
==== MiSeq i100 Assisted ====&lt;br /&gt;
Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || rowspan=&amp;quot;2&amp;quot; | 5M || $715 || $786.50 || rowspan=&amp;quot;9&amp;quot; | per kit || rowspan=&amp;quot;9&amp;quot; | Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,040 || $1,144&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;4&amp;quot; | 25M || $925 || $1,017.50&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $1,334 || $1,467.40&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,570 || $1,727&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1000nt&#039;&#039;&#039; || $2,590 || $2,849&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;2&amp;quot; | 100M || $1,540 || $1,694&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $2,125 || $2,337.50&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 50M || $2,125 || $2,337.50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MiSeq i100 Walkup ====&lt;br /&gt;
Training and lab storage on BMC servers required. Run must be scheduled in the [https://mit.ilabsolutions.com/schedules/555535#/schedule/ iLabs calendar.]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! RunTime !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Machine usage || — || $120 || $132 || per run || — || training and lab storage on BMC servers required.&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || rowspan=&amp;quot;2&amp;quot; | 5M || $381 || $419.10 || rowspan=&amp;quot;9&amp;quot; | per kit || 8h || rowspan=&amp;quot;9&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $665 || $731.50 || 16h&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;4&amp;quot; | 25M || $565 || $621.50 || 5h&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $920 || $1,012 || 8h&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || $1,125 || $1,238 || 16h&lt;br /&gt;
|-&lt;br /&gt;
| 1000nt || $1,921 || $2,113.10 || 24h&lt;br /&gt;
|-&lt;br /&gt;
| 100nt || rowspan=&amp;quot;2&amp;quot; | 100M || $1,130 || $1,243 || 5h&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || $1,638.50 || $1,802.35 || 8h&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 50M || $1,638.50 || $1,802.35 || 16h&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MiSeq classic ====&lt;br /&gt;
&lt;br /&gt;
* MiSeq is off contract and will be retired upon instrument failure&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Length !! Reads !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 70nt || 15M || $1,320 || $1,452 || rowspan=&amp;quot;6&amp;quot; | per kit || rowspan=&amp;quot;6&amp;quot; | Includes final pool quality control (RT-PCR and BioAnalyzer), sequencing, genome alignment and data storage of FASTQ files for 1 year&lt;br /&gt;
|-&lt;br /&gt;
| 150nt || 25M || $1,430 || $1,573&lt;br /&gt;
|-&lt;br /&gt;
| 300nt || 15M || $1,595 || $1,754.50&lt;br /&gt;
|-&lt;br /&gt;
| 500nt || 15M || $1,760 || $1,936&lt;br /&gt;
|-&lt;br /&gt;
| 600nt || 25M || $2,200 || $2,420&lt;br /&gt;
|-&lt;br /&gt;
| 500nt || 1M &amp;amp;nbsp;&#039;&#039;&#039;NANO&#039;&#039;&#039; || $770 || $847&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OTHER SHORT READ SERVICES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SHORT READ SUPPORTING SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Quality Control Only -only one QC is included per sequencing lane. || $35 || $38.50 || per sample || Includes RT-PCR and Frag.Analyzer&lt;br /&gt;
|-&lt;br /&gt;
| Rapid Quality Control - Use SYBR for sample quantification for pooling instead of qPCR. Only available for pooling. || $15 || $16.50 || per sample || Includes Fluorometric quantification and Frag.Analyzer&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only (short read) || $25 || $27.50 || per sample || Includes qPCR values from standard QC only&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only - full plate(short read) || $400 || $440 || per plate || excludes column 1 (used for controls)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== LONG READ SEQUENCING ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PROMETHION SEQUENCING !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 72 hour Flowcell || $1,200 || $1,320 || per Flowcell || Fastq stored for 1y. Trace data stored only 30d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PACBIO REVIO SEQUENCING^^ !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| SMRT Cell || $2,900 || $3,190 || per SMRT Cell || Fastq stored for 1y. Trace data stored only 30d.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
^^ - through collaboration with nearby academic shared resources&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LIBRARY GENERATION ==&lt;br /&gt;
&lt;br /&gt;
=== SHORT READ LIBRARY - DNA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ILLUMINA Sample Preparation !! colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:blue;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;STANDARD THROUGHPUT DNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for individual samples. Repreps will typically be attempted on failed samples without charge. || colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center; color:blue;&amp;quot; | &#039;&#039;&#039;HIGH THROUGHPUT DNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for sample batches. Repreps will NOT be attempted on failed samples without charge. Low volume (&amp;lt;=5ul) submission must be coordinated with BMC staff. Initial QC not included.&lt;br /&gt;
|-&lt;br /&gt;
! ILLUMINA Sample Preparation !! Type !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | LIGATION BASED NEB UltraII || STD || per sample || $105 || $115 || Includes QC, adapter ligation, size selection, barcoding, enrichment, and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 24 || style=&amp;quot;color:blue;&amp;quot; | $900 || style=&amp;quot;color:blue;&amp;quot; | $990 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes adapter ligation, size selection, barcoding, enrichment, and quality control spotcheck (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 96 || style=&amp;quot;color:blue;&amp;quot; | $1,800 || style=&amp;quot;color:blue;&amp;quot; | $1,980&lt;br /&gt;
|-&lt;br /&gt;
| Tagmentation &amp;amp;nbsp;&amp;amp;nbsp;NEXTERA-XT || rowspan=&amp;quot;2&amp;quot; | STD || rowspan=&amp;quot;2&amp;quot; | per Sample || $105 || $115 || rowspan=&amp;quot;2&amp;quot; | Includes set-up, tagmentation, indexing, enrichment, and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| Tagmentation &amp;amp;nbsp;&amp;amp;nbsp;NEXTERA-FLEX || $157 || $173&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | NEXTERA-XT OR FLEX || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $900 || style=&amp;quot;color:blue;&amp;quot; | $990 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes tagmentation, indexing, enrichment, and quality control spotcheck (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,800 || style=&amp;quot;color:blue;&amp;quot; | $1,980&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 16S Amplicon || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 48 || style=&amp;quot;color:blue;&amp;quot; | $1,900 || style=&amp;quot;color:blue;&amp;quot; | $2,090 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes normalization, enrichment, pooling and quality control (SYBR and FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | add&#039;l 48 || style=&amp;quot;color:blue;&amp;quot; | $650 || style=&amp;quot;color:blue;&amp;quot; | $715&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Other Amplicon || style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | 48 || style=&amp;quot;color:blue;&amp;quot; | $1,600 || style=&amp;quot;color:blue;&amp;quot; | $1,760 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes normalization, enrichment, pooling and quality control (SYBR and FA). &amp;amp;nbsp;&amp;amp;nbsp;Samples *must* be submitted amplified with appropriate linkers.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | HTL || style=&amp;quot;color:blue;&amp;quot; | add&#039;l 48 || style=&amp;quot;color:blue;&amp;quot; | $630 || style=&amp;quot;color:blue;&amp;quot; | $693&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;ADDITIONAL FEES&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Samples not in proper input format will be subject to these additional charges.&lt;br /&gt;
|-&lt;br /&gt;
| High Throughput Setup || || 48 samples || $60 || $66 ||&lt;br /&gt;
|-&lt;br /&gt;
| Sample Cleanup || || per sample || $5 || $5.50 || SPRI cleanup of samples to remove impurities.&lt;br /&gt;
|-&lt;br /&gt;
| Quantification || || per sample || $10 || $11 || Quantification of samples (FA) prior to arraying.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SHORT READ LIBRARY - RNA ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ILLUMINA Sample Preparation !! colspan=&amp;quot;3&amp;quot; style=&amp;quot;color:blue;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;STANDARD RNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Prices for individual samples. Repreps will typically be attempted on failed samples without charge. || colspan=&amp;quot;3&amp;quot; style=&amp;quot;font-weight:bold; text-align:center; color:blue;&amp;quot; | &#039;&#039;&#039;HIGH THROUGHPUT RNA&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Repreps will NOT be attempted on failed samples without charge. Low volume (&amp;lt;=5ul) submission must be coordinated with BMC staff. Initial QC not included. Mixing of multiple projects not recommended.&lt;br /&gt;
|-&lt;br /&gt;
! ILLUMINA Sample Preparation !! Type !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | polyA based isolation &amp;amp;nbsp;&amp;amp;nbsp;NEB UltraII RNAseq || &#039;&#039;&#039;STD&#039;&#039;&#039; || per sample || $157 || $173 || Includes QC, polyA isolation, generation of cDNA, library construction, indexing and quality control (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,500 || style=&amp;quot;color:blue;&amp;quot; | $1,650 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,000 || style=&amp;quot;color:blue;&amp;quot; | $3,300&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | High Throughput 3&#039; Digital Gene Expression (HT3DGE) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $1,050 || style=&amp;quot;color:blue;&amp;quot; | $1,155 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes generation of cDNA, library construction, indexing and library quality control. Does not include sample QC.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,100 || style=&amp;quot;color:blue;&amp;quot; | $2,310&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Total RNA sequencing &amp;amp;nbsp;&amp;amp;nbsp;NEB RNAseq +Ribodepletion || &#039;&#039;&#039;STD&#039;&#039;&#039; || per sample || $235 || $258.50 || Includes sample QC, ribosomal depletion, generation of cDNA, library construction, indexing and library quality control.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only, covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,500 || style=&amp;quot;color:blue;&amp;quot; | $2,750 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (NEB only, covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $5,000 || style=&amp;quot;color:blue;&amp;quot; | $5,500&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Low Input polyA+ &amp;amp;nbsp;&amp;amp;nbsp;Clontech SMARTseq + NexteraXT or Flex || &#039;&#039;&#039;STD&#039;&#039;&#039; v4 || per sample || $262 || $289 || rowspan=&amp;quot;3&amp;quot; | Includes generation of cDNA, amplification, library construction, indexing and quality control (SYBR + FA). Single sample includes initial QC.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; v2 || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $2,000 || style=&amp;quot;color:blue;&amp;quot; | $2,200&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; v2 || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,200 || style=&amp;quot;color:blue;&amp;quot; | $3,520&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Low Input Mammalian Total &amp;amp;nbsp;&amp;amp;nbsp;Clontech ZapR Kit || STD || per sample || $210 || $231 || Includes generation of cDNA, amplification, library construction, rRNA degradation, indexing and quality control (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;24&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $3,000 || style=&amp;quot;color:blue;&amp;quot; | $3,300 || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;color:blue;&amp;quot; | Includes polyA isolation, generation of cDNA, library construction, indexing and spot QC (SYBR + FA).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;&#039;HTL&#039;&#039;&#039; (covaris RNA fragmentation) || style=&amp;quot;color:blue;&amp;quot; | &#039;&#039;96&#039;&#039; || style=&amp;quot;color:blue;&amp;quot; | $5,000 || style=&amp;quot;color:blue;&amp;quot; | $5,500&lt;br /&gt;
|-&lt;br /&gt;
| Small RNA || STD || per sample || $289 || $318 || Uses NEB, BIOO or QIAGEN small RNA kit&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; style=&amp;quot;font-weight:bold; text-align:center;&amp;quot; | &#039;&#039;&#039;ADDITIONAL FEES&#039;&#039;&#039; &amp;amp;nbsp;&amp;amp;nbsp;Samples not in proper input format will be subject to these additional charges.&lt;br /&gt;
|-&lt;br /&gt;
| High Throughput Setup || || 48 samples || $60 || $66 ||&lt;br /&gt;
|-&lt;br /&gt;
| Sample Cleanup || || per sample || $5 || $5.50 || SPRI cleanup of samples to remove impurities.&lt;br /&gt;
|-&lt;br /&gt;
| Quantification || || per sample || $10 || $11 || Quantification of samples (FA) prior to arraying.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
=== LONG READ LIBRARIES ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Oxford Nanopore Sample Preparation !! Nanopore Kit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit&lt;br /&gt;
|-&lt;br /&gt;
| Standard Ligation || LSK || $160 || $176 || per sample/pool&lt;br /&gt;
|-&lt;br /&gt;
| Native Barcoding &amp;amp;nbsp;&amp;amp;nbsp;(ligation indexing) || - || $50 || $55 || rowspan=&amp;quot;5&amp;quot; | per sample&lt;br /&gt;
|-&lt;br /&gt;
| SMARTseq -&amp;gt; Ligation || Cv4+LSK || $300 || $330&lt;br /&gt;
|-&lt;br /&gt;
| Rapid Prep (tagment - ~10-20kb) || RAD || $150 || $165&lt;br /&gt;
|-&lt;br /&gt;
| Long Insert Prep || RAD (modified, target &amp;gt;100kb) || $262 || $289&lt;br /&gt;
|-&lt;br /&gt;
| Direct RNA || RNA004 || $160 || $176&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PacBio Sample Preparation !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! unit&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Basic Library || $315 || $346 || Per Library&lt;br /&gt;
|-&lt;br /&gt;
| $157 || $173 || Per add&#039;l Sample&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Genomic Library || $472 || $520 || Per Library&lt;br /&gt;
|-&lt;br /&gt;
| $235 || $258 || Per add&#039;l Sample&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SAMPLE EXTRACTION ==&lt;br /&gt;
&lt;br /&gt;
=== CHEMAGIC360 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! TYPE !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT &lt;br /&gt;
|-&lt;br /&gt;
| DNA || 96 || $700 || $770 &lt;br /&gt;
|-&lt;br /&gt;
| RNA || 96 || $800 || $880 &lt;br /&gt;
|-&lt;br /&gt;
| RNA/DNA Isolation - Assisted || 12 samples || $300 || $330 &lt;br /&gt;
|-&lt;br /&gt;
| RNA/DNA Isolation - Assisted || 96 samples || $1,000 || $1,100 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SINGLE CELL &amp;amp; SPATIAL SERVICES ==&lt;br /&gt;
&lt;br /&gt;
=== 10X CHROMIUM ===&lt;br /&gt;
&lt;br /&gt;
Please email biomicro@mit.edu two weeks prior to desired submission date so we will have reagents ready for you.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 10X USAGE !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;Assisted Service&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;DIGITAL GENE EXPRESSION&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 5&#039; RNA &amp;amp;nbsp;&amp;amp;nbsp;3&#039; RNA || setup || $1,015 || $1,116.50 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $1,750 || $1,925 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 5&#039; RNA &amp;amp;nbsp;&amp;amp;nbsp;3&#039; RNA - on chip multiplexing || setup || $1,150 || $1,265 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per 4 samples || $2,305 || $2,535 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Fixed RNA (Flex v2) &amp;amp;nbsp;&amp;amp;nbsp;probe based. human/mouse only || setup || $2,700 || $2,970 || charge per submission - up to 48 samples&lt;br /&gt;
|-&lt;br /&gt;
| per sample (1-plex) || $270 || $297 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Amplicon (CITE-SEQ, TCR, BCR, antibody barcode, etc // per amplicon) || setup || $470 || $517 || additional prep beyond DGE&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $45 || $50 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;scATACseq&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | ATACseq || setup || $880 || $968 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $1,675 || $1,843 || Includes QC and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;Multiome (ATAC+3&#039;RNA)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | MULTI || setup || $1,800 || $1,980 || charge per submission&lt;br /&gt;
|-&lt;br /&gt;
| per sample || $3,100 || $3,410 || Includes QC of cDNA and creation of Short Read Library&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;CANCELLATION&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| per session ||  || $200 || $220 || &amp;lt;24h notice&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VISIUM ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SLIDES !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| HD: polyA or FFPE (human/mouse only) || 1 slide / 2 tiles || $7,850 || $8,596 || Includes library generation only.&lt;br /&gt;
|-&lt;br /&gt;
| QC - FFPE Scroll || per scroll || $60 || $66 || RNA isolation from FFPE scroll&lt;br /&gt;
|-&lt;br /&gt;
| QC - Fresh Frozen Scroll || per scroll || $40 || $44 || RNA isolation from FF scroll&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AVITI24 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! AVITI24 SPATIAL !! Batch Size !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Slide Only || rowspan=&amp;quot;5&amp;quot; | per slide || $150 || $165 || slide: 1, 12, or 48 well&lt;br /&gt;
|-&lt;br /&gt;
| Optimization Only || $800 || $880 || used when the run fails&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.elementbiosciences.com/products/aviti24/cytoprofiling Teton Defined Panel] || $7,200 || $7,920 || scroll to predefined panels&lt;br /&gt;
|-&lt;br /&gt;
| Atlas Short || $5,500 || $6,050 || for CRISPR screens / short sequencing&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.elementbiosciences.com/products/aviti24/cytoprofiling Antibody Add-on] || $360 || $396 || scroll to flexible protein customization&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OTHER GENOMICS SERVICES ==&lt;br /&gt;
&lt;br /&gt;
=== [[BioMicroCenter:QC|QUALITY CONTROL]] ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! QUALITY CONTROL !! unit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Analyzer: RNA or DNA || per sample || $15 || $16.50 ||&lt;br /&gt;
|-&lt;br /&gt;
| Fragment Analyzer: Preloaded row || per row (12) || $80 || $88 || 2ul per sample in each well using plates from BMC&lt;br /&gt;
|-&lt;br /&gt;
| FemtoPulse: RNA or DNA || per sample || $30 || $33 ||&lt;br /&gt;
|-&lt;br /&gt;
| FemtoPulse: Preloaded Row || per row (12) || $160 || $176 || 2ul per sample in each well using plates from BMC&lt;br /&gt;
|-&lt;br /&gt;
| BioAnalyzer: Walkup Service || per chip || $50 || $55 ||&lt;br /&gt;
|-&lt;br /&gt;
| qPCR only (Short read quantification test) || per sample || $25 || $27.50 || 4 point serial dilution&lt;br /&gt;
|-&lt;br /&gt;
| Full plate qPCR (short read quantification test) || per plate || $400 || $440 || full plate only (exclude column 1 for standards) - must be to BMC specifications.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;Sample QC services:&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Fresh Frozen Curl || per curl || $40 || $44 ||&lt;br /&gt;
|-&lt;br /&gt;
| FFPE Curl || per curl || $60 || $66 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== OLIGO SYNTHESIS ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! Service !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | DNAscript Syntax || Setup (per run) || $1,000 || $1,100 || Per run cost&lt;br /&gt;
|-&lt;br /&gt;
| 2000 nucleotide synthesis || $500 || $550 || Up to 96 samples&lt;br /&gt;
|-&lt;br /&gt;
| 8000 nucleotide synthesis || $1,500 || $1,650 || Up to 96 samples&lt;br /&gt;
|-&lt;br /&gt;
| add Biotin (max48) || $115 || $126 || max 48 per run and 2 per oligo. Couple to T only.&lt;br /&gt;
|-&lt;br /&gt;
| add Fluor || $300 || $330 ||&lt;br /&gt;
|-&lt;br /&gt;
| add quench || $100 || $110 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== [[BioMicroCenter:RTPCR|REAL TIME PCR]] ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OTHER LAB SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB / MIT]] !! unit !! SIGN UP !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Roche LightCycler 480 || $15 || per plate || [https://mit.ilabsolutions.com/schedules/261680#/schedule/ CALENDAR] *available for CORE only || Email biomicro@mit.edu for training&lt;br /&gt;
|-&lt;br /&gt;
| SYBR Green (KAPA/Roche) || $45 || per ml ||  || Available for MIT only&lt;br /&gt;
|-&lt;br /&gt;
| 96-well PLATES || $10 || per plate ||  || Available for MIT only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== OTHER LAB SERVICES ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! OTHER LAB SERVICES !! [[BioMicroCenter:CoreDeps|CORE LAB / MIT]] !! unit !! SIGN UP !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;COVARIS SONICATOR&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| COVARIS E220 || $20 || per hour || [https://mit.ilabsolutions.com/equipment/261752/?tab=schedule ilab calendar] || tubes available for purchase.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;PIPPIN PREP&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Gel Isolation || $75 || per gel (5 lanes) || TBA ||&lt;br /&gt;
|-&lt;br /&gt;
| Training || $25 || per session || TBA || Email biomicro@mit.edu for training.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;PLATE READER&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Varioskan || $18 || per hour || [https://mit.ilabsolutions.com/schedules/262715#/schedule/ CALENDAR] || Email biomicro@mit.edu for training&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;ROBOTICS&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Tecan EVO 150 || $75 || per 1h block - based on scheduled time. || [https://mit.ilabsolutions.com/schedules/262347#/schedule/ CALENDAR] ||&lt;br /&gt;
|-&lt;br /&gt;
| non-filter tips || $8 || per box ||  || ** Please let us know if there is additional plasticware you would like us to stock.&lt;br /&gt;
|-&lt;br /&gt;
| Filter tips || $12.00 || per box ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Training || $65 || per hour || Email biomicro@mit.edu ||&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | &#039;&#039;&#039;NANODROP&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Nanodrop || -- ||  || Walk up service || * no charge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== COMPUTATIONAL SERVICES ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! COMPUTATIONAL SERVICES !! unit !! [[BioMicroCenter:CoreDeps|CORE LAB]] !! Other MIT !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Support || per hour || $90 || $125 || Very limited support for non-MIT users&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Share || per 0.1FTE || $1,250 || N/A || MIT only. Priority access to informatics.&lt;br /&gt;
|-&lt;br /&gt;
| Ingenuity Pathway Analysis || per dataset || $100 || $110 || Recovery of licence cost.&lt;br /&gt;
|-&lt;br /&gt;
| Active Data storage || per TB per year || $100 || $300 ||&lt;br /&gt;
|-&lt;br /&gt;
| Tape Archive / Recovery || per tape || $60 || $70 ||&lt;br /&gt;
|-&lt;br /&gt;
| Informatics Training Classes || per session || $50 || $100 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
OLD&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2025 | FY2025 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2023b | FY2023-Feb Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2023 | FY2023 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2022 | FY2022 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2021 | FY2021 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2019 | FY2019 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2017 | FY2017 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2016 | FY2016 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2015 | FY2015 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2014 | FY2014 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2013 | FY2013 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2012 | FY2012 Pricing]]&amp;lt;BR&amp;gt;&lt;br /&gt;
[[BioMicroCenter:PricingFY2011 | FY2011 Pricing]]&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123858</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123858"/>
		<updated>2026-02-18T18:22:56Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
window.BMC_DEBUG = true;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return; // already ran&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  window.BMC = BMC; // expose globally for debugging&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF — hook registered AFTER BMC is fully defined&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  // Fire immediately — multiple strategies&lt;br /&gt;
  function tryInit() {&lt;br /&gt;
    if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return;&lt;br /&gt;
    if ( typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config ) { BMC.init(); }&lt;br /&gt;
  }&lt;br /&gt;
  tryInit();&lt;br /&gt;
  setTimeout( tryInit, 500 );&lt;br /&gt;
  setTimeout( tryInit, 1500 );&lt;br /&gt;
  if ( document.readyState !== &#039;loading&#039; ) {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123856</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123856"/>
		<updated>2026-02-18T18:21:07Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$.getScript( &#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039;, function () {&lt;br /&gt;
  BMC.init();&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123854</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123854"/>
		<updated>2026-02-18T18:19:30Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$.getScript( &#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039; );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123852</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123852"/>
		<updated>2026-02-18T18:11:20Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.hook( &#039;wikipage.content&#039; ).add( function () { $.getScript( &#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039; ); } );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123850</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123850"/>
		<updated>2026-02-18T18:06:34Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
  function loadBMC() {&lt;br /&gt;
    $.getScript( &#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039; );&lt;br /&gt;
  }&lt;br /&gt;
  if ( window.jQuery ) {&lt;br /&gt;
    loadBMC();&lt;br /&gt;
  } else {&lt;br /&gt;
    window.addEventListener( &#039;load&#039;, loadBMC );&lt;br /&gt;
  }&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123849</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123849"/>
		<updated>2026-02-18T18:05:44Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.using( &#039;jquery&#039;, function() {&lt;br /&gt;
  $.getScript( &#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039; );&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123848</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123848"/>
		<updated>2026-02-18T18:03:00Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
window.BMC_DEBUG = true;&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return; // already ran&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  window.BMC = BMC; // expose globally for debugging&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF — hook registered AFTER BMC is fully defined&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  // Fire immediately — multiple strategies&lt;br /&gt;
  function tryInit() {&lt;br /&gt;
    if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return;&lt;br /&gt;
    if ( typeof mw !== &#039;undefined&#039; &amp;amp;&amp;amp; mw.config ) { BMC.init(); }&lt;br /&gt;
  }&lt;br /&gt;
  tryInit();&lt;br /&gt;
  setTimeout( tryInit, 500 );&lt;br /&gt;
  setTimeout( tryInit, 1500 );&lt;br /&gt;
  if ( document.readyState !== &#039;loading&#039; ) {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123847</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123847"/>
		<updated>2026-02-18T18:00:20Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$.getScript(&#039;/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039;);&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123832</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123832"/>
		<updated>2026-02-18T17:19:30Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&#039;https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js?action=raw&amp;amp;ctype=text/javascript&#039;);&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123831</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123831"/>
		<updated>2026-02-18T17:18:42Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Replaced content with &amp;quot;importScript(&amp;#039;User:Gibcus/common.js&amp;#039;);&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;importScript(&#039;User:Gibcus/common.js&#039;);&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123830</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123830"/>
		<updated>2026-02-18T17:17:45Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return; // already ran&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF — hook registered AFTER BMC is fully defined&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  // Also fire immediately in case the hook already fired&lt;br /&gt;
  if ( document.readyState !== &#039;loading&#039; ) {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123829</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123829"/>
		<updated>2026-02-18T17:17:34Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123827</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123827"/>
		<updated>2026-02-18T17:04:58Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123825</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123825"/>
		<updated>2026-02-18T16:55:08Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      if ( document.getElementById( &#039;bmc-topnav&#039; ) ) return; // already ran&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF — hook registered AFTER BMC is fully defined&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  // Also fire immediately in case the hook already fired&lt;br /&gt;
  if ( document.readyState !== &#039;loading&#039; ) {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123824</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123824"/>
		<updated>2026-02-18T16:51:20Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&#039;/index.php/User:Gibcus/vector-2022.js?action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     0. WAIT FOR DOM&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, function () { BMC.init(); } );&lt;br /&gt;
  } else {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123823</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123823"/>
		<updated>2026-02-18T16:50:36Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&#039;/index.php/User:Gibcus/vector-2022.js?action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
document.getElementById(&#039;bmc-topnav&#039;)&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     0. WAIT FOR DOM&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, function () { BMC.init(); } );&lt;br /&gt;
  } else {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123822</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123822"/>
		<updated>2026-02-18T16:50:02Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.load(&#039;/index.php/User:Gibcus/vector-2022.js?action=raw&amp;amp;ctype=text/javascript&#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     0. WAIT FOR DOM&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, function () { BMC.init(); } );&lt;br /&gt;
  } else {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123816</id>
		<title>User:Gibcus/vector-2022.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/vector-2022.js&amp;diff=123816"/>
		<updated>2026-02-18T15:59:30Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Created page with &amp;quot;/**  * User:Gibcus/common.js  * MIT BioMicro Center — Modern Wiki Theme Engine  *  * Paste this entire file into:  * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js  *  * It applies to YOUR login session only.  * To deploy for all users, an admin with editinterface rights  * must paste it into MediaWiki:Common.js instead.  */  ( function () {   &amp;#039;use strict&amp;#039;;    /* ============================================================      0. WAIT FOR DOM   ==============...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     0. WAIT FOR DOM&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, function () { BMC.init(); } );&lt;br /&gt;
  } else {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123813</id>
		<title>User:Gibcus/common.js</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=User:Gibcus/common.js&amp;diff=123813"/>
		<updated>2026-02-18T15:37:04Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: Created page with &amp;quot;/**  * User:Gibcus/common.js  * MIT BioMicro Center — Modern Wiki Theme Engine  *  * Paste this entire file into:  * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js  *  * It applies to YOUR login session only.  * To deploy for all users, an admin with editinterface rights  * must paste it into MediaWiki:Common.js instead.  */  ( function () {   &amp;#039;use strict&amp;#039;;    /* ============================================================      0. WAIT FOR DOM   ==============...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * User:Gibcus/common.js&lt;br /&gt;
 * MIT BioMicro Center — Modern Wiki Theme Engine&lt;br /&gt;
 *&lt;br /&gt;
 * Paste this entire file into:&lt;br /&gt;
 * https://bmcwiki.mit.edu/index.php/User:Gibcus/common.js&lt;br /&gt;
 *&lt;br /&gt;
 * It applies to YOUR login session only.&lt;br /&gt;
 * To deploy for all users, an admin with editinterface rights&lt;br /&gt;
 * must paste it into MediaWiki:Common.js instead.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     0. WAIT FOR DOM&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  mw.hook( &#039;wikipage.content&#039; ).add( function () {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  } );&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     1. DESIGN TOKENS&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var TOKENS = {&lt;br /&gt;
    black:    &#039;#0d0d0d&#039;,&lt;br /&gt;
    darkGray: &#039;#1a1a1a&#039;,&lt;br /&gt;
    midGray:  &#039;#2e2e2e&#039;,&lt;br /&gt;
    border:   &#039;#e2ddd6&#039;,&lt;br /&gt;
    bg:       &#039;#f5f3ef&#039;,&lt;br /&gt;
    bgCard:   &#039;#ffffff&#039;,&lt;br /&gt;
    gold:     &#039;#b8913a&#039;,&lt;br /&gt;
    goldHov:  &#039;#d4a84b&#039;,&lt;br /&gt;
    red:      &#039;#8b1a1a&#039;,   // MIT red accent&lt;br /&gt;
    text:     &#039;#1c1c1c&#039;,&lt;br /&gt;
    textMid:  &#039;#555555&#039;,&lt;br /&gt;
    textLight:&#039;#888888&#039;,&lt;br /&gt;
    fontBody: &amp;quot;&#039;DM Sans&#039;, &#039;Helvetica Neue&#039;, Arial, sans-serif&amp;quot;,&lt;br /&gt;
    fontMono: &amp;quot;&#039;DM Mono&#039;, &#039;Courier New&#039;, monospace&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     2. GLOBAL CSS — injected once, applies to every BMC page&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var GLOBAL_CSS = [&lt;br /&gt;
    &amp;quot;@import url(&#039;https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;1,400&amp;amp;family=DM+Mono:wght@400;500&amp;amp;display=swap&#039;);&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Reset MediaWiki chrome --- */&lt;br /&gt;
    &#039;#mw-navigation, #mw-head, #mw-panel, #mw-sidebar-button,&#039;,&lt;br /&gt;
    &#039;#mw-sidebar-checkbox, .mw-footer, #footer, #p-logo,&#039;,&lt;br /&gt;
    &#039;.vector-menu-tabs, .vector-header-start .vector-header-logo,&#039;,&lt;br /&gt;
    &#039;.mw-portlet-lang, #p-cactions, .vector-page-toolbar { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#content, #mw-content-text, .mw-body, #mw-body-content,&#039;,&lt;br /&gt;
    &#039;.mw-body-content { margin: 0 !important; padding: 0 !important;&#039;,&lt;br /&gt;
    &#039;max-width: none !important; border: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;body { background: &#039; + TOKENS.bg + &#039; !important;&#039;,&lt;br /&gt;
    &#039;font-family: &#039; + TOKENS.fontBody + &#039; !important;&#039;,&lt;br /&gt;
    &#039;color: &#039; + TOKENS.text + &#039; !important; margin: 0 !important; padding: 0 !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* hide edit pencil icons in headings */&lt;br /&gt;
    &#039;.mw-editsection { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- BMC Top Nav Bar --- */&lt;br /&gt;
    &#039;#bmc-topnav {&#039;,&lt;br /&gt;
    &#039;  position: sticky; top: 0; z-index: 1000;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  padding: 0 32px; height: 56px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 0 rgba(255,255,255,0.06);&#039;,&lt;br /&gt;
    &#039;  gap: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo {&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #fff; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: -0.01em; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  padding-right: 32px;&#039;,&lt;br /&gt;
    &#039;  border-right: 1px solid #333;&#039;,&lt;br /&gt;
    &#039;  margin-right: 8px;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 10px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo span.accent { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-topnav .bmc-nav-logo img { height: 28px; width: 28px; border-radius: 4px; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center;&#039;,&lt;br /&gt;
    &#039;  gap: 2px; flex: 1; overflow-x: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a {&#039;,&lt;br /&gt;
    &#039;  color: #aaa; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.8em; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.03em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 13px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s, background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a:hover { color: #fff; background: #2a2a2a; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-links a.bmc-nav-active { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;#bmc-nav-right {&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 12px; margin-left: auto;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.75em; letter-spacing: 0.05em;&#039;,&lt;br /&gt;
    &#039;  padding: 6px 14px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none; white-space: nowrap;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-ilabs-btn:hover { background: &#039; + TOKENS.goldHov + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search {&#039;,&lt;br /&gt;
    &#039;  color: #888; font-size: 1.1em;&#039;,&lt;br /&gt;
    &#039;  text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  padding: 4px 8px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-nav-right a.bmc-nav-search:hover { color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page wrapper --- */&lt;br /&gt;
    &#039;#bmc-page-wrap {&#039;,&lt;br /&gt;
    &#039;  max-width: 1140px; margin: 0 auto;&#039;,&lt;br /&gt;
    &#039;  padding: 40px 32px 80px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;@media (max-width: 768px) {&#039;,&lt;br /&gt;
    &#039;  #bmc-page-wrap { padding: 24px 16px 60px; }&#039;,&lt;br /&gt;
    &#039;  #bmc-topnav { padding: 0 16px; }&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Page title --- */&lt;br /&gt;
    &#039;#bmc-page-title {&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title h1 {&#039;,&lt;br /&gt;
    &#039;  font-size: 2em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; letter-spacing: -0.025em;&#039;,&lt;br /&gt;
    &#039;  line-height: 1.1; margin: 0 0 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-title .bmc-subtitle {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  font-weight: 400;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Section headings --- */&lt;br /&gt;
    &#039;#bmc-page-wrap h2 {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 40px 0 16px;&#039;,&lt;br /&gt;
    &#039;  padding-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap h3 {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  margin: 28px 0 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic body content prose --- */&lt;br /&gt;
    &#039;#bmc-page-wrap p {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid transparent;&#039;,&lt;br /&gt;
    &#039;  transition: border-color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap a:hover { border-bottom-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic list styling --- */&lt;br /&gt;
    &#039;#bmc-page-wrap ul, #bmc-page-wrap ol {&#039;,&lt;br /&gt;
    &#039;  padding-left: 1.4em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.92em; line-height: 1.7;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; margin-bottom: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Generic wiki tables → clean style --- */&lt;br /&gt;
    &#039;#bmc-page-wrap table.wikitable, #bmc-page-wrap table {&#039;,&lt;br /&gt;
    &#039;  border-collapse: collapse; width: 100%;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; margin-bottom: 24px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table th {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ddd; font-weight: 500;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 14px; text-align: left;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.82em; letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table td {&#039;,&lt;br /&gt;
    &#039;  padding: 9px 14px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.text + &#039;; vertical-align: top;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:last-child td { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-page-wrap table tr:hover td { background: #faf8f5; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Card component --- */&lt;br /&gt;
    &#039;.bmc-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-card-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-bottom: 32px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Inline badge --- */&lt;br /&gt;
    &#039;.bmc-badge {&#039;,&lt;br /&gt;
    &#039;  display: inline-block;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.7em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.06em; text-transform: uppercase;&#039;,&lt;br /&gt;
    &#039;  padding: 2px 7px; border-radius: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.gold + &#039;22;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.gold + &#039;; margin-left: 6px;&#039;,&lt;br /&gt;
    &#039;  vertical-align: middle;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- TOC hide (we build nav instead) --- */&lt;br /&gt;
    &#039;#toc, .toc { display: none !important; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Breadcrumb strip under nav --- */&lt;br /&gt;
    &#039;#bmc-breadcrumb {&#039;,&lt;br /&gt;
    &#039;  background: #fff;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 10px 32px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textLight + &#039;;&#039;,&lt;br /&gt;
    &#039;  display: flex; align-items: center; gap: 6px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a { color: &#039; + TOKENS.textMid + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-breadcrumb .sep { color: #ccc; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* --- Pricing-specific styles (reused from earlier) --- */&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle {&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 4px;&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 10px; padding: 4px;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 24px; width: fit-content;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button {&#039;,&lt;br /&gt;
    &#039;  padding: 7px 18px; border: none;&#039;,&lt;br /&gt;
    &#039;  border-radius: 7px; font-size: 0.8em;&#039;,&lt;br /&gt;
    &#039;  font-weight: 600; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em;&#039;,&lt;br /&gt;
    &#039;  transition: all 0.15s;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: transparent; color: #777;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-core  { background: #1a6b3c; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-mit   { background: #8b1a1a; color: #fff; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-tier-toggle button.active-nonmit{ background: #1a3b8b; color: #fff; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    &#039;.bmc-price-section {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 12px; overflow: hidden;&#039;,&lt;br /&gt;
    &#039;  margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 3px rgba(0,0,0,0.04);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header {&#039;,&lt;br /&gt;
    &#039;  background: #faf9f7;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  padding: 13px 20px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.88em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: #333; cursor: pointer;&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: center;&#039;,&lt;br /&gt;
    &#039;  user-select: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header:hover { background: #f2f0ec; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header .chevron { color: #aaa; font-size: 0.8em; transition: transform 0.2s; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-section-header.collapsed .chevron { transform: rotate(-90deg); }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row {&#039;,&lt;br /&gt;
    &#039;  display: flex; justify-content: space-between; align-items: flex-start;&#039;,&lt;br /&gt;
    &#039;  padding: 11px 20px;&#039;,&lt;br /&gt;
    &#039;  border-bottom: 1px solid #f5f2ee;&#039;,&lt;br /&gt;
    &#039;  transition: background 0.1s; gap: 16px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:last-child { border-bottom: none; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row:hover { background: #faf8f5; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-name {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; color: #222;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-unit {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #aaa;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;; margin-top: 2px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-row-note {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.74em; color: #999;&#039;,&lt;br /&gt;
    &#039;  font-style: italic; margin-top: 3px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount {&#039;,&lt;br /&gt;
    &#039;  font-size: 1em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  font-family: &#039; + TOKENS.fontMono + &#039;;&#039;,&lt;br /&gt;
    &#039;  white-space: nowrap; text-align: right;&#039;,&lt;br /&gt;
    &#039;  min-width: 90px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-core   { color: #1a6b3c; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-mit    { color: #8b1a1a; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-nonmit { color: #1a3b8b; }&#039;,&lt;br /&gt;
    &#039;.bmc-price-amount.tier-na     { color: #ccc; font-style: italic; font-size: 0.82em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* search bar */&lt;br /&gt;
    &#039;#bmc-pricing-search-wrap {&#039;,&lt;br /&gt;
    &#039;  position: relative; margin-bottom: 20px; width: 260px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search {&#039;,&lt;br /&gt;
    &#039;  width: 100%; padding: 9px 14px 9px 36px;&#039;,&lt;br /&gt;
    &#039;  border: 1.5px solid #ddd; border-radius: 8px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.85em; font-family: &#039; + TOKENS.fontBody + &#039;;&#039;,&lt;br /&gt;
    &#039;  background: #fff; outline: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search:focus { border-color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;#bmc-pricing-search-icon {&#039;,&lt;br /&gt;
    &#039;  position: absolute; left: 12px; top: 50%;&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-50%); color: #aaa; pointer-events: none;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* tier indicator pill */&lt;br /&gt;
    &#039;#bmc-tier-pill {&#039;,&lt;br /&gt;
    &#039;  display: inline-flex; align-items: center; gap: 8px;&#039;,&lt;br /&gt;
    &#039;  padding: 5px 12px; border-radius: 6px;&#039;,&lt;br /&gt;
    &#039;  font-size: 0.78em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  letter-spacing: 0.04em; margin-bottom: 20px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* homepage card grid */&lt;br /&gt;
    &#039;.bmc-home-grid {&#039;,&lt;br /&gt;
    &#039;  display: grid;&#039;,&lt;br /&gt;
    &#039;  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));&#039;,&lt;br /&gt;
    &#039;  gap: 16px; margin-top: 24px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.bgCard + &#039;;&#039;,&lt;br /&gt;
    &#039;  border: 1px solid &#039; + TOKENS.border + &#039;;&#039;,&lt;br /&gt;
    &#039;  border-radius: 14px; padding: 22px 24px;&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 1px 4px rgba(0,0,0,0.05);&#039;,&lt;br /&gt;
    &#039;  transition: box-shadow 0.2s, transform 0.2s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card:hover {&#039;,&lt;br /&gt;
    &#039;  box-shadow: 0 4px 16px rgba(0,0,0,0.1);&#039;,&lt;br /&gt;
    &#039;  transform: translateY(-2px);&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-icon {&#039;,&lt;br /&gt;
    &#039;  font-size: 1.6em; margin-bottom: 12px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-title {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.95em; font-weight: 600;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.black + &#039;; margin-bottom: 8px;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links {&#039;,&lt;br /&gt;
    &#039;  list-style: none; padding: 0; margin: 0;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.84em; line-height: 1.8;&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a {&#039;,&lt;br /&gt;
    &#039;  color: &#039; + TOKENS.textMid + &#039;; text-decoration: none;&#039;,&lt;br /&gt;
    &#039;  border-bottom: none;&#039;,&lt;br /&gt;
    &#039;  transition: color 0.15s;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li a:hover { color: &#039; + TOKENS.gold + &#039;; }&#039;,&lt;br /&gt;
    &#039;.bmc-home-card .card-links li::before {&#039;,&lt;br /&gt;
    &#039;  content: &amp;quot;→ &amp;quot;; color: &#039; + TOKENS.gold + &#039;; font-size: 0.85em;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* contact strip */&lt;br /&gt;
    &#039;#bmc-contact-strip {&#039;,&lt;br /&gt;
    &#039;  background: &#039; + TOKENS.darkGray + &#039;;&#039;,&lt;br /&gt;
    &#039;  color: #ccc; border-radius: 12px;&#039;,&lt;br /&gt;
    &#039;  padding: 24px 28px; margin-top: 32px;&#039;,&lt;br /&gt;
    &#039;  display: flex; gap: 32px; flex-wrap: wrap; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-item {&#039;,&lt;br /&gt;
    &#039;  font-size: 0.87em; display: flex; gap: 8px; align-items: center;&#039;,&lt;br /&gt;
    &#039;}&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip a { color: &#039; + TOKENS.gold + &#039;; text-decoration: none; }&#039;,&lt;br /&gt;
    &#039;#bmc-contact-strip .contact-label { color: #666; font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.08em; }&#039;,&lt;br /&gt;
&lt;br /&gt;
  ].join(&#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     3. NAV STRUCTURE&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var NAV_LINKS = [&lt;br /&gt;
    { label: &#039;Home&#039;,         href: &#039;/index.php/BioMicroCenter&#039;,                  match: &#039;BioMicroCenter$&#039; },&lt;br /&gt;
    { label: &#039;Sequencing&#039;,   href: &#039;/index.php/BioMicroCenter:Sequencing&#039;,        match: &#039;Sequencing&#039; },&lt;br /&gt;
    { label: &#039;Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Library_Preparation&#039;, match: &#039;Library&#039; },&lt;br /&gt;
    { label: &#039;Single Cell&#039;,  href: &#039;/index.php/BioMicroCenter:SingleCell&#039;,        match: &#039;SingleCell|SpTx|Visium&#039; },&lt;br /&gt;
    { label: &#039;Long Read&#039;,    href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039;, match: &#039;Nanopore|PacBio&#039; },&lt;br /&gt;
    { label: &#039;Computing&#039;,    href: &#039;/index.php/BioMicroCenter:Computing&#039;,         match: &#039;Computing&#039; },&lt;br /&gt;
    { label: &#039;QC&#039;,           href: &#039;/index.php/BioMicroCenter:QC&#039;,               match: &#039;:QC&#039; },&lt;br /&gt;
    { label: &#039;Pricing&#039;,      href: &#039;/index.php/BioMicroCenter:Pricing&#039;,          match: &#039;Pricing&#039; },&lt;br /&gt;
    { label: &#039;People&#039;,       href: &#039;/index.php/BioMicroCenter:People&#039;,           match: &#039;People&#039; },&lt;br /&gt;
    { label: &#039;FAQ&#039;,          href: &#039;/index.php/BioMicroCenter:FAQ&#039;,              match: &#039;FAQ&#039; },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     4. MAIN BMC OBJECT&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  var BMC = {&lt;br /&gt;
&lt;br /&gt;
    page: mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4a. INIT ---- */&lt;br /&gt;
    init: function () {&lt;br /&gt;
      this.injectCSS();&lt;br /&gt;
      this.injectNav();&lt;br /&gt;
      this.injectBreadcrumb();&lt;br /&gt;
      this.wrapContent();&lt;br /&gt;
&lt;br /&gt;
      // Page-specific transforms&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        this.transformHomepage();&lt;br /&gt;
      } else if ( /Pricing/.test( this.page ) ) {&lt;br /&gt;
        this.transformPricing();&lt;br /&gt;
      } else {&lt;br /&gt;
        this.transformGeneric();&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4b. INJECT GLOBAL CSS ---- */&lt;br /&gt;
    injectCSS: function () {&lt;br /&gt;
      var style = document.createElement( &#039;style&#039; );&lt;br /&gt;
      style.id = &#039;bmc-theme-css&#039;;&lt;br /&gt;
      style.textContent = GLOBAL_CSS;&lt;br /&gt;
      document.head.appendChild( style );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4c. INJECT TOP NAV ---- */&lt;br /&gt;
    injectNav: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      var logoImg = document.querySelector( &#039;#p-logo img, .mw-wiki-logo&#039; );&lt;br /&gt;
      var logoSrc = logoImg ? logoImg.src : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var linksHtml = NAV_LINKS.map( function ( l ) {&lt;br /&gt;
        var active = new RegExp( l.match ).test( page ) ? &#039; bmc-nav-active&#039; : &#039;&#039;;&lt;br /&gt;
        return &#039;&amp;lt;a href=&amp;quot;&#039; + l.href + &#039;&amp;quot; class=&amp;quot;&#039; + active + &#039;&amp;quot;&amp;gt;&#039; + l.label + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      } ).join( &#039;&#039; );&lt;br /&gt;
&lt;br /&gt;
      var nav = document.createElement( &#039;div&#039; );&lt;br /&gt;
      nav.id = &#039;bmc-topnav&#039;;&lt;br /&gt;
      nav.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot; class=&amp;quot;bmc-nav-logo&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          ( logoSrc ? &#039;&amp;lt;img src=&amp;quot;&#039; + logoSrc + &#039;&amp;quot; alt=&amp;quot;BMC&amp;quot;&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
          &#039;BioMicro &amp;lt;span class=&amp;quot;accent&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-links&amp;quot;&amp;gt;&#039; + linksHtml + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;div id=&amp;quot;bmc-nav-right&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;/index.php/Special:Search&amp;quot; class=&amp;quot;bmc-nav-search&amp;quot; title=&amp;quot;Search&amp;quot;&amp;gt;⌕&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039; +&lt;br /&gt;
          &#039; class=&amp;quot;bmc-ilabs-btn&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Submit via iLabs ↗&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Insert before body content&lt;br /&gt;
      var body = document.body;&lt;br /&gt;
      body.insertBefore( nav, body.firstChild );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4d. BREADCRUMB ---- */&lt;br /&gt;
    injectBreadcrumb: function () {&lt;br /&gt;
      var page = this.page;&lt;br /&gt;
      if ( /^BioMicroCenter$/.test( page ) ) return; // no breadcrumb on homepage&lt;br /&gt;
&lt;br /&gt;
      var parts = page.split( &#039;:&#039; );&lt;br /&gt;
      var crumb = document.createElement( &#039;div&#039; );&lt;br /&gt;
      crumb.id = &#039;bmc-breadcrumb&#039;;&lt;br /&gt;
      crumb.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter&amp;quot;&amp;gt;Home&amp;lt;/a&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span class=&amp;quot;sep&amp;quot;&amp;gt;›&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;span&amp;gt;&#039; + ( parts[1] || parts[0] ).replace( /_/g, &#039; &#039; ) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
      var nav = document.getElementById( &#039;bmc-topnav&#039; );&lt;br /&gt;
      if ( nav ) nav.after( crumb );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4e. WRAP MAIN CONTENT ---- */&lt;br /&gt;
    wrapContent: function () {&lt;br /&gt;
      var content = document.getElementById( &#039;mw-content-text&#039; )&lt;br /&gt;
        || document.getElementById( &#039;content&#039; )&lt;br /&gt;
        || document.querySelector( &#039;.mw-body-content&#039; );&lt;br /&gt;
      if ( !content ) return;&lt;br /&gt;
&lt;br /&gt;
      // Get the first heading&lt;br /&gt;
      var h1 = document.querySelector( &#039;#firstHeading, h1.firstHeading&#039; );&lt;br /&gt;
      var titleText = h1 ? h1.textContent.replace( /^BioMicroCenter:?/, &#039;&#039; ).trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Build page title block&lt;br /&gt;
      var titleBlock = document.createElement( &#039;div&#039; );&lt;br /&gt;
      titleBlock.id = &#039;bmc-page-title&#039;;&lt;br /&gt;
      if ( titleText &amp;amp;&amp;amp; !/^BioMicroCenter$/.test( this.page ) ) {&lt;br /&gt;
        titleBlock.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;h1&amp;gt;&#039; + titleText + &#039;&amp;lt;/h1&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
      if ( h1 ) h1.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Wrap in page container&lt;br /&gt;
      var wrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      wrap.id = &#039;bmc-page-wrap&#039;;&lt;br /&gt;
      content.parentNode.insertBefore( wrap, content );&lt;br /&gt;
      wrap.appendChild( titleBlock );&lt;br /&gt;
      wrap.appendChild( content );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4f. GENERIC PAGE TRANSFORM ---- */&lt;br /&gt;
    transformGeneric: function () {&lt;br /&gt;
      // Just let the global CSS handle it — tables, headings, prose all look better automatically.&lt;br /&gt;
      // Remove the old banner image if present (it&#039;s usually a 500px wide header)&lt;br /&gt;
      var banner = document.querySelector( &#039;#mw-content-text img[src*=&amp;quot;BMC_Header&amp;quot;]&#039; );&lt;br /&gt;
      if ( banner ) {&lt;br /&gt;
        var bannerParent = banner.closest( &#039;p, div&#039; );&lt;br /&gt;
        if ( bannerParent ) bannerParent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4g. HOMEPAGE TRANSFORM ---- */&lt;br /&gt;
    transformHomepage: function () {&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Hide the old content and replace with hero + cards&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
&lt;br /&gt;
      // Extract links from existing wiki tables to preserve them&lt;br /&gt;
      var allLinks = {};&lt;br /&gt;
      if ( oldContent ) {&lt;br /&gt;
        oldContent.querySelectorAll( &#039;a&#039; ).forEach( function ( a ) {&lt;br /&gt;
          allLinks[a.textContent.trim()] = a.href;&lt;br /&gt;
        } );&lt;br /&gt;
        oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Hero&lt;br /&gt;
      var hero = document.createElement( &#039;div&#039; );&lt;br /&gt;
      hero.style.cssText = [&lt;br /&gt;
        &#039;background: &#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
        &#039;border-radius: 16px; padding: 48px 40px;&#039;,&lt;br /&gt;
        &#039;margin-bottom: 32px; position: relative; overflow: hidden;&#039;,&lt;br /&gt;
        &#039;color: #fff;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      hero.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:relative;z-index:1&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;font-size:0.72em;letter-spacing:0.16em;color:#888;text-transform:uppercase;&#039;,&lt;br /&gt;
              &#039;margin-bottom:12px;font-family:&#039; + TOKENS.fontMono + &#039;&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;Koch Institute · MIT Department of Biology · Biological Engineering&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;h1 style=&amp;quot;font-size:2.4em;font-weight:600;letter-spacing:-0.03em;&#039;,&lt;br /&gt;
              &#039;line-height:1;margin:0 0 16px;color:#fff&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;MIT BioMicro&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color:&#039; + TOKENS.gold + &#039;&amp;quot;&amp;gt;Center&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/h1&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;p style=&amp;quot;max-width:560px;font-size:0.95em;line-height:1.7;color:#aaa;margin:0 0 24px&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
              &#039;An integrated genomics core facility providing expertise and equipment for &#039;,&lt;br /&gt;
              &#039;systems biology — from sample prep through sequencing, single-cell, and bioinformatics.&#039;,&lt;br /&gt;
          &#039;&amp;lt;/p&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;div style=&amp;quot;display:flex;gap:12px;flex-wrap:wrap&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
               &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:&#039; + TOKENS.black + &#039;;&#039;,&lt;br /&gt;
               &#039;font-weight:600;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none;letter-spacing:0.02em&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;Submit Samples via iLabs ↗&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
            &#039;&amp;lt;a href=&amp;quot;/index.php/BioMicroCenter:Pricing&amp;quot;&#039;,&lt;br /&gt;
               &#039; style=&amp;quot;background:#222;color:#ccc;&#039;,&lt;br /&gt;
               &#039;font-weight:500;font-size:0.85em;padding:10px 20px;border-radius:8px;&#039;,&lt;br /&gt;
               &#039;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
               &#039;View Pricing&#039;,&lt;br /&gt;
            &#039;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
          &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        // subtle grid pattern overlay&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;position:absolute;inset:0;opacity:0.04;pointer-events:none;&#039;,&lt;br /&gt;
            &#039;background-image:repeating-linear-gradient(0deg,#fff 0,#fff 1px,transparent 1px,transparent 40px),&#039;,&lt;br /&gt;
            &#039;repeating-linear-gradient(90deg,#fff 0,#fff 1px,transparent 1px,transparent 40px)&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( hero );&lt;br /&gt;
&lt;br /&gt;
      // Service cards&lt;br /&gt;
      var CARDS = [&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🧬&#039;,&lt;br /&gt;
          title: &#039;Sequencing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;NovaSeq X / NovaSeq 6000&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Element AVITI24&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;Singular G4 / MiSeq&#039;, href: &#039;/index.php/BioMicroCenter:Illumina_Sequencing&#039; },&lt;br /&gt;
            { label: &#039;ONT PromethION&#039;, href: &#039;/index.php/BioMicroCenter:Oxford_Nanopore_Technologies&#039; },&lt;br /&gt;
            { label: &#039;PacBio Revio †&#039;, href: &#039;/index.php/BioMicroCenter:PacBio&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📚&#039;,&lt;br /&gt;
          title: &#039;Library Preparation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Short Read — DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;Short Read — RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_LIB&#039; },&lt;br /&gt;
            { label: &#039;High Throughput DNA&#039;, href: &#039;/index.php/BioMicroCenter:DNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;High Throughput RNA&#039;, href: &#039;/index.php/BioMicroCenter:RNA_HTL&#039; },&lt;br /&gt;
            { label: &#039;Nanopore Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:NanoPore_Library_Prep&#039; },&lt;br /&gt;
            { label: &#039;PacBio Library Prep&#039;, href: &#039;/index.php/BioMicroCenter:PacBio_Library_Preparation&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;⬡&#039;,&lt;br /&gt;
          title: &#039;Single Cell &amp;amp; Spatial&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;10X Chromium (5′/3′ RNA, ATAC)&#039;, href: &#039;/index.php/BioMicroCenter:SingleCell&#039; },&lt;br /&gt;
            { label: &#039;10X Visium (Standard + HD)&#039;, href: &#039;/index.php/BioMicroCenter:SpTx&#039; },&lt;br /&gt;
            { label: &#039;AVITI24 in situ&#039;, href: &#039;/index.php/BioMicroCenter:Element_Sequencing&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🔬&#039;,&lt;br /&gt;
          title: &#039;Sample Services &amp;amp; QC&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Fragment Analyzer / FemtoPulse&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;BioAnalyzer&#039;, href: &#039;/index.php/BioMicroCenter:QC&#039; },&lt;br /&gt;
            { label: &#039;Chemagic360 DNA/RNA Extraction&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Covaris Sonicator&#039;, href: &#039;/index.php/BioMicroCenter:Covaris&#039; },&lt;br /&gt;
            { label: &#039;RT-PCR (Roche LC480)&#039;, href: &#039;/index.php/BioMicroCenter:RTPCR&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;🤖&#039;,&lt;br /&gt;
          title: &#039;Automation&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Tecan EVO 150 Liquid Handler&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;SPT Mosquito HV&#039;, href: &#039;/index.php/BioMicroCenter:Tecan_Freedom_Evo&#039; },&lt;br /&gt;
            { label: &#039;Pippin Prep Electrophoresis&#039;, href: &#039;/index.php/BioMicroCenter:PippinPrep&#039; },&lt;br /&gt;
            { label: &#039;Oligo Synthesis&#039;, href: &#039;/index.php/BioMicroCenter:Oligo_Synthesis&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;💻&#039;,&lt;br /&gt;
          title: &#039;Bioinformatics &amp;amp; Computing&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Bioinformatics Consulting (IGB)&#039;, href: &#039;https://igb.mit.edu/&#039; },&lt;br /&gt;
            { label: &#039;Luria Computing Cluster&#039;, href: &#039;https://igb.mit.edu/computing-resources/luria-cluster&#039; },&lt;br /&gt;
            { label: &#039;Active Data Storage&#039;, href: &#039;https://igb.mit.edu/computing-resources/active-data-storage&#039; },&lt;br /&gt;
            { label: &#039;Data Transfer (Globus)&#039;, href: &#039;https://igb.mit.edu/data-management/globus&#039; },&lt;br /&gt;
            { label: &#039;Training Sessions&#039;, href: &#039;https://igb.mit.edu/mini-courses&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📋&#039;,&lt;br /&gt;
          title: &#039;Get Started&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;Pricing&#039;, href: &#039;/index.php/BioMicroCenter:Pricing&#039; },&lt;br /&gt;
            { label: &#039;New User Signup&#039;, href: &#039;/index.php/BioMicroCenter:Forms#NEW_USERS&#039; },&lt;br /&gt;
            { label: &#039;External Submission Forms&#039;, href: &#039;/index.php/BioMicroCenter:Forms&#039; },&lt;br /&gt;
            { label: &#039;FAQs&#039;, href: &#039;/index.php/BioMicroCenter:FAQ&#039; },&lt;br /&gt;
            { label: &#039;Staff Directory&#039;, href: &#039;/index.php/BioMicroCenter:People&#039; },&lt;br /&gt;
            { label: &#039;News &amp;amp; Updates&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          icon: &#039;📅&#039;,&lt;br /&gt;
          title: &#039;News &amp;amp; Resources&#039;,&lt;br /&gt;
          links: [&lt;br /&gt;
            { label: &#039;News &amp;amp; General Information&#039;, href: &#039;/index.php/BioMicroCenter:News&#039; },&lt;br /&gt;
            { label: &#039;Technology Seminar Series&#039;, href: &#039;/index.php/BioMicroCenter:Technology_Seminar_Series&#039; },&lt;br /&gt;
            { label: &#039;Biostuff Mailing List&#039;, href: &#039;http://mailman.mit.edu:/mailman/listinfo/biostuff&#039; },&lt;br /&gt;
            { label: &#039;FAIR Data Management&#039;, href: &#039;https://koch-institute-mit.gitbook.io/mit-data-management-analysis-core/&#039; },&lt;br /&gt;
          ],&lt;br /&gt;
        },&lt;br /&gt;
      ];&lt;br /&gt;
&lt;br /&gt;
      var grid = document.createElement( &#039;div&#039; );&lt;br /&gt;
      grid.className = &#039;bmc-home-grid&#039;;&lt;br /&gt;
      CARDS.forEach( function ( card ) {&lt;br /&gt;
        var li = card.links.map( function ( lnk ) {&lt;br /&gt;
          return &#039;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&#039; + lnk.href + &#039;&amp;quot;&amp;gt;&#039; + lnk.label + &#039;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
        } ).join( &#039;&#039; );&lt;br /&gt;
        var el = document.createElement( &#039;div&#039; );&lt;br /&gt;
        el.className = &#039;bmc-home-card&#039;;&lt;br /&gt;
        el.innerHTML =&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;&#039; + card.icon + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;&#039; + card.title + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
          &#039;&amp;lt;ul class=&amp;quot;card-links&amp;quot;&amp;gt;&#039; + li + &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
        grid.appendChild( el );&lt;br /&gt;
      } );&lt;br /&gt;
      wrap.appendChild( grid );&lt;br /&gt;
&lt;br /&gt;
      // Contact strip&lt;br /&gt;
      var contact = document.createElement( &#039;div&#039; );&lt;br /&gt;
      contact.id = &#039;bmc-contact-strip&#039;;&lt;br /&gt;
      contact.innerHTML = [&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Location&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;Room 68-322, MIT&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Email&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;contact-label&amp;quot;&amp;gt;Phone&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div class=&amp;quot;contact-item&amp;quot;&amp;gt;617-715-4533&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;margin-left:auto&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
        &#039;&amp;lt;a href=&amp;quot;https://mit-ki.ilabsolutions.com/sc/3381/ki-genomics-core-mit-biomicro-center?tab=about&amp;quot;&#039;,&lt;br /&gt;
           &#039; target=&amp;quot;_blank&amp;quot;&#039;,&lt;br /&gt;
           &#039; style=&amp;quot;background:&#039; + TOKENS.gold + &#039;;color:#000;font-weight:600;&#039;,&lt;br /&gt;
           &#039;font-size:0.82em;padding:9px 18px;border-radius:7px;text-decoration:none&amp;quot;&amp;gt;&#039;,&lt;br /&gt;
           &#039;iLabs — Internal Submission ↗&#039;,&lt;br /&gt;
        &#039;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
      ].join( &#039;&#039; );&lt;br /&gt;
      wrap.appendChild( contact );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4h. PRICING PAGE TRANSFORM ---- */&lt;br /&gt;
    transformPricing: function () {&lt;br /&gt;
      var self = this;&lt;br /&gt;
      var oldContent = document.getElementById( &#039;mw-content-text&#039; );&lt;br /&gt;
      if ( !oldContent ) return;&lt;br /&gt;
&lt;br /&gt;
      // Current tier state&lt;br /&gt;
      var tier = &#039;mit&#039;;&lt;br /&gt;
      var tierColors = { core: &#039;#1a6b3c&#039;, mit: &#039;#8b1a1a&#039;, nonmit: &#039;#1a3b8b&#039; };&lt;br /&gt;
      var tierBadges = { core: &#039;CORE&#039;, mit: &#039;MIT&#039;, nonmit: &#039;EXT&#039; };&lt;br /&gt;
      var tierLabels = { core: &#039;Core Lab&#039;, mit: &#039;MIT&#039;, nonmit: &#039;Non-MIT&#039; };&lt;br /&gt;
&lt;br /&gt;
      // Parse all wiki tables from the existing rendered HTML&lt;br /&gt;
      // Each table = one pricing section&lt;br /&gt;
      var sections = self.parsePricingTables( oldContent );&lt;br /&gt;
&lt;br /&gt;
      // Hide original content&lt;br /&gt;
      oldContent.style.display = &#039;none&#039;;&lt;br /&gt;
&lt;br /&gt;
      var wrap = document.getElementById( &#039;bmc-page-wrap&#039; );&lt;br /&gt;
      if ( !wrap ) return;&lt;br /&gt;
&lt;br /&gt;
      // Controls row&lt;br /&gt;
      var controls = document.createElement( &#039;div&#039; );&lt;br /&gt;
      controls.style.cssText = &#039;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:8px;&#039;;&lt;br /&gt;
&lt;br /&gt;
      // Tier toggle&lt;br /&gt;
      var toggle = document.createElement( &#039;div&#039; );&lt;br /&gt;
      toggle.id = &#039;bmc-pricing-tier-toggle&#039;;&lt;br /&gt;
      [ &#039;core&#039;, &#039;mit&#039;, &#039;nonmit&#039; ].forEach( function ( t ) {&lt;br /&gt;
        var btn = document.createElement( &#039;button&#039; );&lt;br /&gt;
        btn.textContent = tierLabels[t];&lt;br /&gt;
        btn.dataset.tier = t;&lt;br /&gt;
        btn.className = t === tier ? &#039;active-&#039; + t : &#039;&#039;;&lt;br /&gt;
        btn.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          tier = t;&lt;br /&gt;
          toggle.querySelectorAll( &#039;button&#039; ).forEach( function ( b ) { b.className = &#039;&#039;; } );&lt;br /&gt;
          btn.className = &#039;active-&#039; + t;&lt;br /&gt;
          pill.style.background = tierColors[t] + &#039;22&#039;;&lt;br /&gt;
          pill.style.color = tierColors[t];&lt;br /&gt;
          pill.style.borderColor = tierColors[t] + &#039;44&#039;;&lt;br /&gt;
          pillBadge.style.background = tierColors[t];&lt;br /&gt;
          pillBadge.textContent = tierBadges[t];&lt;br /&gt;
          pillLabel.textContent = &#039;Showing &#039; + tierLabels[t] + &#039; pricing&#039;;&lt;br /&gt;
          self.updatePricingTier( t );&lt;br /&gt;
        } );&lt;br /&gt;
        toggle.appendChild( btn );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Search&lt;br /&gt;
      var searchWrap = document.createElement( &#039;div&#039; );&lt;br /&gt;
      searchWrap.id = &#039;bmc-pricing-search-wrap&#039;;&lt;br /&gt;
      searchWrap.innerHTML =&lt;br /&gt;
        &#039;&amp;lt;span id=&amp;quot;bmc-pricing-search-icon&amp;quot;&amp;gt;⌕&amp;lt;/span&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;input id=&amp;quot;bmc-pricing-search&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Search services…&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
      searchWrap.querySelector( &#039;input&#039; ).addEventListener( &#039;input&#039;, function () {&lt;br /&gt;
        self.filterPricingRows( this.value.toLowerCase() );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      controls.appendChild( toggle );&lt;br /&gt;
      controls.appendChild( searchWrap );&lt;br /&gt;
      wrap.appendChild( controls );&lt;br /&gt;
&lt;br /&gt;
      // Tier pill&lt;br /&gt;
      var pill = document.createElement( &#039;div&#039; );&lt;br /&gt;
      pill.id = &#039;bmc-tier-pill&#039;;&lt;br /&gt;
      pill.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;22;color:&#039; + tierColors[tier] + &#039;;border:1.5px solid &#039; + tierColors[tier] + &#039;44;border-radius:6px;&#039;;&lt;br /&gt;
      var pillBadge = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillBadge.style.cssText = &#039;background:&#039; + tierColors[tier] + &#039;;color:#fff;border-radius:3px;padding:1px 6px;font-size:0.82em;letter-spacing:0.08em;&#039;;&lt;br /&gt;
      pillBadge.textContent = tierBadges[tier];&lt;br /&gt;
      var pillLabel = document.createElement( &#039;span&#039; );&lt;br /&gt;
      pillLabel.textContent = &#039;Showing &#039; + tierLabels[tier] + &#039; pricing&#039;;&lt;br /&gt;
      pill.appendChild( pillBadge );&lt;br /&gt;
      pill.appendChild( pillLabel );&lt;br /&gt;
      wrap.appendChild( pill );&lt;br /&gt;
&lt;br /&gt;
      // Render sections&lt;br /&gt;
      var container = document.createElement( &#039;div&#039; );&lt;br /&gt;
      container.id = &#039;bmc-pricing-container&#039;;&lt;br /&gt;
      wrap.appendChild( container );&lt;br /&gt;
&lt;br /&gt;
      sections.forEach( function ( section ) {&lt;br /&gt;
        var card = document.createElement( &#039;div&#039; );&lt;br /&gt;
        card.className = &#039;bmc-price-section&#039;;&lt;br /&gt;
&lt;br /&gt;
        var header = document.createElement( &#039;div&#039; );&lt;br /&gt;
        header.className = &#039;bmc-price-section-header&#039;;&lt;br /&gt;
        header.innerHTML = section.title + &#039;&amp;lt;span class=&amp;quot;chevron&amp;quot;&amp;gt;▼&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
        header.addEventListener( &#039;click&#039;, function () {&lt;br /&gt;
          var body = card.querySelector( &#039;.bmc-price-body&#039; );&lt;br /&gt;
          var collapsed = header.classList.toggle( &#039;collapsed&#039; );&lt;br /&gt;
          body.style.display = collapsed ? &#039;none&#039; : &#039;&#039;;&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        var body = document.createElement( &#039;div&#039; );&lt;br /&gt;
        body.className = &#039;bmc-price-body&#039;;&lt;br /&gt;
&lt;br /&gt;
        section.rows.forEach( function ( row ) {&lt;br /&gt;
          var rowEl = document.createElement( &#039;div&#039; );&lt;br /&gt;
          rowEl.className = &#039;bmc-price-row&#039;;&lt;br /&gt;
          rowEl.dataset.rowName = row.name.toLowerCase();&lt;br /&gt;
&lt;br /&gt;
          var amt = row.prices[tier];&lt;br /&gt;
          var amtClass = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;tier-na&#039; : &#039;tier-&#039; + tier;&lt;br /&gt;
          var amtText = ( amt === null || amt === undefined || amt === &#039;&#039; )&lt;br /&gt;
            ? &#039;—&#039; : amt;&lt;br /&gt;
&lt;br /&gt;
          rowEl.innerHTML =&lt;br /&gt;
            &#039;&amp;lt;div&amp;gt;&#039; +&lt;br /&gt;
              &#039;&amp;lt;div class=&amp;quot;bmc-price-row-name&amp;quot;&amp;gt;&#039; + row.name + &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
              ( row.unit ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-unit&amp;quot;&amp;gt;&#039; + row.unit + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
              ( row.notes ? &#039;&amp;lt;div class=&amp;quot;bmc-price-row-note&amp;quot;&amp;gt;&#039; + row.notes + &#039;&amp;lt;/div&amp;gt;&#039; : &#039;&#039; ) +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;div class=&amp;quot;bmc-price-amount &#039; + amtClass + &#039;&amp;quot; data-prices=\&#039;&#039; + JSON.stringify( row.prices ) + &#039;\&#039;&amp;gt;&#039; +&lt;br /&gt;
              amtText +&lt;br /&gt;
            &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
          body.appendChild( rowEl );&lt;br /&gt;
        } );&lt;br /&gt;
&lt;br /&gt;
        card.appendChild( header );&lt;br /&gt;
        card.appendChild( body );&lt;br /&gt;
        container.appendChild( card );&lt;br /&gt;
      } );&lt;br /&gt;
&lt;br /&gt;
      // Footer note&lt;br /&gt;
      var note = document.createElement( &#039;div&#039; );&lt;br /&gt;
      note.style.cssText = &#039;margin-top:24px;padding:14px 18px;background:#fff8e8;border-radius:8px;border:1px solid #e8d8a0;font-size:0.78em;color:#7a6a3a;line-height:1.6;&#039;;&lt;br /&gt;
      note.innerHTML = &#039;✦ = Minimal inventory maintained &amp;amp;nbsp;·&amp;amp;nbsp; †† = Through collaboration with nearby academic shared resources &amp;amp;nbsp;·&amp;amp;nbsp; Pricing as of January 2026. Questions? &amp;lt;a href=&amp;quot;mailto:biomicro@mit.edu&amp;quot; style=&amp;quot;color:#8b6914&amp;quot;&amp;gt;biomicro@mit.edu&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
      wrap.appendChild( note );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4i. PARSE PRICING TABLES FROM WIKI HTML ---- */&lt;br /&gt;
    parsePricingTables: function ( container ) {&lt;br /&gt;
      var sections = [];&lt;br /&gt;
      // Walk h2/h3 + table pairs&lt;br /&gt;
      var nodes = container.querySelectorAll( &#039;h2, h3, table&#039; );&lt;br /&gt;
      var currentTitle = &#039;Services&#039;;&lt;br /&gt;
      var currentRows = [];&lt;br /&gt;
&lt;br /&gt;
      var flush = function () {&lt;br /&gt;
        if ( currentRows.length &amp;gt; 0 ) {&lt;br /&gt;
          sections.push( { title: currentTitle, rows: currentRows } );&lt;br /&gt;
          currentRows = [];&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      nodes.forEach( function ( node ) {&lt;br /&gt;
        if ( node.tagName === &#039;H2&#039; || node.tagName === &#039;H3&#039; ) {&lt;br /&gt;
          flush();&lt;br /&gt;
          // Clean up heading text (remove [edit] spans)&lt;br /&gt;
          var clone = node.cloneNode( true );&lt;br /&gt;
          clone.querySelectorAll( &#039;.mw-editsection&#039; ).forEach( function ( e ) { e.remove(); } );&lt;br /&gt;
          currentTitle = clone.textContent.trim();&lt;br /&gt;
        } else if ( node.tagName === &#039;TABLE&#039; ) {&lt;br /&gt;
          // Find header row to determine column order&lt;br /&gt;
          var headers = [];&lt;br /&gt;
          var headerRow = node.querySelector( &#039;tr&#039; );&lt;br /&gt;
          if ( headerRow ) {&lt;br /&gt;
            headerRow.querySelectorAll( &#039;th, td&#039; ).forEach( function ( cell ) {&lt;br /&gt;
              headers.push( cell.textContent.trim().toLowerCase() );&lt;br /&gt;
            } );&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Find price column indices&lt;br /&gt;
          var coreIdx   = -1, mitIdx = -1, nonmitIdx = -1;&lt;br /&gt;
          var nameIdx   = 0;&lt;br /&gt;
          var unitIdx   = -1, notesIdx = -1;&lt;br /&gt;
          headers.forEach( function ( h, i ) {&lt;br /&gt;
            if ( /core/.test( h ) )     coreIdx   = i;&lt;br /&gt;
            if ( /^mit$/.test( h ) )    mitIdx    = i;&lt;br /&gt;
            if ( /non.?mit/.test( h ) ) nonmitIdx = i;&lt;br /&gt;
            if ( /unit/.test( h ) )     unitIdx   = i;&lt;br /&gt;
            if ( /note/.test( h ) )     notesIdx  = i;&lt;br /&gt;
          } );&lt;br /&gt;
&lt;br /&gt;
          // Parse data rows&lt;br /&gt;
          var rows = node.querySelectorAll( &#039;tr&#039; );&lt;br /&gt;
          rows.forEach( function ( row, ri ) {&lt;br /&gt;
            if ( ri === 0 ) return; // skip header&lt;br /&gt;
            var cells = row.querySelectorAll( &#039;td, th&#039; );&lt;br /&gt;
            if ( cells.length &amp;lt; 2 ) return;&lt;br /&gt;
&lt;br /&gt;
            var getText = function ( idx ) {&lt;br /&gt;
              if ( idx &amp;lt; 0 || idx &amp;gt;= cells.length ) return &#039;&#039;;&lt;br /&gt;
              return cells[idx].textContent.trim();&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            var name = getText( nameIdx );&lt;br /&gt;
            if ( !name ) return;&lt;br /&gt;
&lt;br /&gt;
            var formatPrice = function ( idx ) {&lt;br /&gt;
              var raw = getText( idx );&lt;br /&gt;
              if ( !raw || raw === &#039;&#039; || /pricing in/i.test( raw ) ) return null;&lt;br /&gt;
              // Already has $ sign in wiki? Return as-is, else prefix&lt;br /&gt;
              return raw;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            currentRows.push( {&lt;br /&gt;
              name: name,&lt;br /&gt;
              unit: unitIdx &amp;gt;= 0 ? getText( unitIdx ) : &#039;&#039;,&lt;br /&gt;
              notes: notesIdx &amp;gt;= 0 ? getText( notesIdx ) : &#039;&#039;,&lt;br /&gt;
              prices: {&lt;br /&gt;
                core:   formatPrice( coreIdx ),&lt;br /&gt;
                mit:    formatPrice( mitIdx ),&lt;br /&gt;
                nonmit: formatPrice( nonmitIdx ),&lt;br /&gt;
              }&lt;br /&gt;
            } );&lt;br /&gt;
          } );&lt;br /&gt;
        }&lt;br /&gt;
      } );&lt;br /&gt;
      flush();&lt;br /&gt;
      return sections;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4j. UPDATE PRICING TIER (live swap) ---- */&lt;br /&gt;
    updatePricingTier: function ( tier ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-amount&#039; ).forEach( function ( el ) {&lt;br /&gt;
        try {&lt;br /&gt;
          var prices = JSON.parse( el.dataset.prices );&lt;br /&gt;
          var amt = prices[tier];&lt;br /&gt;
          var isNA = ( amt === null || amt === undefined || amt === &#039;&#039; );&lt;br /&gt;
          el.textContent = isNA ? &#039;—&#039; : amt;&lt;br /&gt;
          el.className = &#039;bmc-price-amount &#039; + ( isNA ? &#039;tier-na&#039; : &#039;tier-&#039; + tier );&lt;br /&gt;
        } catch ( e ) {}&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    /* ---- 4k. FILTER PRICING ROWS ---- */&lt;br /&gt;
    filterPricingRows: function ( query ) {&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-row&#039; ).forEach( function ( row ) {&lt;br /&gt;
        var name = row.dataset.rowName || &#039;&#039;;&lt;br /&gt;
        row.style.display = name.includes( query ) ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
      // Show/hide empty sections&lt;br /&gt;
      document.querySelectorAll( &#039;.bmc-price-section&#039; ).forEach( function ( section ) {&lt;br /&gt;
        var visible = section.querySelectorAll( &#039;.bmc-price-row:not([style*=&amp;quot;none&amp;quot;])&#039; );&lt;br /&gt;
        section.style.display = visible.length ? &#039;&#039; : &#039;none&#039;;&lt;br /&gt;
      } );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
  }; // end BMC&lt;br /&gt;
&lt;br /&gt;
  /* ============================================================&lt;br /&gt;
     5. KICK OFF&lt;br /&gt;
  ============================================================ */&lt;br /&gt;
  if ( document.readyState === &#039;loading&#039; ) {&lt;br /&gt;
    document.addEventListener( &#039;DOMContentLoaded&#039;, function () { BMC.init(); } );&lt;br /&gt;
  } else {&lt;br /&gt;
    BMC.init();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Illumina_Sequencing&amp;diff=109139</id>
		<title>BioMicroCenter:Illumina Sequencing</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Illumina_Sequencing&amp;diff=109139"/>
		<updated>2025-12-05T20:02:34Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* Illumina Massively Parallel Sequencing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
The MIT BioMicro Center has a MiSeq i100 and supports NovaSeqXplus sequencing from Illumina. We support a wide variety of applications, such as ChIP-Seq, miRNA sequencing and RNA-seq. &lt;br /&gt;
&lt;br /&gt;
== Illumina Massively Parallel Sequencing ==&lt;br /&gt;
{|&lt;br /&gt;
 |- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
 |style=&amp;quot;width: 400px;&amp;quot;|&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
  !Service &lt;br /&gt;
  !Illumina Sequencing&lt;br /&gt;
  |-&lt;br /&gt;
  |INPUT || Illumina libraries&lt;br /&gt;
  |-&lt;br /&gt;
  |MIN VOLUME || 40uL Miseq i100 &amp;lt;BR&amp;gt; 12 uL MiSeq &amp;lt;br&amp;gt; 22 uL NovaSeq6k per flow cell &amp;lt;br&amp;gt; 110 uL NovaSeqXplus per lane&lt;br /&gt;
  |-&lt;br /&gt;
  |MIN CONCENTRATION || 2nM* (~0.4ng/uL for a 300bp library)&lt;br /&gt;
  |-&lt;br /&gt;
  |INCLUDED SERVICES &lt;br /&gt;
  | &lt;br /&gt;
* Quality Control:Fragment Analyzer and qPCR&lt;br /&gt;
* Illumina Sequencing &lt;br /&gt;
* Demultiplexing&lt;br /&gt;
  |-&lt;br /&gt;
  |ADDITIONAL SERVICES ||&lt;br /&gt;
* Quality Control&lt;br /&gt;
* Illumina library preparation&lt;br /&gt;
  |-&lt;br /&gt;
  |DATA FORMATS &lt;br /&gt;
  |&lt;br /&gt;
*FASTQ &lt;br /&gt;
*BCL (stored 30d)&lt;br /&gt;
  |-&lt;br /&gt;
  |QUALITY CONTROL &lt;br /&gt;
  |&lt;br /&gt;
* [https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ FASTQC]&lt;br /&gt;
* Basic run metrics (alignment rate, complexity)&lt;br /&gt;
* Basic RNAseq metrics (where applicable)&lt;br /&gt;
* Basic paired end metrics (where applicable)&lt;br /&gt;
* Contamination checks&lt;br /&gt;
  |-&lt;br /&gt;
  |PRICING || [[BioMicroCenter:Pricing#HISEQ2000_SEQUENCING|LINK]]&lt;br /&gt;
  |-&lt;br /&gt;
  |SUBMISSION &lt;br /&gt;
  |&lt;br /&gt;
* MIT - [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 ilabs] &lt;br /&gt;
* External Users - [[BioMicroCenter:Forms|form]]&lt;br /&gt;
  |-&lt;br /&gt;
 |}&lt;br /&gt;
 |&lt;br /&gt;
Illumina sequencing-by-synthesis is the primary workhorse of the BioMicro Center. These instruments produce millions to billions of reads simultaneously and are used in a very broad spectrum of applications. The Center currently supports a MiSeqi100 walkup sequencer and NovaSeqXplus through collaboration with other local academic core facilities. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Typical Workflow===&lt;br /&gt;
Illumina sequencing at the core begins with library quality control, during which the Center verifies the anchor elements and insert size using [[BioMicroCenter:RTPCR|qPCR]] and the [[BioMicroCenter:QC#AATI_FRAGMENT_ANALYZER|Fragment Analyzer]]. Users may elect to bypass this step if they provide the sample concentration and the concentration they would like to load at. Samples are then entered into the sequencing queue. Typical queues in the BioMicro Center are short, rarely exceeding 1-2 weeks, and samples are frequently run within a couple days. &amp;lt;B&amp;gt;We do guarantee a minimum number of reads per lane provided if: a) BMC performed the QC, b) the samples are high-complexity, especially in the first few nucleotides, and c) the samples are at least 2nM.&amp;lt;/B&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illumina sequencing through the BioMicro Center is only available in full lanes and not on a per read basis. You are welcome to collaborate with other laboratories in order to pool samples. However, please be sure to minimize any possibility of cross-contamination of indexes as well as [https://www.illumina.com/science/education/minimizing-index-hopping.html index crosstalk.] &lt;br /&gt;
&lt;br /&gt;
When ordering lanes, please be aware that only full flowcells will be sequenced ASAP. More lanes may be purchased to facilitate sequencing. The wait time for individual lanes can vary widely. Full flowcells have priority for sequencing.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Data Handling===&lt;br /&gt;
Following sequencing, data is handled using a custom analytical pipeline. If libraries were made in the Center or an index was provided, samples are split by index and identified by DNA-ID. [https://en.wikipedia.org/wiki/FASTQ_format FASTQ] files and other desired formats will be placed in a delivery folder based on the project name, along with several quality control checks done for the sequencing data. We will provide an initial review of your project where we do try to identify any issues including incorrect indexes, sample contaminants, etc. Please note that our pipelines are built to find problems and are NOT designed to provide an initial analysis of your data. These analyses are built for speed, simplicity, and are not tuned in any way to your samples. We are always happy to discuss these results with you. Data will be available in your lab folder for 90 days post delivery, after which most of the data is deleted. FASTQ file will still be downloadable for two years but is delivered on a case by case basis.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
===Custom Sequencing===&lt;br /&gt;
Users may elect to prep their samples with custom oligos. If this is the case, custom sequencing oligos must be provided along with the samples at the time of submission. At least 15uL of each kind custom sequencing primer at 100 uM should be submitted per lane of most Illumina sequencers. At least 30uL of each kind of custom sequencing primer at 100uM should be provided per NovaSeqXplus flowcell. It is strongly recommended to contact biomicro@mit.edu before planning a custom library preparation. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Additional services available:&lt;br /&gt;
* [[BioMicroCenter:Illumina_Library_Preparation|Illumina library preparation]]&lt;br /&gt;
* [[BioMicroCenter:BioInformaticsStaff|Bioinformatics Support]]&lt;br /&gt;
* [[BioMicroCenter:Servers|Data storage and Computation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Illumina Platforms ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 &lt;br /&gt;
 !width=100| SPEC&lt;br /&gt;
 !width=250| MiSeq i100+&lt;br /&gt;
 !width=250| NovaSeqX+&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;SEQUENCER&#039;&#039;&#039;&lt;br /&gt;
 |[[Image:BMC_i100.jpg|center|200px]]&lt;br /&gt;
 |[[Image:BMC_NovaXplus.jpg|center|150px]] &lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;&#039;READS/LANE&#039;&#039;&#039;&amp;lt;BR&amp;gt; Low number is minimum per lane for standard Illumina libraries.&lt;br /&gt;
 | &lt;br /&gt;
* 5M&lt;br /&gt;
* 25M&lt;br /&gt;
(50m and 100m lanes due in late 2025)&lt;br /&gt;
 |&lt;br /&gt;
*10B (8 lanes)&lt;br /&gt;
*25B (8 lanes or full flowcell)&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;LENGTHS AVAILABLE&#039;&#039;&#039;&lt;br /&gt;
 |&lt;br /&gt;
* 100nt, 300nt, 600nt&lt;br /&gt;
 |&lt;br /&gt;
*100nt(25B full FC only),300nt&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;KEY NOTES&#039;&#039;&#039;&lt;br /&gt;
 |&lt;br /&gt;
* Patterned flowcell / X-amp chemistry: UDIs recommended.&lt;br /&gt;
* 2 color chemistry - G=dark.&lt;br /&gt;
* Walkup available.&lt;br /&gt;
 |&lt;br /&gt;
*Patterned flowcell&lt;br /&gt;
*Struggles with low complexity libraries&lt;br /&gt;
*Lane by Lane&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;DONATED BY&#039;&#039;&#039;&lt;br /&gt;
 |MIT VPR, Drs. Gene Li, Michael Birnbaum, Dept. of Biololgy, Scott Ritterbush &#039;89, SM &#039;92&lt;br /&gt;
 |Collaborations with local academic cores. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- commenting GA out 2/2/17 NK === Genome Analyzer IIx ===&lt;br /&gt;
HiSeq2000s donated by Drs. Penny Chisholm and Chris Burge and HHMI&lt;br /&gt;
&lt;br /&gt;
[[Image:GAIIxcollage.jpg|right|200px]] The Genome Analyzer II (GAII) is the oldest sequencers in the BioMicro Center and remain the most flexible. The newer generations of Illumina sequencers have been designed with increasing focus on clinical applications and have removed some of the &amp;quot;hands on&amp;quot; aspects of the older GAIIs. The GAIIs remain the only sequencers where the actual images of the flowcell can be reprocessed for example. The GAII/IIx can produce 20-40m reads per lane passing filter and typically runs read lengths of 36-150nt per side.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
With the addition of the MiSeq, we have reworked how we are processing GAII flowcells. We have been able to create [[BioMicroCenter:PartialFlowcells|&#039;&#039;&#039;partial flowcells&#039;&#039;&#039;]] on the GAII by altering recipes. This has allowed us to move from a model like the HiSeq where we need a full flowcell before we run to a model where we can run as soon as the samples pass quality control, more like the MiSeq. However, unlike the MiSeq, we can run multiple lanes at once. Some critical caveats: First, these methods are not supported by Illumina so we cannot offer to replace failed runs. Second, unlike the HiSeq, the PhiX lane is *not* included. You must choose to sequence a lane of PhiX if you want to do control normalization. Finally, this service is completely &amp;quot;a la carte&amp;quot; so the pricing schema is quite different. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
{| border=1 align=&amp;quot;right&amp;quot;&lt;br /&gt;
 ! # of Lanes&lt;br /&gt;
 !width=75| cycles per day&lt;br /&gt;
 !width=75| cycles per kit&lt;br /&gt;
 |-align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | 8 &lt;br /&gt;
 | 24 &lt;br /&gt;
 | 42&lt;br /&gt;
 |-align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | 4 &lt;br /&gt;
 | 36 &lt;br /&gt;
 | 66/33*&lt;br /&gt;
 |-align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | 2 &lt;br /&gt;
 | 48 &lt;br /&gt;
 | 106/54*&lt;br /&gt;
 |-align=&amp;quot;center&amp;quot;&lt;br /&gt;
 | 1 &lt;br /&gt;
 | 72 &lt;br /&gt;
 | 140/81*&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot; align=center |&amp;amp;#42;&#039;&#039;Second number pertains to reads greater than 40 nt.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Using fewer lanes on each flowcell has allowed us to decrease the cycle time by not imaging all the lanes. In a typical 8 lane run, 20 minutes is spent doing chemistry followed by 40 minutes of imaging (each lane takes ~5 minutes to image). Therefore, a 2 lane flowcell runs twice as fast as an 8 lane flowcell. Also, since the chemistry is not running in to all of the lanes, each sequencing kit can go to a longer read length. The relationships are summarized in the chart on the left. Pricing is set on the number of lanes you are using, the number of days you are running the GAII, and the number of sequencing kits you are using. For example, if you wanted to run a 75+75 PE flowcell using 2 lanes, the cost would be the initial cost for the 2 lane PE flowcell plus an additional 3 days (one day is included in the original price) plus two additional sequencing kits. The last kit would not be completely used up (you would have an extra 18nt left that would be thrown away).&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The GAII/GAIIx is ideal for:&lt;br /&gt;
* Unusual read lengths&lt;br /&gt;
* Protocol Prototyping&lt;br /&gt;
* Non-standard assays such as HITS-FLIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The Genome Analyzer IIs were donated to the BioMicro Center by Drs. Penny Chisholm, Chris Burge, Ernest Fraenkel and the Dept of Biology with contributions from many others &#039;&#039;&lt;br /&gt;
 !width=200| GAII/IIx:  Boris, Natasha, etc 20-40m reads 1 to 8 lanes 24-72 nt/day max read length 80+80 in lane by lane&lt;br /&gt;
THE GA IS DEAD LONG LIVE THE GA Jack Daniels and Samuel Adams are DEAD LONG LIVE the HiSeq2000s Lucille and George are dead LONG LIVE NEXTSEQ 500s MiAmore is dead LONG LIVE THE MISEQ RUO PacBio is dead LONG LIVE THE SEQUEL II PromethION 24 is dead LONG LIVE THE P24 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106885</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106885"/>
		<updated>2025-11-14T17:01:03Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* R230 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt; 5µg clean DNA in 130µl (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The most powerful Covaris instrument, the E220 can shear not only DNA and RNA, but also chromatin. Furthermore, it can homogenize tissue for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|thumb|right|250px| Covaris R230]]&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 µg 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106884</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106884"/>
		<updated>2025-11-14T17:00:38Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* R230 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt; 5µg clean DNA in 130µl (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The most powerful Covaris instrument, the E220 can shear not only DNA and RNA, but also chromatin. Furthermore, it can homogenize tissue for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|thumb|right|250px| Covaris R230]]&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 µg 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106883</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106883"/>
		<updated>2025-11-14T16:56:57Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* R230 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt; 5µg clean DNA in 130µl (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The most powerful Covaris instrument, the E220 can shear not only DNA and RNA, but also chromatin. Furthermore, it can homogenize tissue for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|right|250px| Covaris R230]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 µg 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106882</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106882"/>
		<updated>2025-11-14T16:55:32Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* E220 Evolution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt; 5µg clean DNA in 130µl (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The most powerful Covaris instrument, the E220 can shear not only DNA and RNA, but also chromatin. Furthermore, it can homogenize tissue for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|right|250px| Covaris R230]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 ug 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106881</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106881"/>
		<updated>2025-11-14T16:54:28Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* E220 Evolution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt; 5µg clean DNA in 130µl (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The E220 is the most powerful Covaris instrument allowing not only shearing of DNA and RNA, but it also chromatin. Furthermore, it can homogenize tissue for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|right|250px| Covaris R230]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 ug 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Singular_Sequencing&amp;diff=106880</id>
		<title>BioMicroCenter:Singular Sequencing</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Singular_Sequencing&amp;diff=106880"/>
		<updated>2025-11-14T16:46:04Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* INDEXING */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Singular Sequencing ==&lt;br /&gt;
The Center currently hosts a G4 platform by [https://singulargenomics.com/| Singular Genomics].  Singular’s G4 platform is a short-read mid-throughput sequencing platform delivering adequate sequencing data through its proprietary sequencing-by-synthesis chemistry at a significantly competitive price point.  &lt;br /&gt;
{|&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
  !width=150| Service &lt;br /&gt;
  !width=300| Singular Sequencing&lt;br /&gt;
  |-&lt;br /&gt;
  |INPUT || Singular libraries &lt;br /&gt;
  |-&lt;br /&gt;
  |MIN VOLUME || 12 uL&lt;br /&gt;
  |-&lt;br /&gt;
  |MIN CONCENTRATION || 4 nM&lt;br /&gt;
  |-&lt;br /&gt;
  |INCLUDED SERVICES &lt;br /&gt;
  | &lt;br /&gt;
* Quality Control:Fragment Analyzer and qPCR&lt;br /&gt;
* Singular Sequencing &lt;br /&gt;
* Demultiplexing&lt;br /&gt;
  |-&lt;br /&gt;
  |ADDITIONAL SERVICES ||&lt;br /&gt;
* Quality Control&lt;br /&gt;
* Singular library preparation&lt;br /&gt;
  |-&lt;br /&gt;
  |DATA FORMATS &lt;br /&gt;
  |&lt;br /&gt;
*FASTQ (stored 1 year)&lt;br /&gt;
  |-&lt;br /&gt;
  |QUALITY CONTROL &lt;br /&gt;
  |&lt;br /&gt;
* [https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ FASTQC]&lt;br /&gt;
* Basic run metrics (alignment rate, complexity)&lt;br /&gt;
* Basic RNAseq metrics (where applicable)&lt;br /&gt;
* Basic paired end metrics (where applicable)&lt;br /&gt;
* Contamination checks&lt;br /&gt;
  |-&lt;br /&gt;
  |PRICING || [[BioMicroCenter:Pricing#SINGULAR_G4|LINK]]&lt;br /&gt;
  |-&lt;br /&gt;
  |SUBMISSION &lt;br /&gt;
  |&lt;br /&gt;
* MIT - [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 ilabs] &lt;br /&gt;
  |-&lt;br /&gt;
 |}&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== ANCHORS ===&lt;br /&gt;
Singular requires S1/S2 anchors in place of Illumina P5/P7 anchors. These can be replaced 1:1 in most oligo designs:&lt;br /&gt;
*s1:ACAAAGGCAGCCACGCACTCCTTCCCTGT&lt;br /&gt;
*s2:CTCCAGCGAGATGACCCTCACCAACCACT&lt;br /&gt;
&lt;br /&gt;
=== INDEXING ===&lt;br /&gt;
Singular indexes are read from the Anchor sequences in all cases and custom primers for indexes are not allowed. &amp;lt;BR&amp;gt;&lt;br /&gt;
Indexes are read from the S1 primer first (index1) followed by S2 (index2) &amp;lt;BR&amp;gt;&lt;br /&gt;
Index reads are the SAME SEQUENCE as ordered in most classical library preps. &amp;lt;BR&amp;gt;&lt;br /&gt;
Indexes are REQUIRED and should be 8 nucleotides in all lane by lane sequencing.&lt;br /&gt;
*Min custom primer submission: 20 µL at 100 µM&lt;br /&gt;
&lt;br /&gt;
===LANE BY LANE===&lt;br /&gt;
*Must be 50 or 150 paired-end dual indexed&lt;br /&gt;
*Pool must be compatible with TruSeq, Nextera, TruSeq, smRNA and Solexa sequencing primers&lt;br /&gt;
&lt;br /&gt;
=== MINIMUM READS ===&lt;br /&gt;
*the BMC has performed quality control.&lt;br /&gt;
* No custom primers.&lt;br /&gt;
*submitted libraries are at least 2 nM.&lt;br /&gt;
&lt;br /&gt;
All other requests, including use of custom sequencing primers require a full flowcell. Illumina libraries which have been converted in the Center will also require a full flowcell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |&lt;br /&gt;
== The G4 Platform ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 &lt;br /&gt;
 !width=100| SPEC&lt;br /&gt;
 !width=250| G4&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;SEQUENCER&#039;&#039;&#039;||[[Image:2023_Singular_G4.jpg|center|200px]]&lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;&#039;READS/LANE&#039;&#039;&#039;&amp;lt;BR&amp;gt; Low number is minimum per lane for standard libraries||&lt;br /&gt;
* F3 per Lane: 50-100 M &lt;br /&gt;
 |-&lt;br /&gt;
|&#039;&#039;&#039;RUN TIME&#039;&#039;&#039;||&lt;br /&gt;
* 50 PE 11 hours&lt;br /&gt;
* 150 PE 24 hours&lt;br /&gt;
 |-&lt;br /&gt;
|&#039;&#039;&#039;KITS AVAILABLE&#039;&#039;&#039;||&lt;br /&gt;
* 100nt&lt;br /&gt;
* 300nt&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;KEY NOTES&#039;&#039;&#039;||&lt;br /&gt;
* 4-color chemistry&lt;br /&gt;
* Patterned flow cell&lt;br /&gt;
* 4-lanes per flow cell&lt;br /&gt;
* 4-flow cells per run&lt;br /&gt;
* Anchor replacement or anchor expansion of Illumina libraries&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;THANKS TO&#039;&#039;&#039;||&lt;br /&gt;
* Singular Genomics&lt;br /&gt;
|}&lt;br /&gt;
| valign=&#039;top&#039; |&lt;br /&gt;
 {|&lt;br /&gt;
  ! INDEX HOPPING&lt;br /&gt;
  ! ACCURACY&lt;br /&gt;
  |-&lt;br /&gt;
  |&lt;br /&gt;
[[IMAGE:IndexhopF3.jpeg|left|250px|Index hopping for a standard set of Singular libraries]]&lt;br /&gt;
  |&lt;br /&gt;
[[IMAGE:PPPPF3.jpeg|right|200px|Percent Perfect Plot for Singular libraries 150PE]]&lt;br /&gt;
  |-&lt;br /&gt;
  | Index hopping on Singular runs is on par with GAIIx and HiSeq. High levels of index hopping as observed on Illumina X-AMP chemistry is not observed.&lt;br /&gt;
  | Percent perfect plot for phiX on current Singular chemistry ([https://pmc.ncbi.nlm.nih.gov/articles/pmid/27672352/ Manley et al., 2016])&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Singular_Sequencing&amp;diff=106879</id>
		<title>BioMicroCenter:Singular Sequencing</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Singular_Sequencing&amp;diff=106879"/>
		<updated>2025-11-14T16:43:55Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Singular Sequencing ==&lt;br /&gt;
The Center currently hosts a G4 platform by [https://singulargenomics.com/| Singular Genomics].  Singular’s G4 platform is a short-read mid-throughput sequencing platform delivering adequate sequencing data through its proprietary sequencing-by-synthesis chemistry at a significantly competitive price point.  &lt;br /&gt;
{|&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot; border=1&lt;br /&gt;
  !width=150| Service &lt;br /&gt;
  !width=300| Singular Sequencing&lt;br /&gt;
  |-&lt;br /&gt;
  |INPUT || Singular libraries &lt;br /&gt;
  |-&lt;br /&gt;
  |MIN VOLUME || 12 uL&lt;br /&gt;
  |-&lt;br /&gt;
  |MIN CONCENTRATION || 4 nM&lt;br /&gt;
  |-&lt;br /&gt;
  |INCLUDED SERVICES &lt;br /&gt;
  | &lt;br /&gt;
* Quality Control:Fragment Analyzer and qPCR&lt;br /&gt;
* Singular Sequencing &lt;br /&gt;
* Demultiplexing&lt;br /&gt;
  |-&lt;br /&gt;
  |ADDITIONAL SERVICES ||&lt;br /&gt;
* Quality Control&lt;br /&gt;
* Singular library preparation&lt;br /&gt;
  |-&lt;br /&gt;
  |DATA FORMATS &lt;br /&gt;
  |&lt;br /&gt;
*FASTQ (stored 1 year)&lt;br /&gt;
  |-&lt;br /&gt;
  |QUALITY CONTROL &lt;br /&gt;
  |&lt;br /&gt;
* [https://www.bioinformatics.babraham.ac.uk/projects/fastqc/ FASTQC]&lt;br /&gt;
* Basic run metrics (alignment rate, complexity)&lt;br /&gt;
* Basic RNAseq metrics (where applicable)&lt;br /&gt;
* Basic paired end metrics (where applicable)&lt;br /&gt;
* Contamination checks&lt;br /&gt;
  |-&lt;br /&gt;
  |PRICING || [[BioMicroCenter:Pricing#SINGULAR_G4|LINK]]&lt;br /&gt;
  |-&lt;br /&gt;
  |SUBMISSION &lt;br /&gt;
  |&lt;br /&gt;
* MIT - [https://mit.ilabsolutions.com/service_item/new/3381?spt_id=3863 ilabs] &lt;br /&gt;
  |-&lt;br /&gt;
 |}&lt;br /&gt;
 | valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== ANCHORS ===&lt;br /&gt;
Singular requires S1/S2 anchors in place of Illumina P5/P7 anchors. These can be replaced 1:1 in most oligo designs:&lt;br /&gt;
*s1:ACAAAGGCAGCCACGCACTCCTTCCCTGT&lt;br /&gt;
*s2:CTCCAGCGAGATGACCCTCACCAACCACT&lt;br /&gt;
&lt;br /&gt;
=== INDEXING ===&lt;br /&gt;
Singular indexes are read from the Anchor sequences in all cases and custom primers for indexes are not allowed. &amp;lt;BR&amp;gt;&lt;br /&gt;
Indexes are read from the S1 primer first (index1) followed by S2 (index2) &amp;lt;BR&amp;gt;&lt;br /&gt;
Index reads are the SAME SEQUENCE as ordered in most classical library preps. &amp;lt;BR&amp;gt;&lt;br /&gt;
Indexes are REQUIRED and should be 8 nucleotides in all lane by lane sequencing.&lt;br /&gt;
*Min custom primer submission: 20 uL at 100 uM&lt;br /&gt;
&lt;br /&gt;
===LANE BY LANE===&lt;br /&gt;
*Must be 50 or 150 paired-end dual indexed&lt;br /&gt;
*Pool must be compatible with TruSeq, Nextera, TruSeq, smRNA and Solexa sequencing primers&lt;br /&gt;
&lt;br /&gt;
=== MINIMUM READS ===&lt;br /&gt;
*the BMC has performed quality control.&lt;br /&gt;
* No custom primers.&lt;br /&gt;
*submitted libraries are at least 2 nM.&lt;br /&gt;
&lt;br /&gt;
All other requests, including use of custom sequencing primers require a full flowcell. Illumina libraries which have been converted in the Center will also require a full flowcell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
 |&lt;br /&gt;
== The G4 Platform ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 &lt;br /&gt;
 !width=100| SPEC&lt;br /&gt;
 !width=250| G4&lt;br /&gt;
 |-&lt;br /&gt;
 |&#039;&#039;&#039;SEQUENCER&#039;&#039;&#039;||[[Image:2023_Singular_G4.jpg|center|200px]]&lt;br /&gt;
 |-&lt;br /&gt;
 | &#039;&#039;&#039;READS/LANE&#039;&#039;&#039;&amp;lt;BR&amp;gt; Low number is minimum per lane for standard libraries||&lt;br /&gt;
* F3 per Lane: 50-100 M &lt;br /&gt;
 |-&lt;br /&gt;
|&#039;&#039;&#039;RUN TIME&#039;&#039;&#039;||&lt;br /&gt;
* 50 PE 11 hours&lt;br /&gt;
* 150 PE 24 hours&lt;br /&gt;
 |-&lt;br /&gt;
|&#039;&#039;&#039;KITS AVAILABLE&#039;&#039;&#039;||&lt;br /&gt;
* 100nt&lt;br /&gt;
* 300nt&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;KEY NOTES&#039;&#039;&#039;||&lt;br /&gt;
* 4-color chemistry&lt;br /&gt;
* Patterned flow cell&lt;br /&gt;
* 4-lanes per flow cell&lt;br /&gt;
* 4-flow cells per run&lt;br /&gt;
* Anchor replacement or anchor expansion of Illumina libraries&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;THANKS TO&#039;&#039;&#039;||&lt;br /&gt;
* Singular Genomics&lt;br /&gt;
|}&lt;br /&gt;
| valign=&#039;top&#039; |&lt;br /&gt;
 {|&lt;br /&gt;
  ! INDEX HOPPING&lt;br /&gt;
  ! ACCURACY&lt;br /&gt;
  |-&lt;br /&gt;
  |&lt;br /&gt;
[[IMAGE:IndexhopF3.jpeg|left|250px|Index hopping for a standard set of Singular libraries]]&lt;br /&gt;
  |&lt;br /&gt;
[[IMAGE:PPPPF3.jpeg|right|200px|Percent Perfect Plot for Singular libraries 150PE]]&lt;br /&gt;
  |-&lt;br /&gt;
  | Index hopping on Singular runs is on par with GAIIx and HiSeq. High levels of index hopping as observed on Illumina X-AMP chemistry is not observed.&lt;br /&gt;
  | Percent perfect plot for phiX on current Singular chemistry ([https://pmc.ncbi.nlm.nih.gov/articles/pmid/27672352/ Manley et al., 2016])&lt;br /&gt;
 |}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
	<entry>
		<id>http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106877</id>
		<title>BioMicroCenter:Covaris</title>
		<link rel="alternate" type="text/html" href="http://bmcwiki.mit.edu/index.php?title=BioMicroCenter:Covaris&amp;diff=106877"/>
		<updated>2025-11-14T16:05:19Z</updated>

		<summary type="html">&lt;p&gt;Gibcus: /* E220 Evolution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BioMicroCenter}}&lt;br /&gt;
&lt;br /&gt;
= SONICATORS =&lt;br /&gt;
{|&lt;br /&gt;
 |-style=vertical-align:top&lt;br /&gt;
 |style=width:49%|&lt;br /&gt;
== E220 Evolution ==&lt;br /&gt;
[[Image:E220.jpg‎|thumb|right|250px| Covaris E220 Evo]]&lt;br /&gt;
&lt;br /&gt;
The [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ Covaris E220 evolution sonicator] is a multitube system that processes single samples at a time.  The E220 evolution is capable of processing a wide range of sample types and volumes and may be programed to process from 1 to 96 samples in a single batch. The E220 is most appropriate &amp;lt;5ug clean DNA in 130ul (microTUBE-130) or 20-120 mg tissue mass in 1.0 ml (milliTUBE-1). Using adaptive focused acoustic energy, the E220 utilizing a spherical acoustic transducer, and delivers controlled energy precisely and accurately to sample volumes from 25 μl to 10 ml. The main applications are shearing of DNA, RNA, and chromatin but it can also perform tissue homogenization for cell lysis and drug delivery and formulation.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=DNA%20Shearing%20Protocols/ DNA] &lt;br /&gt;
PROTOCOLS FOR [https://www.covaris.com/protocols?filter_tag=Chromatin%20Shearing%20Protocols/ Chromatin, FFPE] e&lt;br /&gt;
MANUAL: [https://www.covaris.com/e220evolution-focused-ultrasonicator-500429/ E220 evolution]. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[BioMicroCenter:Covaris_Maintenance| E220 Maintenance Instructions]]&lt;br /&gt;
|style=width:2%|&lt;br /&gt;
 &lt;br /&gt;
|style=width:49%|&lt;br /&gt;
&lt;br /&gt;
== R230 ==&lt;br /&gt;
[[IMAGE:R230pic.jpeg|right|250px| Covaris R230]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Covaris R230 is a high throughput sonicator fitted for 96 AFA-TUBE® TPX Plates. Both RNA and DNA have been sheared with similar programs to the ones found on the E220 Evolution at maximum input 5 ug 20-50 uL per well in the sonication by column mode. With this column sonication mode, an entire 96 well plate can be sonicated 10x faster in the R230 versus the E220. &amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 is a critical component in High-throughput libraries produced using ribosomal depletion methods.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Covaris R230 was funded by an NIH grant and R24OD035444 should be included in any publications using the instrument.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gibcus</name></author>
	</entry>
</feed>