<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://boincsynergy.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>BOINC Projects - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://boincsynergy.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/Special:Contributions/Admin"/>
	<updated>2026-07-16T10:36:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1657</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1657"/>
		<updated>2026-06-29T12:14:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** BOINC_projects|All BOINC projects&lt;br /&gt;
** BOINC_project_screensavers|Screensavers&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
* BOINC Synergy&lt;br /&gt;
** https://boincsynergy.ca/|BOINC Synergy Home&lt;br /&gt;
** https://boincsynergy.ca/contact/|Contact BOINC Synergy&lt;br /&gt;
* BOINC&lt;br /&gt;
** https://boinc.berkeley.edu/|BOINC Home&lt;br /&gt;
** https://grafana.kiska.pw/d/boinc/boinc?orgId=1|BOINC project server metrics&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1656</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1656"/>
		<updated>2026-06-28T23:13:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** BOINC_projects|All BOINC projects&lt;br /&gt;
** BOINC_project_screensavers|Screensavers&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
* BOINC Synergy&lt;br /&gt;
** https://boincsynergy.ca/|BOINC Synergy Home&lt;br /&gt;
** https://boincsynergy.ca/contact/|Contact BOINC Synergy&lt;br /&gt;
* BOINC&lt;br /&gt;
** https://boinc.berkeley.edu/|BOINC Home&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1655</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1655"/>
		<updated>2026-06-28T23:07:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
* BOINC Synergy&lt;br /&gt;
** BOINC_projects|All BOINC Projects&lt;br /&gt;
** BOINC_project_screensavers|BOINC Project Screensavers&lt;br /&gt;
** https://boincsynergy.ca/|BOINC Synergy Home&lt;br /&gt;
** https://boincsynergy.ca/contact/|Contact BOINC Synergy&lt;br /&gt;
* BOINC&lt;br /&gt;
** https://boinc.berkeley.edu/|BOINC Home&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1654</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=1654"/>
		<updated>2026-06-28T23:03:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: add links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;br /&gt;
&lt;br /&gt;
* boincsynergy-links&lt;br /&gt;
** BOINC_projects|All BOINC Projects&lt;br /&gt;
** BOINC_project_screensavers|BOINC Project Screensavers&lt;br /&gt;
** https://boincsynergy.ca/|BOINC Synergy&lt;br /&gt;
** https://boincsynergy.ca/contact/|Contact&lt;br /&gt;
** https://boinc.berkeley.edu/|BOINC&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1554</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1554"/>
		<updated>2026-06-07T18:21:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
 |title=BOINC projects&lt;br /&gt;
 |description=All BOINC Projects - a directory and reference for all BOINC volunteer computing projects, past and present.&lt;br /&gt;
 |keywords=BOINC, volunteer computing, distributed computing, BOINC projects, BOINC projects list&lt;br /&gt;
 |image=boinc-projects-seo.png&lt;br /&gt;
}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HERO BANNER&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero&amp;quot;&amp;gt;[[File:Banner.png|center|frameless|250x250px]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-title&amp;quot;&amp;gt;BOINC Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-subtitle&amp;quot;&amp;gt;The most comprehensive encyclopedia of BOINC volunteer computing projects on the web&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-btn&amp;quot;&amp;gt;&#039;&#039;&#039;[[BOINC projects|➜ Browse the Complete BOINC Projects Table]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-note&amp;quot;&amp;gt;The definitive, community-maintained table documenting every known active and retired BOINC project. The most comprehensive BOINC project list anywhere on the internet.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     QUICK-STATS RIBBON&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stats&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;334&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects listed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;55&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-pink&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;71&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;[[BOINC project screensavers|Screensavers archived]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-coral&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;10+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Research fields&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;{{CURRENTYEAR}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Continuously updated&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     WHAT IS A BOINC PROJECT?&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-definition&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;bs-definition-label&amp;quot;&amp;gt;What is a BOINC project?&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A BOINC project&#039;&#039;&#039; is a website and associated server set up by an individual or group to distribute applications to [https://boinc.berkeley.edu/ BOINC] volunteer computing devices. Those devices deliberately attach to receive, process, and return results for further scientific research — at no cost to the researcher, and no cost to the volunteer beyond electricity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;BOINC&#039;&#039; stands for &#039;&#039;&#039;Berkeley Open Infrastructure for Network Computing&#039;&#039;&#039;, developed at the University of California, Berkeley. Any researcher can create a BOINC project; any person can donate their idle CPU or GPU time to one.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     PRIMARY CTA — TABLE LINK&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📋 The BOINC Projects Master Table&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;The [[BOINC projects|List of all BOINC projects]] table is the heart of this wiki — a structured, sortable reference covering project name, research field, institution, supported platforms, active status, GPU support, and more. It is the primary reason this resource exists and the most complete registry of BOINC projects available anywhere.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC projects|View the complete list of BOINC projects →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     SCREENSAVER CALLOUT&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📺 BOINC Project Screensaver Archive&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;Before modern power management made them obsolete, every BOINC project shipped a real-time animated screensaver showing the computation in progress, including protein chains folding, star fields sweeping and climate models spinning. All 71 known screensaver recordings, spanning projects from SETI@home to Pirates@Home, are now preserved in one place.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC Screensavers|View the BOINC Screensaver Archive →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     LOCAL PROJECT PAGES&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== Local BOINC project wiki pages ==&lt;br /&gt;
&lt;br /&gt;
Each project below has its own dedicated article on this wiki. Projects are grouped by research domain and activity status.&lt;br /&gt;
&lt;br /&gt;
=== ✦ Active BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-teal mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔭 Astrophysics, Cosmology &amp;amp; Space&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Einstein@Home]] gravitational wave and pulsar detection&lt;br /&gt;
| * [[MilkyWay@home]] mapping the Milky Way&#039;s structure&lt;br /&gt;
|-&lt;br /&gt;
| * [[LHC@home]] CERN particle physics simulations&lt;br /&gt;
| * [[Gaia@home]] ESA Gaia mission data reduction&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[SPACIOUS@home]] space situational awareness&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-purple mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧬 Biology, Medicine &amp;amp; Biochemistry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[GPUGRID]] GPU-accelerated biomolecular simulations&lt;br /&gt;
| * [[TN-Grid]] neurological research&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rosetta@home]] protein structure prediction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-blue mw-collapsible&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔢 Mathematics, Number Theory &amp;amp; Cryptography&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|* [[Gerasim@home]] multi-project. number field sieve factorisation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| * [[PrimeGrid]] prime number searches across many sub-projects&lt;br /&gt;
| * [[NFS@Home]] number field sieve factorisation&lt;br /&gt;
|-&lt;br /&gt;
| * [[SRBase]] Sierpinski-Riesel base search&lt;br /&gt;
| * [[NumberFields@Home]] algebraic number field tables&lt;br /&gt;
|-&lt;br /&gt;
| * [[YAFU]] yet another factorisation utility&lt;br /&gt;
| * [[LODA]] integer sequence program synthesis&lt;br /&gt;
|-&lt;br /&gt;
| * [[Moo! Wrapper]] distributed.net RC5-72 wrapper&lt;br /&gt;
| * [[ODLK]] orthogonal diagonal Latin squares&lt;br /&gt;
|-&lt;br /&gt;
| * [[ODLK1]] ODLK variant 1&lt;br /&gt;
| * [[ODLK2025]] ODLK 2025 campaign&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rakesearch]] Latin square searches&lt;br /&gt;
| * [[SPT]] Symmetric Prime Tuples&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-green mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🌍 Climate, Environment &amp;amp; Earth Sciences&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Climateprediction.net|climate&#039;&#039;prediction&#039;&#039;.net]] global climate ensemble modelling&lt;br /&gt;
| * [[Asteroids@home]] asteroid orbit determination&lt;br /&gt;
|-&lt;br /&gt;
| * [[Radioactive@home]] background radiation monitoring&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🤖 Artificial Intelligence, Computing &amp;amp; Infrastructure&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[IThena.Computational]] computational measurement network&lt;br /&gt;
| * [[IThena.Measurements]] network performance metrics&lt;br /&gt;
|-&lt;br /&gt;
| * [[BOINC Central]] BOINC infrastructure project&lt;br /&gt;
| * [[WUProp@Home]] work unit propagation statistics&lt;br /&gt;
|-&lt;br /&gt;
|* [[Yoyo@home]] scientific and mathematical subprojects&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-coral mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧪 Physics, Chemistry &amp;amp; Materials Science&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[USPEX@HOME]] crystal structure prediction&lt;br /&gt;
| * [[World Community Grid]] multi-domain humanitarian research&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🕹️ Community, Recreation &amp;amp; Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Minecraft@Home]] Minecraft world-seed research&lt;br /&gt;
| * [[PRIVATE GFN SERVER]] private Generalized Fermat Number server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-pink mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧫 Test &amp;amp; Development Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects serve as active testing and development platforms for BOINC software and infrastructure rather than primary research goals.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[Cpdnboinc dev]] cpdn development and testing server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Paused BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏯ Paused projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects are temporarily suspended but have not formally closed. Work may resume in future.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[DENIS@home]] cardiac electrophysiology research, currently paused&lt;br /&gt;
|* [[SiDock@home]] drug candidate screening&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for the most current status of all projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Retired &amp;amp; inactive BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏸ Retired projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects have suspended operations or are no longer accepting new work units. Their pages are preserved here for historical reference and research continuity.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Albert@Home]] developement site for Einstein@Home&lt;br /&gt;
| * [[Amicable Numbers]] amicable pair enumeration&lt;br /&gt;
|-&lt;br /&gt;
| * [[Axiom Distributed AI]] distributed AI model training&lt;br /&gt;
| * [[BlackHoles@Home]] black hole binary merger waveforms&lt;br /&gt;
|-&lt;br /&gt;
|* [[Cosmology@Home]] astronomical research&lt;br /&gt;
|* [[Collatz Conjecture]] testing the 3x+1 conjecture&lt;br /&gt;
|-&lt;br /&gt;
| * [[Data freezer]] long-term data archival research&lt;br /&gt;
| * [[GoofyxGrid@Home NCI]] non-covalent interaction analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[nanoHUB@Home]] nanotechnology simulation&lt;br /&gt;
| * [[Parlea]] RNA 3D structure motif analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[RALPH@home]] developement site for Rosetta@home&lt;br /&gt;
| * [[Ramanujan Machine]] conjectured mathematical identities&lt;br /&gt;
|-&lt;br /&gt;
| * [[Universe@Home]] stellar evolution modelling&lt;br /&gt;
| * [[WEP-M+2 Project]] mersenne-related prime search&lt;br /&gt;
|-&lt;br /&gt;
|* [[RNA World (beta)]] RNA folding and molecular evolution&lt;br /&gt;
|* [[SETI@home]] search for extraterrestrial intelligence&lt;br /&gt;
|-&lt;br /&gt;
|* [[Predictor@home]] protein folding and the first BOINC project&lt;br /&gt;
|* [[Pirates@Home]] help to develop Einstein@Home screensaver and test BOINC software&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for definitive active/inactive status on all documented projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HOW TO PARTICIPATE&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== How to participate in BOINC projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-steps&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;1. Download BOINC&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Get the free [https://boinc.berkeley.edu/download.php BOINC client]. Available for Windows, macOS, Linux, and Android.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;2. Choose a project&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Browse the [[BOINC projects|complete BOINC projects list]] on this wiki. Filter by research field, platform support, or GPU availability.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;3. Attach &amp;amp; contribute&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Attach via the BOINC client, and your idle computer begins processing work units automatically.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     ABOUT THIS WIKI&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;BOINC projects&#039;&#039; MediaWiki is researched, written, and maintained by [https://boincsynergy.ca/ BOINC Synergy] — a volunteer initiative dedicated to documenting the global BOINC ecosystem. The [[BOINC projects|projects table]] is considered the flagship resource: a single, structured, continuously-updated registry of every known BOINC project, past and present.&lt;br /&gt;
&lt;br /&gt;
Corrections, additions, and edits are welcome. If you know of a BOINC project not yet listed, please use the talk page or contact [https://boincsynergy.ca/ BOINC Synergy] directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-footer-bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;&#039;&#039;BOINC projects&#039;&#039;&#039;&#039;&#039; MediaWiki is developed by [https://boincsynergy.ca/ BOINC Synergy] &amp;amp;nbsp;·&amp;amp;nbsp; Content reflects the state of the BOINC ecosystem as of {{CURRENTYEAR}} &amp;amp;nbsp;·&amp;amp;nbsp; [[BOINC projects|Full projects table →]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Distributed computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1553</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1553"/>
		<updated>2026-06-07T18:18:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: add screensavers link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
 |title=BOINC projects&lt;br /&gt;
 |description=All BOINC Projects - a directory and reference for all BOINC volunteer computing projects, past and present.&lt;br /&gt;
 |keywords=BOINC, volunteer computing, distributed computing, BOINC projects, BOINC projects list&lt;br /&gt;
 |image=boinc-projects-seo.png&lt;br /&gt;
}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HERO BANNER&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero&amp;quot;&amp;gt;[[File:Banner.png|center|frameless|250x250px]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-title&amp;quot;&amp;gt;BOINC Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-subtitle&amp;quot;&amp;gt;The most comprehensive encyclopedia of BOINC volunteer computing projects on the web&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-btn&amp;quot;&amp;gt;&#039;&#039;&#039;[[BOINC projects|➜ Browse the Complete BOINC Projects Table]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-note&amp;quot;&amp;gt;The definitive, community-maintained table documenting every known active and retired BOINC project. The most comprehensive BOINC project list anywhere on the internet.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     QUICK-STATS RIBBON&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stats&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;334&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects listed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;55&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-pink&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;71&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;[[BOINC Screensavers|Screensavers archived]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-coral&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;10+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Research fields&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;{{CURRENTYEAR}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Continuously updated&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     WHAT IS A BOINC PROJECT?&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-definition&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;bs-definition-label&amp;quot;&amp;gt;What is a BOINC project?&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A BOINC project&#039;&#039;&#039; is a website and associated server set up by an individual or group to distribute applications to [https://boinc.berkeley.edu/ BOINC] volunteer computing devices. Those devices deliberately attach to receive, process, and return results for further scientific research — at no cost to the researcher, and no cost to the volunteer beyond electricity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;BOINC&#039;&#039; stands for &#039;&#039;&#039;Berkeley Open Infrastructure for Network Computing&#039;&#039;&#039;, developed at the University of California, Berkeley. Any researcher can create a BOINC project; any person can donate their idle CPU or GPU time to one.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     PRIMARY CTA — TABLE LINK&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📋 The BOINC Projects Master Table&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;The [[BOINC projects|List of all BOINC projects]] table is the heart of this wiki — a structured, sortable reference covering project name, research field, institution, supported platforms, active status, GPU support, and more. It is the primary reason this resource exists and the most complete registry of BOINC projects available anywhere.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC projects|View the complete list of BOINC projects →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     SCREENSAVER CALLOUT&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📺 BOINC Project Screensaver Archive&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;Before modern power management made them obsolete, every BOINC project shipped a real-time animated screensaver showing the computation in progress, including protein chains folding, star fields sweeping and climate models spinning. All 71 known screensaver recordings, spanning projects from SETI@home to Pirates@Home, are now preserved in one place.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC Screensavers|View the BOINC Screensaver Archive →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     LOCAL PROJECT PAGES&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== Local BOINC project wiki pages ==&lt;br /&gt;
&lt;br /&gt;
Each project below has its own dedicated article on this wiki. Projects are grouped by research domain and activity status.&lt;br /&gt;
&lt;br /&gt;
=== ✦ Active BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-teal mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔭 Astrophysics, Cosmology &amp;amp; Space&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Einstein@Home]] gravitational wave and pulsar detection&lt;br /&gt;
| * [[MilkyWay@home]] mapping the Milky Way&#039;s structure&lt;br /&gt;
|-&lt;br /&gt;
| * [[LHC@home]] CERN particle physics simulations&lt;br /&gt;
| * [[Gaia@home]] ESA Gaia mission data reduction&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[SPACIOUS@home]] space situational awareness&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-purple mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧬 Biology, Medicine &amp;amp; Biochemistry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[GPUGRID]] GPU-accelerated biomolecular simulations&lt;br /&gt;
| * [[TN-Grid]] neurological research&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rosetta@home]] protein structure prediction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-blue mw-collapsible&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔢 Mathematics, Number Theory &amp;amp; Cryptography&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|* [[Gerasim@home]] multi-project. number field sieve factorisation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| * [[PrimeGrid]] prime number searches across many sub-projects&lt;br /&gt;
| * [[NFS@Home]] number field sieve factorisation&lt;br /&gt;
|-&lt;br /&gt;
| * [[SRBase]] Sierpinski-Riesel base search&lt;br /&gt;
| * [[NumberFields@Home]] algebraic number field tables&lt;br /&gt;
|-&lt;br /&gt;
| * [[YAFU]] yet another factorisation utility&lt;br /&gt;
| * [[LODA]] integer sequence program synthesis&lt;br /&gt;
|-&lt;br /&gt;
| * [[Moo! Wrapper]] distributed.net RC5-72 wrapper&lt;br /&gt;
| * [[ODLK]] orthogonal diagonal Latin squares&lt;br /&gt;
|-&lt;br /&gt;
| * [[ODLK1]] ODLK variant 1&lt;br /&gt;
| * [[ODLK2025]] ODLK 2025 campaign&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rakesearch]] Latin square searches&lt;br /&gt;
| * [[SPT]] Symmetric Prime Tuples&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-green mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🌍 Climate, Environment &amp;amp; Earth Sciences&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Climateprediction.net|climate&#039;&#039;prediction&#039;&#039;.net]] global climate ensemble modelling&lt;br /&gt;
| * [[Asteroids@home]] asteroid orbit determination&lt;br /&gt;
|-&lt;br /&gt;
| * [[Radioactive@home]] background radiation monitoring&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🤖 Artificial Intelligence, Computing &amp;amp; Infrastructure&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[IThena.Computational]] computational measurement network&lt;br /&gt;
| * [[IThena.Measurements]] network performance metrics&lt;br /&gt;
|-&lt;br /&gt;
| * [[BOINC Central]] BOINC infrastructure project&lt;br /&gt;
| * [[WUProp@Home]] work unit propagation statistics&lt;br /&gt;
|-&lt;br /&gt;
|* [[Yoyo@home]] scientific and mathematical subprojects&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-coral mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧪 Physics, Chemistry &amp;amp; Materials Science&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[USPEX@HOME]] crystal structure prediction&lt;br /&gt;
| * [[World Community Grid]] multi-domain humanitarian research&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🕹️ Community, Recreation &amp;amp; Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Minecraft@Home]] Minecraft world-seed research&lt;br /&gt;
| * [[PRIVATE GFN SERVER]] private Generalized Fermat Number server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-pink mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧫 Test &amp;amp; Development Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects serve as active testing and development platforms for BOINC software and infrastructure rather than primary research goals.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[Cpdnboinc dev]] cpdn development and testing server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Paused BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏯ Paused projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects are temporarily suspended but have not formally closed. Work may resume in future.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[DENIS@home]] cardiac electrophysiology research, currently paused&lt;br /&gt;
|* [[SiDock@home]] drug candidate screening&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for the most current status of all projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Retired &amp;amp; inactive BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏸ Retired projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects have suspended operations or are no longer accepting new work units. Their pages are preserved here for historical reference and research continuity.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Albert@Home]] developement site for Einstein@Home&lt;br /&gt;
| * [[Amicable Numbers]] amicable pair enumeration&lt;br /&gt;
|-&lt;br /&gt;
| * [[Axiom Distributed AI]] distributed AI model training&lt;br /&gt;
| * [[BlackHoles@Home]] black hole binary merger waveforms&lt;br /&gt;
|-&lt;br /&gt;
|* [[Cosmology@Home]] astronomical research&lt;br /&gt;
|* [[Collatz Conjecture]] testing the 3x+1 conjecture&lt;br /&gt;
|-&lt;br /&gt;
| * [[Data freezer]] long-term data archival research&lt;br /&gt;
| * [[GoofyxGrid@Home NCI]] non-covalent interaction analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[nanoHUB@Home]] nanotechnology simulation&lt;br /&gt;
| * [[Parlea]] RNA 3D structure motif analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[RALPH@home]] developement site for Rosetta@home&lt;br /&gt;
| * [[Ramanujan Machine]] conjectured mathematical identities&lt;br /&gt;
|-&lt;br /&gt;
| * [[Universe@Home]] stellar evolution modelling&lt;br /&gt;
| * [[WEP-M+2 Project]] mersenne-related prime search&lt;br /&gt;
|-&lt;br /&gt;
|* [[RNA World (beta)]] RNA folding and molecular evolution&lt;br /&gt;
|* [[SETI@home]] search for extraterrestrial intelligence&lt;br /&gt;
|-&lt;br /&gt;
|* [[Predictor@home]] protein folding and the first BOINC project&lt;br /&gt;
|* [[Pirates@Home]] help to develop Einstein@Home screensaver and test BOINC software&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for definitive active/inactive status on all documented projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HOW TO PARTICIPATE&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== How to participate in BOINC projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-steps&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;1. Download BOINC&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Get the free [https://boinc.berkeley.edu/download.php BOINC client]. Available for Windows, macOS, Linux, and Android.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;2. Choose a project&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Browse the [[BOINC projects|complete BOINC projects list]] on this wiki. Filter by research field, platform support, or GPU availability.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;3. Attach &amp;amp; contribute&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Attach via the BOINC client, and your idle computer begins processing work units automatically.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     ABOUT THIS WIKI&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;BOINC projects&#039;&#039; MediaWiki is researched, written, and maintained by [https://boincsynergy.ca/ BOINC Synergy] — a volunteer initiative dedicated to documenting the global BOINC ecosystem. The [[BOINC projects|projects table]] is considered the flagship resource: a single, structured, continuously-updated registry of every known BOINC project, past and present.&lt;br /&gt;
&lt;br /&gt;
Corrections, additions, and edits are welcome. If you know of a BOINC project not yet listed, please use the talk page or contact [https://boincsynergy.ca/ BOINC Synergy] directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-footer-bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;&#039;&#039;BOINC projects&#039;&#039;&#039;&#039;&#039; MediaWiki is developed by [https://boincsynergy.ca/ BOINC Synergy] &amp;amp;nbsp;·&amp;amp;nbsp; Content reflects the state of the BOINC ecosystem as of {{CURRENTYEAR}} &amp;amp;nbsp;·&amp;amp;nbsp; [[BOINC projects|Full projects table →]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Distributed computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1552</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1552"/>
		<updated>2026-06-07T18:09:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-pink {&lt;br /&gt;
    background: var(--bs-pink-50);&lt;br /&gt;
    border-color: var(--bs-pink-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-pink .bs-stat-number { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-stat-pink .bs-stat-label  { color: var(--bs-pink-200); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
/* ── Stat ribbon — pink tile ────────────────────── */&lt;br /&gt;
.bs-stat-pink .bs-stat-label { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
/* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb, &lt;br /&gt;
    div.thumb, &lt;br /&gt;
    .thumbinner, &lt;br /&gt;
    div.thumbinner,&lt;br /&gt;
    figure.mw-halign-right, &lt;br /&gt;
    figure.mw-halign-left,&lt;br /&gt;
    figure.mw-halign-none, &lt;br /&gt;
    figure.mw-halign-center,&lt;br /&gt;
        .mw-parser-output figure {&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        /* no background — transparent PNGs show through correctly */&lt;br /&gt;
}&lt;br /&gt;
    .thumbcaption,&lt;br /&gt;
    figcaption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
        background: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1542</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1542"/>
		<updated>2026-06-07T10:50:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
/* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb, &lt;br /&gt;
    div.thumb, &lt;br /&gt;
    .thumbinner, &lt;br /&gt;
    div.thumbinner,&lt;br /&gt;
    figure.mw-halign-right, &lt;br /&gt;
    figure.mw-halign-left,&lt;br /&gt;
    figure.mw-halign-none, &lt;br /&gt;
    figure.mw-halign-center,&lt;br /&gt;
        .mw-parser-output figure {&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        /* no background — transparent PNGs show through correctly */&lt;br /&gt;
}&lt;br /&gt;
    .thumbcaption,&lt;br /&gt;
    figcaption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
        background: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1541</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1541"/>
		<updated>2026-06-07T10:47:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
/* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb, &lt;br /&gt;
    div.thumb, &lt;br /&gt;
    .thumbinner, &lt;br /&gt;
    div.thumbinner,&lt;br /&gt;
    figure.mw-halign-right, &lt;br /&gt;
    figure.mw-halign-left,&lt;br /&gt;
    figure.mw-halign-none, &lt;br /&gt;
    figure.mw-halign-center,&lt;br /&gt;
        .mw-parser-output figure {&lt;br /&gt;
        border-color: #4a2648 !important;&lt;br /&gt;
        /* no background — transparent PNGs show through correctly */&lt;br /&gt;
}&lt;br /&gt;
    .thumbcaption,&lt;br /&gt;
    figcaption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
        background: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1540</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1540"/>
		<updated>2026-06-07T10:40:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: fix image transparencies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
/* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb, &lt;br /&gt;
    div.thumb, &lt;br /&gt;
    .thumbinner, &lt;br /&gt;
    div.thumbinner,&lt;br /&gt;
    figure.mw-halign-right, &lt;br /&gt;
    figure.mw-halign-left,&lt;br /&gt;
    figure.mw-halign-none, &lt;br /&gt;
    figure.mw-halign-center,&lt;br /&gt;
        .mw-parser-output figure {&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        /* no background — transparent PNGs show through correctly */&lt;br /&gt;
}&lt;br /&gt;
    .thumbcaption,&lt;br /&gt;
    figcaption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
        background: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1533</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1533"/>
		<updated>2026-06-04T22:21:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
/* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb,&lt;br /&gt;
    div.thumb,&lt;br /&gt;
    .thumbinner,&lt;br /&gt;
    div.thumbinner,&lt;br /&gt;
    figure.mw-halign-right,&lt;br /&gt;
    figure.mw-halign-left,&lt;br /&gt;
    figure.mw-halign-none,&lt;br /&gt;
    figure.mw-halign-center,&lt;br /&gt;
    .mw-parser-output figure {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
    .thumbcaption,&lt;br /&gt;
    figcaption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
        background: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1532</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1532"/>
		<updated>2026-06-04T17:09:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — mobile styles  (Minerva skin)&lt;br /&gt;
   MediaWiki:Mobile.css&lt;br /&gt;
   &lt;br /&gt;
   Common.css already loads on mobile, so this file only&lt;br /&gt;
   needs to handle:&lt;br /&gt;
     1. Minerva layout corrections&lt;br /&gt;
     2. Styles that Vector chrome selectors can&#039;t reach&lt;br /&gt;
   &lt;br /&gt;
   Dark mode: Minerva handles wiki/image boxes natively,&lt;br /&gt;
   so we don&#039;t repeat those overrides here.&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
/* @import already fires from common.css — no need to repeat */&lt;br /&gt;
&lt;br /&gt;
/* ── HERO — stack &amp;amp; tighten on narrow screens ───────── */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    padding: 1.25rem 1rem 1rem;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 1.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 0.95rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STATS RIBBON — single column on very small screens  */&lt;br /&gt;
@media (max-width: 400px) {&lt;br /&gt;
    .bs-stat {&lt;br /&gt;
        min-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STEPS — stack vertically ───────────────────────── */&lt;br /&gt;
.bs-step {&lt;br /&gt;
    min-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── PROJECT TABLE — single column ─────────────────── */&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 0.15rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — full-width on mobile ─────────────────── */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin: 0 0 1rem 0 !important;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Minerva wraps first section in .mf-section-0 before the infobox */&lt;br /&gt;
.mf-section-0 &amp;gt; p:empty,&lt;br /&gt;
.mf-section-0 &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mf-section-0 &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── DARK MODE — mobile (Minerva) ───────────────────── */&lt;br /&gt;
/*&lt;br /&gt;
   Minerva already darkens its own chrome and standard wiki&lt;br /&gt;
   constructs (image frames, thumbs, wikitables) in dark mode.&lt;br /&gt;
   &lt;br /&gt;
   We only need to patch our custom .bs-* components that&lt;br /&gt;
   Minerva has no knowledge of, the infobox, the license box,&lt;br /&gt;
   and the edit textarea.&lt;br /&gt;
   &lt;br /&gt;
   Do NOT re-declare Vector chrome rules here (#mw-head,&lt;br /&gt;
   #mw-panel, etc.) — those IDs don&#039;t exist in Minerva.&lt;br /&gt;
*/&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* page shell — Minerva uses .mw-body, not #content */&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── bs-* components ──────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* hero */&lt;br /&gt;
    .bs-hero {&lt;br /&gt;
        background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* quote */&lt;br /&gt;
    .bs-quote {&lt;br /&gt;
        background: var(--bs-gray-50);&lt;br /&gt;
        border-left-color: var(--bs-gray-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* definition */&lt;br /&gt;
    .bs-definition {&lt;br /&gt;
        background: var(--bs-purple-50);&lt;br /&gt;
        border-left-color: var(--bs-purple-400);&lt;br /&gt;
        color: var(--bs-purple-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* CTA box */&lt;br /&gt;
    .bs-cta {&lt;br /&gt;
        background: var(--bs-page-bg);&lt;br /&gt;
        border-color: var(--bs-purple-400);&lt;br /&gt;
    }&lt;br /&gt;
    .bs-cta-title { color: var(--bs-purple-800); }&lt;br /&gt;
    .bs-cta-body  { color: var(--bs-text-muted);  }&lt;br /&gt;
&lt;br /&gt;
    /* stat cards */&lt;br /&gt;
    .bs-stat-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-stat-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-stat-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-stat-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* group cards */&lt;br /&gt;
    .bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
    .bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  }&lt;br /&gt;
    .bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  }&lt;br /&gt;
    .bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   }&lt;br /&gt;
    .bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* step cards */&lt;br /&gt;
    .bs-step-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-step-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-step-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* footer bar */&lt;br /&gt;
    .bs-footer-bar {&lt;br /&gt;
        border-top-color: var(--bs-gray-200);&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via Common.css :root dark block;&lt;br /&gt;
       !important guards against Minerva&#039;s own table resets. */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit textarea (Minerva) ────────────────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    /* Mirrors common.css dark mode block but scoped for Minerva.&lt;br /&gt;
       Repeating is intentional — Minerva and Vector load different&lt;br /&gt;
       base stylesheets, so the !important cascade differs. */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── TOC ────────────────────────────────────────── */&lt;br /&gt;
    /* Minerva renders its own TOC drawer; this patches the&lt;br /&gt;
       inline TOC if present (e.g. on desktop-redirected pages) */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1531</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1531"/>
		<updated>2026-06-04T17:08:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   LICENSE BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.license-box {&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    border: 1px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
    color: var(--bs-text-primary);&lt;br /&gt;
    font-size: 0.9em;&lt;br /&gt;
    margin: 0.5em 0;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.license-box-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image / thumb frames ───────────────────────── */&lt;br /&gt;
    .thumb,&lt;br /&gt;
    .thumbinner,&lt;br /&gt;
    div.thumb {&lt;br /&gt;
        background: #1e1e1c;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    .thumbcaption {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Edit page — textarea and toolbar ───────────── */&lt;br /&gt;
    #wpTextbox1,&lt;br /&gt;
    .mw-editfont-default,&lt;br /&gt;
    textarea.mw-editfont-default {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #toolbar,&lt;br /&gt;
    #wpSummary,&lt;br /&gt;
    input#wpSummary {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── License box ────────────────────────────────── */&lt;br /&gt;
    /* Variables auto-remap via :root dark block above;&lt;br /&gt;
       explicit override ensures border/bg aren&#039;t&lt;br /&gt;
       overridden by any #content table rule above.    */&lt;br /&gt;
    .license-box {&lt;br /&gt;
        background: var(--bs-gray-50) !important;&lt;br /&gt;
        border-color: var(--bs-gray-200) !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Parlea&amp;diff=1500</id>
		<title>Parlea</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Parlea&amp;diff=1500"/>
		<updated>2026-06-02T13:44:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Why Parlea? */ phrasing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Parlea&lt;br /&gt;
| logo                 = Default water.jpg&lt;br /&gt;
&lt;br /&gt;
| status               = Inactive&lt;br /&gt;
| category             = Mathematics / Combinatorics&lt;br /&gt;
| compute              = CPU (Android)&lt;br /&gt;
&lt;br /&gt;
| developer            = Dolgov Andrey Andreevich&lt;br /&gt;
| author               = Dolgov Andrey Andreevich&lt;br /&gt;
| sponsor              = [[wikipedia:National University of Science and Technology MISIS|NUST MISIS]] — Department of Engineering Cybernetics&lt;br /&gt;
| maintainer           = Dolgov Andrey Andreevich&lt;br /&gt;
| released             = {{Start date and age|2021|06|04}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = [[wikipedia:Android (operating system)|Android]] (ARM, ARM64, x86, x86_64)&lt;br /&gt;
&lt;br /&gt;
| stats as of          = {{Start date and age|2026|05|22}}&lt;br /&gt;
| active users         = 0&lt;br /&gt;
| total users          = 106&lt;br /&gt;
| active hosts         = 0&lt;br /&gt;
| total hosts          = 345&lt;br /&gt;
&lt;br /&gt;
| rac                  = 0&lt;br /&gt;
| average performance  = 0.05 GigaFLOPS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://parlea.ru/boinctest/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[http://parlea.ru/boinctest/ &#039;&#039;&#039;&#039;&#039;Parlea&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project that needs your help to solve the Orthogonal Diagonal Latin Square (ODLS) problem.&lt;br /&gt;
&lt;br /&gt;
== Why Parlea? ==&lt;br /&gt;
The project was created as part of a final qualifying work (&#039;&#039;выпускная квалификационная работа&#039;&#039;) at the [[wikipedia:National University of Science and Technology MISIS|National University of Science and Technology MISIS (NUST MISIS)]] in Moscow, Russia.&amp;lt;ref&amp;gt;{{cite web |url=https://parlea.ru/boinctest/about.php |title=About Parlea |publisher=Parlea |access-date=22 May 2026}}&amp;lt;/ref&amp;gt; The name &amp;quot;Parlea&amp;quot; is not an acronym; it reflects the project&#039;s academic origin as a deliverable student thesis.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
Parlea is a [[wikipedia:Volunteer computing|volunteer computing]] benchmark project that aims to investigate the efficiency and behavior of [[wikipedia:Android (operating system)|Android]] mobile devices as compute nodes on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform. Its scientific objective is to solve the Orthogonal Diagonal Latin Square (ODLS) problem using donated computational cycles from volunteers worldwide.&lt;br /&gt;
&lt;br /&gt;
A secondary goal is to demonstrate that mobile devices — which are available in far greater numbers than desktop computers — can serve as viable contributors to [[wikipedia:Distributed computing|distributed computing]] workloads. As noted in a survey of the BOINC platform, current mobile processors feature on-chip GPUs providing several teraFLOPS of performance, and the near-term potential capacity of volunteer computing from mobile devices alone could reach hundreds of ExaFLOPS.&amp;lt;ref&amp;gt;{{cite journal |last=Anderson |first=David P. |title=BOINC: A Platform for Volunteer Computing |url=https://arxiv.org/abs/1903.01699 |year=2019 |access-date=22 May 2026 |doi=10.48550/ARXIV.1903.01699}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Parlea is currently &#039;&#039;&#039;inactive&#039;&#039;&#039;. As of 22 May 2026, no tasks are being sent to volunteers and no recent credit has been recorded. The project server remains online and the BOINC daemons are running, but the task queue is empty.&amp;lt;ref&amp;gt;{{cite web |url=https://parlea.ru/boinctest/server_status.php |title=Parlea Server Status |publisher=Parlea |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Metric !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Total registered users (with credit) || 106&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 0&lt;br /&gt;
|-&lt;br /&gt;
| Total registered hosts (with credit) || 345&lt;br /&gt;
|-&lt;br /&gt;
| Hosts with recent credit || 0&lt;br /&gt;
|-&lt;br /&gt;
| Current performance || 0.05 GigaFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Workunits waiting for validation || 1,000&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 0&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A backlog of 1,000 workunits awaiting validation suggests that prior computation was completed and is pending final server-side processing.&lt;br /&gt;
&lt;br /&gt;
== Scientific Background ==&lt;br /&gt;
[[File:Magic Square 2014.svg|thumb|&#039;&#039;&#039;Magic Square 2014&#039;&#039;&#039; This is a 14 x 14 magic square. The square begins with Durer&#039;s date of birth (1471) and ends with the date of his death (1528).]]&lt;br /&gt;
&lt;br /&gt;
=== Latin Squares ===&lt;br /&gt;
&lt;br /&gt;
A [[wikipedia:Latin square|Latin square]] of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is an &amp;lt;math&amp;gt;n \times n&amp;lt;/math&amp;gt; array filled with &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; different symbols, each occurring exactly once in each row and exactly once in each column.&amp;lt;ref&amp;gt;{{cite encyclopedia |url=https://en.wikipedia.org/wiki/Latin_square |title=Latin square |encyclopedia=Wikipedia |access-date=22 May 2026}}&amp;lt;/ref&amp;gt; Formally, a Latin square is a set of &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; triples &amp;lt;math&amp;gt;(r, c, s)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;1 \leq r, c, s \leq n&amp;lt;/math&amp;gt;, such that all ordered pairs &amp;lt;math&amp;gt;(r, c)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(r, s)&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;(c, s)&amp;lt;/math&amp;gt; are distinct. The concept was first systematically studied by [[wikipedia:Leonhard Euler|Leonhard Euler]] in 1782.&lt;br /&gt;
&lt;br /&gt;
=== Diagonal Latin Squares ===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;diagonal Latin square&#039;&#039;&#039; (DLS) of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is a Latin square in which both the main diagonal and the main antidiagonal also contain each of the &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; symbols exactly once. Because of this additional constraint, the space of diagonal Latin squares is substantially smaller than the general Latin square space; for example, for order &amp;lt;math&amp;gt;n = 9&amp;lt;/math&amp;gt;, only a fraction of all Latin squares are diagonal.&amp;lt;ref&amp;gt;{{cite journal |last=Vatutin |first=Eduard |display-authors=etal |title=Using Volunteer Computing to Study Some Features of Diagonal Latin Squares |journal=Open Engineering |volume=7 |issue=1 |pages=453–460 |year=2017 |doi=10.1515/eng-2017-0052 |url=https://www.degruyterbrill.com/document/doi/10.1515/eng-2017-0052/html}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The enormous size of the diagonal Latin squares space makes it computationally infeasible to enumerate all its objects in reasonable time by brute force. Sophisticated search methods and the BOINC platform are essential to meet the computational requirements.&amp;lt;ref&amp;gt;{{cite web |url=https://rake.boincfast.ru/rakesearch/about.php |title=About RakeSearch |publisher=RakeSearch |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Orthogonal Diagonal Latin Squares ===&lt;br /&gt;
&lt;br /&gt;
Two Latin squares of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; are said to be &#039;&#039;&#039;orthogonal&#039;&#039;&#039; if, when one is superimposed on the other, every ordered pair of symbols appears exactly once among the &amp;lt;math&amp;gt;n^2&amp;lt;/math&amp;gt; cells. An &#039;&#039;&#039;Orthogonal Diagonal Latin Square&#039;&#039;&#039; (ODLS) of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is a pair of orthogonal Latin squares of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; in which both members are diagonal — that is, both squares carry distinct symbols on their main diagonal and antidiagonal.&amp;lt;ref&amp;gt;{{cite journal |url=https://www.cambridge.org/core/product/51221E11F72A8B0A07E0C95AA18D9192 |title=Orthogonal diagonal Latin squares of order n |journal=Bulletin of the Australian Mathematical Society |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It has been proven that ODLS of order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; exist for all &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; except &amp;lt;math&amp;gt;n \in \{2, 3, 6, 10, 14, 15, 18, 26\}&amp;lt;/math&amp;gt;, with &amp;lt;math&amp;gt;n \in \{2, 3, 6\}&amp;lt;/math&amp;gt; being impossible.&amp;lt;ref&amp;gt;{{cite journal |url=https://www.cambridge.org/core/product/51221E11F72A8B0A07E0C95AA18D9192 |title=Orthogonal diagonal Latin squares of order n |journal=Bulletin of the Australian Mathematical Society |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;orthogonality graph&#039;&#039;&#039; of a DLS is a graph in which each node represents a DLS orthogonal to a given base square, and edges connect mutually orthogonal pairs. Reconstructing complete orthogonality graphs — understanding which DLSs are mutually orthogonal — is the central combinatorial challenge that Parlea and its parent project RakeSearch address.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
=== Application: Cycle Search ===&lt;br /&gt;
&lt;br /&gt;
Parlea runs a single application called &#039;&#039;&#039;Cycle Search&#039;&#039;&#039; (version 0.09), released on 4 June 2021.&amp;lt;ref&amp;gt;{{cite web |url=https://parlea.ru/boinctest/apps.php |title=Parlea Applications |publisher=Parlea |access-date=22 May 2026}}&amp;lt;/ref&amp;gt; The application is derived from the [[wikipedia:RakeSearch|RakeSearch]] BOINC project. RakeSearch implements a search for row-permutational DLSs orthogonal to a given base square, allowing reconstruction of the full orthogonality graph.&amp;lt;ref&amp;gt;{{cite journal |last=Manzyuk |first=Maxim |last2=Nikitina |first2=Natalia |last3=Vatutin |first3=Eduard |title=Start-up and the Results of the Volunteer Computing Project RakeSearch |journal=Communications in Computer and Information Science |year=2019 |doi=10.1007/978-3-030-36592-9_59 |url=https://link.springer.com/chapter/10.1007/978-3-030-36592-9_59}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rather than searching all possible DLSs, the algorithm fixes a starting square and enumerates only its &#039;&#039;row-permutation mates&#039;&#039; — squares reachable by permuting rows of the original — greatly reducing the search space while still revealing the orthogonality structure.&lt;br /&gt;
&lt;br /&gt;
In Parlea, this application is deployed specifically to benchmark [[wikipedia:Android (operating system)|Android]] mobile hardware, rather than desktop-class CPUs. Workunits are assigned to mobile volunteer devices, and the timing and correctness statistics are analysed to evaluate mobile suitability as BOINC compute nodes.&lt;br /&gt;
&lt;br /&gt;
=== Supported Platforms ===&lt;br /&gt;
&lt;br /&gt;
The Cycle Search application supports four Android targets:&amp;lt;ref&amp;gt;{{cite web |url=https://parlea.ru/boinctest/apps.php |title=Parlea Applications |publisher=Parlea |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform !! Architecture !! Version !! Created&lt;br /&gt;
|-&lt;br /&gt;
| Android || ARM 32-bit || 0.09 || 4 Jun 2021&lt;br /&gt;
|-&lt;br /&gt;
| Android || ARM 64-bit (arm64-v8a) || 0.09 || 4 Jun 2021&lt;br /&gt;
|-&lt;br /&gt;
| Android || Intel x86 32-bit || 0.09 || 4 Jun 2021&lt;br /&gt;
|-&lt;br /&gt;
| Android || Intel x86 64-bit || 0.09 || 4 Jun 2021&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The project does not offer Windows, Linux, or macOS clients, distinguishing it from most BOINC projects. This Android-only design is intentional: the benchmark is specifically studying mobile compute behaviour.&lt;br /&gt;
&lt;br /&gt;
=== Server Architecture ===&lt;br /&gt;
&lt;br /&gt;
The project runs on a standard BOINC server stack hosted at &amp;lt;code&amp;gt;parlea.ru&amp;lt;/code&amp;gt;. As of May 2026, the following daemons are operational:&amp;lt;ref&amp;gt;{{cite web |url=https://parlea.ru/boinctest/server_status.php |title=Parlea Server Status |publisher=Parlea |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Download and upload servers&lt;br /&gt;
* Scheduler&lt;br /&gt;
* Feeder and transitioner&lt;br /&gt;
* File deleter&lt;br /&gt;
* Validators and assimilators for three application types: native (&amp;lt;code&amp;gt;gt_cl&amp;lt;/code&amp;gt;), boinc2docker, and [[wikipedia:VirtualBox|VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
The BOINC server software version is 1.1.0 (database schema 27028).&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
Parlea is closely related to several other BOINC projects investigating diagonal Latin squares:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://rake.boincfast.ru/rakesearch/ RakeSearch]&#039;&#039;&#039; — The parent project from which Parlea&#039;s Cycle Search application is derived. Run by the Karelian Research Center of the Russian Academy of Sciences, RakeSearch searches for orthogonal pairs of diagonal Latin squares of order 9 using desktop volunteer computers.&amp;lt;ref&amp;gt;{{cite web |url=https://boincsynergy.ca/wiki/Rakesearch/ |title=RakeSearch — BOINC Synergy |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://boinc.progger.info/odlk/ ODLK]&#039;&#039;&#039; — A BOINC project focused on researching 10th-order diagonal Latin squares.&amp;lt;ref&amp;gt;{{cite web |url=https://boincsynergy.ca/wiki/ODLK/ |title=ODLK — BOINC Synergy |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://boinc.progger.info/odlk1/ ODLK1]&#039;&#039;&#039; — A continuation of ODLK, searching for canonical forms of diagonal Latin squares of order 10.&amp;lt;ref&amp;gt;{{cite web |url=https://boincsynergy.ca/wiki/index.php/ODLK1 |title=ODLK1 — BOINC Synergy |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://gerasim.boinc.ru/ Gerasim@Home]&#039;&#039;&#039; — Used to enumerate diagonal Latin squares of order 9 and search for their canonical forms.&amp;lt;ref&amp;gt;{{cite journal |last=Vatutin |first=Eduard |display-authors=etal |title=Using Volunteer Computing to Study Some Features of Diagonal Latin Squares |journal=Open Engineering |volume=7 |issue=1 |year=2017 |doi=10.1515/eng-2017-0052 |url=https://www.degruyterbrill.com/document/doi/10.1515/eng-2017-0052/html}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The project was created at the [[wikipedia:National University of Science and Technology MISIS|National University of Science and Technology MISIS]] (NUST MISIS),&amp;lt;ref&amp;gt;{{cite web |url=https://en.wikipedia.org/wiki/National_University_of_Science_and_Technology_MISiS |title=National University of Science and Technology MISIS — Wikipedia |access-date=22 May 2026}}&amp;lt;/ref&amp;gt; a public technological university in Moscow, Russia, established in 1918 as part of the Moscow Mining Academy and granted national university status in 2008.&amp;lt;ref&amp;gt;{{cite web |url=https://en.wikipedia.org/wiki/National_University_of_Science_and_Technology_MISiS |title=National University of Science and Technology MISIS — Wikipedia |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Role !! Name&lt;br /&gt;
|-&lt;br /&gt;
| Institution || NUST MISIS Institute, Department of Engineering Cybernetics&lt;br /&gt;
|-&lt;br /&gt;
| Student / Developer || Dolgov Andrey Andreevich&lt;br /&gt;
|-&lt;br /&gt;
| Scientific Supervisor || Associate Professor, Ph.D. Kurochkin Ilya Ilyich&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
The following papers are relevant to the science underlying Parlea, primarily from the RakeSearch project which developed the core algorithm:&amp;lt;ref&amp;gt;{{cite web |url=https://boinc.berkeley.edu/pubs.php |title=Publications by BOINC Projects |publisher=BOINC / UC Berkeley |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://rake.boincfast.ru/rakesearch/publications.php |title=RakeSearch Publications |publisher=RakeSearch |access-date=22 May 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Manzyuk, Maxim, Natalia Nikitina and Eduard Vatutin. [https://link.springer.com/chapter/10.1007/978-3-030-36592-9_59 &#039;&#039;Start-up and the Results of the Volunteer Computing Project RakeSearch.&#039;&#039;] Communications in Computer and Information Science (2019). DOI: [https://doi.org/10.1007/978-3-030-36592-9_59 10.1007/978-3-030-36592-9_59]&lt;br /&gt;
&lt;br /&gt;
* Vatutin, Eduard, Alexey Belyshev, Natalia Nikitina, Maxim Manzuk, Alexander Albertian, Ilya Kurochkin, Alexander Kripachev and Alexey Pykhtin. &#039;&#039;Diagonalization and Canonization of Latin Squares.&#039;&#039; Supercomputing (2023).&lt;br /&gt;
&lt;br /&gt;
* Vatutin, Eduard, Oleg Zaikin, Maxim Manzyuk and Natalia Nikitina. [https://link.springer.com/chapter/10.1007/978-3-030-92864-3_38 &#039;&#039;Searching for Orthogonal Latin Squares via Cells Mapping and BOINC-Based Cube-and-Conquer.&#039;&#039;] (2021). DOI: [https://doi.org/10.1007/978-3-030-92864-3_38 10.1007/978-3-030-92864-3_38]&lt;br /&gt;
&lt;br /&gt;
* Vatutin, Eduard &#039;&#039;et al.&#039;&#039; [https://link.springer.com/chapter/10.1007/978-3-030-64616-5_50 &#039;&#039;Enumerating the Orthogonal Diagonal Latin Squares of Small Order for Different Types of Orthogonality.&#039;&#039;] (2020). DOI: [https://doi.org/10.1007/978-3-030-64616-5_50 10.1007/978-3-030-64616-5_50]&lt;br /&gt;
&lt;br /&gt;
* Vatutin, Eduard, S. Kochemazov, O. Zaikin and S. Valyaev. [https://www.degruyterbrill.com/document/doi/10.1515/eng-2017-0052/html &#039;&#039;Using Volunteer Computing to Study Some Features of Diagonal Latin Squares.&#039;&#039;] Open Engineering, vol. 7, no. 1, 2017, pp. 453–460. DOI: [https://doi.org/10.1515/eng-2017-0052 10.1515/eng-2017-0052]&lt;br /&gt;
&lt;br /&gt;
* Anderson, David P. [https://arxiv.org/abs/1903.01699 &#039;&#039;BOINC: A Platform for Volunteer Computing.&#039;&#039;] arXiv:1903.01699 (2019). DOI: [https://doi.org/10.48550/ARXIV.1903.01699 10.48550/ARXIV.1903.01699]&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://parlea.ru/boinctest/ Parlea official website]&lt;br /&gt;
* [https://parlea.ru/boinctest/server_status.php Parlea server status]&lt;br /&gt;
* [https://rake.boincfast.ru/rakesearch/ RakeSearch project]&lt;br /&gt;
* [https://en.misis.ru/ NUST MISIS official website]&lt;br /&gt;
* [https://boinc.berkeley.edu/ BOINC platform (UC Berkeley)]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Mathematics]]&lt;br /&gt;
[[Category:Combinatorics]]&lt;br /&gt;
[[Category:Android (operating system) software]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Albert@Home&amp;diff=1499</id>
		<title>Albert@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Albert@Home&amp;diff=1499"/>
		<updated>2026-06-02T12:26:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: image exchange&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Albert@Home&lt;br /&gt;
| logo                 = Alberthome.png&lt;br /&gt;
| screenshot           = &lt;br /&gt;
| caption              = The Albert@Home project banner&lt;br /&gt;
&lt;br /&gt;
| status               = Completed&lt;br /&gt;
| category             = Testing&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Einstein@Home development team&lt;br /&gt;
| sponsor              = [[wikipedia:Max Planck Institute for Gravitational Physics|Max Planck Institute for Gravitational Physics (Albert Einstein Institute)]]&lt;br /&gt;
| released             = {{Start date and age|2011|11|15}}&lt;br /&gt;
| completed            = {{Start date and age|2024|09|25}}&lt;br /&gt;
&lt;br /&gt;
| programming language = C++, PHP, OpenCL, CUDA&lt;br /&gt;
| operating system     = Windows, macOS, Linux, Android, FreeBSD&lt;br /&gt;
&lt;br /&gt;
| website              = [https://albertathome.org albertathome.org]&lt;br /&gt;
| license              = [[wikipedia:GNU Lesser General Public License|LGPL-3.0-or-later]] (BOINC core components)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://albertathome.org &#039;&#039;&#039;&#039;&#039;Albert@Home&#039;&#039;&#039;&#039;&#039;] was a volunteer distributed computing project operating on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] (Berkeley Open Infrastructure for Network Computing) platform.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert@Home&lt;br /&gt;
 |url=https://albertathome.org/&lt;br /&gt;
 |website=Albert@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project functioned as the official public alpha-testing and development branch for [[wikipedia:Einstein@Home|Einstein@Home]], allowing developers to evaluate experimental scientific applications, client software, database transitions, and server-side configurations before deploying them into a live production environment.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Einstein@Home&lt;br /&gt;
 |url=https://einsteinathome.org/&lt;br /&gt;
 |website=Einstein@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Albert@Home was operated by researchers at the [[wikipedia:Max Planck Institute for Gravitational Physics|Max Planck Institute for Gravitational Physics (Albert Einstein Institute)]] in Hannover, Germany. The project officially launched its testing phase on November 15, 2011, and was permanently shut down on September 25, 2024.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert@Home shutdown announcement&lt;br /&gt;
 |url=https://albertathome.org/&lt;br /&gt;
 |website=Albert@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
Albert@Home was introduced on November 15, 2011, by the Einstein@Home development team as a dedicated public testing network for experimental BOINC applications and infrastructure changes.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert@Home project information&lt;br /&gt;
 |url=https://albertathome.org/&lt;br /&gt;
 |website=Albert@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because Einstein@Home processes large quantities of scientific data from gravitational-wave observatories and radio telescopes, developers used Albert@Home to validate new software before deploying it on the primary Einstein@Home infrastructure.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=About Einstein@Home&lt;br /&gt;
 |url=https://einsteinathome.org/content/about-us&lt;br /&gt;
 |website=Einstein@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initially, the project was used to stress-test OpenCL and CUDA applications across a wide variety of CPU and GPU configurations, including Binary Radio Pulsar (BRP) search applications.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Einstein@Home Applications&lt;br /&gt;
 |url=https://einsteinathome.org/content/applications&lt;br /&gt;
 |website=Einstein@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Throughout its operational lifetime, Albert@Home was also used to evaluate database migrations, scheduler behavior, credit calculations, and new BOINC server software revisions before they were introduced into production environments.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC server software&lt;br /&gt;
 |url=https://boinc.berkeley.edu/trac/wiki/ServerIntro&lt;br /&gt;
 |website=BOINC&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On September 25, 2024, project administrator Bernd Machenschalk announced the permanent suspension of Albert@Home. The project was retired after virtualization and local testing environments reduced the need for a publicly accessible alpha-testing platform.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert@Home&lt;br /&gt;
 |url=https://albertathome.org/&lt;br /&gt;
 |website=Albert@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
Albert@Home served as an isolated public testing environment for Einstein@Home and related BOINC infrastructure projects. The project allowed developers to safely identify software defects and hardware compatibility problems before rolling updates into production systems.&lt;br /&gt;
&lt;br /&gt;
Key functions of the project included:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Alpha testing&#039;&#039;&#039; of unstable experimental applications.&lt;br /&gt;
* &#039;&#039;&#039;Validation of new credit systems&#039;&#039;&#039; and runtime estimation algorithms.&lt;br /&gt;
* &#039;&#039;&#039;Testing database migrations&#039;&#039;&#039; and scheduler changes.&lt;br /&gt;
* &#039;&#039;&#039;Cross-platform verification&#039;&#039;&#039; across Windows, Linux, macOS, Android, and FreeBSD clients.&lt;br /&gt;
* &#039;&#039;&#039;GPU application testing&#039;&#039;&#039; using OpenCL and CUDA technologies.&lt;br /&gt;
&lt;br /&gt;
Unlike production scientific projects, Albert@Home primarily focused on software validation and infrastructure reliability rather than publishing independent scientific discoveries.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC&lt;br /&gt;
 |url=https://boinc.berkeley.edu/&lt;br /&gt;
 |website=University of California, Berkeley&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
[[File:BOINC logo.png|right|frameless|150x150px|The [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] logo.]]&lt;br /&gt;
Albert@Home used the standard BOINC client-server architecture. Volunteers downloaded work units through the BOINC client manager, processed them locally using unused CPU or GPU resources, and returned completed results to project servers for validation.&lt;br /&gt;
&lt;br /&gt;
Testing areas included:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Heterogeneous computing&#039;&#039;&#039; using different GPU architectures.&lt;br /&gt;
* &#039;&#039;&#039;Scheduler stress testing&#039;&#039;&#039; under heavy workloads.&lt;br /&gt;
* &#039;&#039;&#039;Database performance profiling&#039;&#039;&#039; and scalability analysis.&lt;br /&gt;
* &#039;&#039;&#039;Application benchmarking&#039;&#039;&#039; across different operating systems and hardware platforms.&lt;br /&gt;
* &#039;&#039;&#039;Client emulation&#039;&#039;&#039; to reproduce edge-case failures and network communication problems.&lt;br /&gt;
&lt;br /&gt;
The project frequently distributed intentionally experimental or unstable workloads to help developers locate rare compatibility problems that could not easily be reproduced in laboratory conditions.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC client software&lt;br /&gt;
 |url=https://boinc.berkeley.edu/download.php&lt;br /&gt;
 |website=BOINC&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relationship to Einstein@Home ==&lt;br /&gt;
[[File:Albert Einstein Head.jpg|thumb|right|250px|[[wikipedia:Albert Einstein|Albert Einstein]], namesake of the [[wikipedia:Albert Einstein Institute|Albert Einstein Institute]].]]Albert@Home operated as a direct pre-production mirror for [[wikipedia:Einstein@Home|Einstein@Home]]. Software and infrastructure changes were commonly tested on Albert@Home before deployment onto Einstein@Home production servers.&lt;br /&gt;
&lt;br /&gt;
Einstein@Home scientific applications analyze:&lt;br /&gt;
&lt;br /&gt;
* Data from the [[wikipedia:LIGO|LIGO]] and [[wikipedia:Virgo interferometer|Virgo]] gravitational-wave observatories.&lt;br /&gt;
* Radio pulsar survey data from the [[wikipedia:Arecibo Observatory|Arecibo Observatory]] and [[wikipedia:Parkes Observatory|Parkes Observatory]].&lt;br /&gt;
* Gamma-ray observations from the [[wikipedia:Fermi Gamma-ray Space Telescope|Fermi Gamma-ray Space Telescope]].&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Scientific results&lt;br /&gt;
 |url=https://einsteinathome.org/science&lt;br /&gt;
 |website=Einstein@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Experimental application builds were validated on Albert@Home before being distributed to the significantly larger Einstein@Home volunteer network.&lt;br /&gt;
&lt;br /&gt;
== Scientific and technical importance ==&lt;br /&gt;
Although Albert@Home itself did not publish independent scientific discoveries, its testing infrastructure contributed indirectly to the stability and performance of Einstein@Home scientific applications.&lt;br /&gt;
&lt;br /&gt;
Research supported through Einstein@Home computing infrastructure has included:&lt;br /&gt;
&lt;br /&gt;
* Searches for continuous gravitational waves from supernova remnants such as Cassiopeia A and Vela Jr.&amp;lt;ref&amp;gt;{{Cite journal&lt;br /&gt;
 |last1=Ming&lt;br /&gt;
 |first1=J.&lt;br /&gt;
 |last2=Papa&lt;br /&gt;
 |first2=M. A.&lt;br /&gt;
 |title=Deep Einstein@Home search for continuous gravitational waves from Cassiopeia A and Vela Jr.&lt;br /&gt;
 |journal=The Astrophysical Journal&lt;br /&gt;
 |year=2024&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Radio pulsar searches using data from the Arecibo PALFA survey.&amp;lt;ref&amp;gt;{{Cite journal&lt;br /&gt;
 |last1=Allen&lt;br /&gt;
 |first1=B.&lt;br /&gt;
 |title=The Einstein@Home search for radio pulsars in Arecibo PALFA Survey data&lt;br /&gt;
 |journal=The Astrophysical Journal&lt;br /&gt;
 |year=2013&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project also served as an example of large-scale volunteer computing quality assurance and distributed infrastructure testing within the BOINC ecosystem.&lt;br /&gt;
&lt;br /&gt;
== Project team and sponsors ==&lt;br /&gt;
[[File:LIGO Hanford aerial 05.jpg|thumb|300px|The [[wikipedia:LIGO|LIGO]] Hanford Observatory, part of the gravitational-wave research infrastructure supported by Einstein@Home.]]The project was operated by staff and researchers associated with the [[wikipedia:Max Planck Institute for Gravitational Physics|Max Planck Institute for Gravitational Physics (Albert Einstein Institute)]].&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert Einstein Institute&lt;br /&gt;
 |url=https://www.aei.mpg.de/&lt;br /&gt;
 |website=Max Planck Society&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional institutional support was provided by:&lt;br /&gt;
&lt;br /&gt;
* The Max Planck Society.&lt;br /&gt;
* [[wikipedia:University of Wisconsin–Milwaukee|The University of Wisconsin–Milwaukee]].&lt;br /&gt;
* The National Science Foundation (NSF).&lt;br /&gt;
&lt;br /&gt;
== Completion ==&lt;br /&gt;
On September 25, 2024, Albert@Home was permanently decommissioned. Public project services, including scheduler daemons, statistics exports, and discussion forums, were subsequently taken offline.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Albert@Home&lt;br /&gt;
 |url=https://albertathome.org/&lt;br /&gt;
 |website=Albert@Home&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project remains notable within the BOINC community as a long-running public beta-testing environment for distributed computing infrastructure.&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
During active operation, volunteers connected to the project through the BOINC client software using the following project URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://albertathome.org&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Participants frequently enabled advanced BOINC debugging flags such as &amp;lt;code&amp;gt;&amp;amp;lt;work_fetch_debug&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;app_version_debug&amp;amp;gt;&amp;lt;/code&amp;gt; inside the local &amp;lt;code&amp;gt;cc_config.xml&amp;lt;/code&amp;gt; configuration file to help developers diagnose scheduler and application issues.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[wikipedia:Einstein@Home|Einstein@Home]]&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Distributed computing|Distributed computing]]&lt;br /&gt;
* [[wikipedia:Max Planck Institute for Gravitational Physics|Max Planck Institute for Gravitational Physics]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://albertathome.org Official Albert@Home website]&lt;br /&gt;
* [https://einsteinathome.org Official Einstein@Home website]&lt;br /&gt;
* [https://boinc.berkeley.edu BOINC official website]&lt;br /&gt;
* [https://www.aei.mpg.de/ Max Planck Institute for Gravitational Physics]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1498</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1498"/>
		<updated>2026-06-02T12:07:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: mobile white space fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — mobile styles  (Minerva skin)&lt;br /&gt;
   MediaWiki:Mobile.css&lt;br /&gt;
   &lt;br /&gt;
   Common.css already loads on mobile, so this file only&lt;br /&gt;
   needs to handle:&lt;br /&gt;
     1. Minerva layout corrections&lt;br /&gt;
     2. Styles that Vector chrome selectors can&#039;t reach&lt;br /&gt;
   &lt;br /&gt;
   Dark mode: Minerva handles wiki/image boxes natively,&lt;br /&gt;
   so we don&#039;t repeat those overrides here.&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
/* @import already fires from common.css — no need to repeat */&lt;br /&gt;
&lt;br /&gt;
/* ── HERO — stack &amp;amp; tighten on narrow screens ───────── */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    padding: 1.25rem 1rem 1rem;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 1.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 0.95rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STATS RIBBON — single column on very small screens  */&lt;br /&gt;
@media (max-width: 400px) {&lt;br /&gt;
    .bs-stat {&lt;br /&gt;
        min-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STEPS — stack vertically ───────────────────────── */&lt;br /&gt;
.bs-step {&lt;br /&gt;
    min-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── PROJECT TABLE — single column ─────────────────── */&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 0.15rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — full-width on mobile ─────────────────── */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin: 0 0 1rem 0 !important;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Minerva wraps first section in .mf-section-0 before the infobox */&lt;br /&gt;
.mf-section-0 &amp;gt; p:empty,&lt;br /&gt;
.mf-section-0 &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mf-section-0 &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── DARK MODE — mobile (Minerva) ───────────────────── */&lt;br /&gt;
/*&lt;br /&gt;
   Minerva already darkens its own chrome and standard wiki&lt;br /&gt;
   constructs (image frames, thumbs, wikitables) in dark mode.&lt;br /&gt;
   &lt;br /&gt;
   We only need to patch our custom .bs-* components that&lt;br /&gt;
   Minerva has no knowledge of, and the infobox.&lt;br /&gt;
   &lt;br /&gt;
   Do NOT re-declare Vector chrome rules here (#mw-head,&lt;br /&gt;
   #mw-panel, etc.) — those IDs don&#039;t exist in Minerva.&lt;br /&gt;
*/&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* page shell — Minerva uses .mw-body, not #content */&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── bs-* components ──────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* hero */&lt;br /&gt;
    .bs-hero {&lt;br /&gt;
        background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* quote */&lt;br /&gt;
    .bs-quote {&lt;br /&gt;
        background: var(--bs-gray-50);&lt;br /&gt;
        border-left-color: var(--bs-gray-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* definition */&lt;br /&gt;
    .bs-definition {&lt;br /&gt;
        background: var(--bs-purple-50);&lt;br /&gt;
        border-left-color: var(--bs-purple-400);&lt;br /&gt;
        color: var(--bs-purple-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* CTA box */&lt;br /&gt;
    .bs-cta {&lt;br /&gt;
        background: var(--bs-page-bg);&lt;br /&gt;
        border-color: var(--bs-purple-400);&lt;br /&gt;
    }&lt;br /&gt;
    .bs-cta-title { color: var(--bs-purple-800); }&lt;br /&gt;
    .bs-cta-body  { color: var(--bs-text-muted);  }&lt;br /&gt;
&lt;br /&gt;
    /* stat cards */&lt;br /&gt;
    .bs-stat-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-stat-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-stat-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-stat-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* group cards */&lt;br /&gt;
    .bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
    .bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  }&lt;br /&gt;
    .bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  }&lt;br /&gt;
    .bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   }&lt;br /&gt;
    .bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* step cards */&lt;br /&gt;
    .bs-step-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-step-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-step-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* footer bar */&lt;br /&gt;
    .bs-footer-bar {&lt;br /&gt;
        border-top-color: var(--bs-gray-200);&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    /* Mirrors common.css dark mode block but scoped for Minerva.&lt;br /&gt;
       Repeating is intentional — Minerva and Vector load different&lt;br /&gt;
       base stylesheets, so the !important cascade differs. */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── TOC ────────────────────────────────────────── */&lt;br /&gt;
    /* Minerva renders its own TOC drawer; this patches the&lt;br /&gt;
       inline TOC if present (e.g. on desktop-redirected pages) */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1497</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1497"/>
		<updated>2026-06-02T12:05:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: mobile white space fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Use descendant selector (space, not &amp;gt;) so Minerva&#039;s&lt;br /&gt;
   .mf-section-0 wrapper doesn&#039;t break the match        */&lt;br /&gt;
.mw-parser-output p:empty,&lt;br /&gt;
.mw-parser-output p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Axiom_Distributed_AI&amp;diff=1496</id>
		<title>Axiom Distributed AI</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Axiom_Distributed_AI&amp;diff=1496"/>
		<updated>2026-06-02T11:46:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Axiom Distributed AI&lt;br /&gt;
| screenshot           = Axiom-logo.png&lt;br /&gt;
| caption              = Logo of the Axiom Distributed AI project&lt;br /&gt;
| status               = Inactive&lt;br /&gt;
| category             = Experimental&lt;br /&gt;
| compute              = CPU and GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
| developer            = PyHelix / Axiom Project Team&lt;br /&gt;
| released             = {{Start date and age|2026|01|23}}&lt;br /&gt;
| discontinued         = {{Start date and age|2026|03|21}}&lt;br /&gt;
| repository           = [https://github.com/PyHelix/boinc-Axiom github.com/PyHelix/boinc-Axiom]&lt;br /&gt;
| programming language = Python, C++&lt;br /&gt;
| operating system     = Windows, Linux&lt;br /&gt;
| stats as of          = {{Start date and age|2026|03|14}}&lt;br /&gt;
| average performance  = 5398.69 GigaFLOPS&lt;br /&gt;
| active users         = 65&lt;br /&gt;
| total users          = 94&lt;br /&gt;
| active hosts         = 219&lt;br /&gt;
| total hosts          = 159&lt;br /&gt;
| license              = Open Source&lt;br /&gt;
| website              = [https://web.archive.org/web/20260319085629/https://axiom.heliex.net/ Archived website]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Axiom Distributed AI&#039;&#039;&#039; was an experimental volunteer distributed computing project built on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Axiom Distributed AI (archived)&lt;br /&gt;
 |url=https://web.archive.org/web/20260319085629/https://axiom.heliex.net/&lt;br /&gt;
 |website=Internet Archive&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launched in January 2026, the project explored decentralized and biologically inspired approaches to artificial intelligence training using volunteer CPU and GPU resources contributed by participants worldwide.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=boinc-Axiom&lt;br /&gt;
 |url=https://github.com/PyHelix/boinc-Axiom&lt;br /&gt;
 |website=GitHub&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The platform experimented with distributed neural-network learning techniques influenced by [[wikipedia:Hebbian theory|Hebbian learning]], attempting to determine whether collaborative volunteer computing infrastructure could train predictive AI systems without relying exclusively on centralized datacenters.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Hebbian theory&lt;br /&gt;
 |url=https://en.wikipedia.org/wiki/Hebbian_theory&lt;br /&gt;
 |website=Wikipedia&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Community discussions and archived project materials indicate that Axiom Distributed AI functioned primarily as a short-lived proof-of-concept research experiment before operations concluded in March 2026.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC forum discussion on Axiom Distributed AI&lt;br /&gt;
 |url=https://boinc.berkeley.edu/forum_thread.php?id=15694&amp;amp;postid=118571&lt;br /&gt;
 |website=BOINC&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Official website: [https://web.archive.org/web/20260319085629/https://axiom.heliex.net/ Archived project website]&lt;br /&gt;
&lt;br /&gt;
Open-source development repository: [https://github.com/PyHelix/boinc-Axiom GitHub repository]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Unlike most modern artificial intelligence systems that depend on centralized datacenters and large GPU clusters, Axiom Distributed AI experimented with decentralized machine learning architectures inspired by biological neural adaptation.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s conceptual framework drew from &#039;&#039;&#039;Hebbian learning&#039;&#039;&#039;, commonly summarized as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;quot;Neurons that fire together wire together.&amp;quot;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the BOINC infrastructure, volunteers contributed spare CPU and NVIDIA GPU processing power to collaboratively train a distributed neural system across many independent computers.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC&lt;br /&gt;
 |url=https://boinc.berkeley.edu/&lt;br /&gt;
 |website=University of California, Berkeley&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project primarily served as an experimental proof-of-concept intended to explore whether distributed Hebbian-style learning could scale effectively within a volunteer computing environment.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
The primary objective of Axiom Distributed AI was to investigate whether decentralized learning systems could emerge from large-scale volunteer participation rather than centralized AI infrastructure.&lt;br /&gt;
&lt;br /&gt;
Research goals included:&lt;br /&gt;
&lt;br /&gt;
* Distributed neural-network training&lt;br /&gt;
* Decentralized artificial intelligence&lt;br /&gt;
* Correlation-based learning systems&lt;br /&gt;
* Emergent pattern recognition&lt;br /&gt;
* Collaborative AI infrastructure&lt;br /&gt;
* Alternative machine learning methodologies&lt;br /&gt;
&lt;br /&gt;
The project also explored whether community-driven AI systems could potentially reduce reliance on expensive centralized datacenters and specialized commercial hardware.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
Axiom Distributed AI trained experimental neural systems using the spare processing power of volunteer computers connected through BOINC.&lt;br /&gt;
&lt;br /&gt;
Instead of focusing on large language model (LLM) development, the platform concentrated on lower-level predictive learning techniques including:&lt;br /&gt;
&lt;br /&gt;
* Bit-level compression analysis&lt;br /&gt;
* Sequence prediction&lt;br /&gt;
* Correlation discovery within data streams&lt;br /&gt;
* Generalized pattern recognition&lt;br /&gt;
* Distributed learning aggregation&lt;br /&gt;
&lt;br /&gt;
=== Technical Concepts ===&lt;br /&gt;
==== Not a Large Language Model ====&lt;br /&gt;
The project was not designed as a conventional large language model. Instead, the system focused on predictive pattern learning at the bit-stream and correlation level.&lt;br /&gt;
&lt;br /&gt;
==== Distributed Learning ====&lt;br /&gt;
Training workloads were distributed globally through volunteer BOINC clients. Individual systems processed partial learning tasks that collectively contributed to the broader neural model.&lt;br /&gt;
&lt;br /&gt;
==== Correlation-Based Weighting ====&lt;br /&gt;
Project documentation suggested that useful data naturally produced stronger correlations with other contributors&#039; results, while random or noisy inputs contributed less significantly to the evolving model.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=boinc-Axiom&lt;br /&gt;
 |url=https://github.com/PyHelix/boinc-Axiom&lt;br /&gt;
 |website=GitHub&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Diversity and Generalization ====&lt;br /&gt;
The platform encouraged diverse input sources in an attempt to improve generalization capabilities across multiple forms of data, including text, source code, documents, and structured datasets.&lt;br /&gt;
&lt;br /&gt;
=== AI Principal Investigator Experiment ===&lt;br /&gt;
Early project descriptions indicated that Axiom experimented with partially automated workflows in which a large language model acted as a form of automated &amp;quot;Principal Investigator&amp;quot;.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Linus Tech Tips BOINC discussion&lt;br /&gt;
 |url=https://linustechtips.com/&lt;br /&gt;
 |website=Linus Tech Tips&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
According to community discussions, the system attempted to automate portions of experiment design, workload deployment, validation review, and BOINC credit allocation based on the quality of returned computational results.&lt;br /&gt;
&lt;br /&gt;
== Monitoring Learning Progress ==&lt;br /&gt;
The Axiom website provided live monitoring statistics throughout the project&#039;s operational period.&lt;br /&gt;
&lt;br /&gt;
One of the primary metrics tracked was:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;center&amp;gt;&#039;&#039;&#039;Bit loss&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A declining bit-loss trend was interpreted as evidence that the neural system was identifying meaningful predictive structures rather than memorizing random noise.&lt;br /&gt;
&lt;br /&gt;
Volunteers could monitor:&lt;br /&gt;
&lt;br /&gt;
* Learning progress&lt;br /&gt;
* Network participation statistics&lt;br /&gt;
* Workunit processing activity&lt;br /&gt;
* Validation metrics&lt;br /&gt;
* Host performance data&lt;br /&gt;
&lt;br /&gt;
== Contributing Data ==&lt;br /&gt;
Participants could optionally contribute local datasets to assist model training by placing files into designated ingestion directories on their local systems.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%USERPROFILE%\Axiom\contribute\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/boinc/Axiom/contribute/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Supported Contribution Types ===&lt;br /&gt;
Supported file categories reportedly included:&lt;br /&gt;
&lt;br /&gt;
* Documents&lt;br /&gt;
* Images&lt;br /&gt;
* Source code&lt;br /&gt;
* PDFs&lt;br /&gt;
* Logs&lt;br /&gt;
* Structured datasets&lt;br /&gt;
* Experimental data streams&lt;br /&gt;
&lt;br /&gt;
== Reception and conclusion ==&lt;br /&gt;
Axiom Distributed AI attracted attention within portions of the BOINC and technology communities due to its unconventional decentralized AI concepts.&lt;br /&gt;
&lt;br /&gt;
Discussion threads on the official BOINC forums questioned both the long-term scientific utility and practical scalability of the system.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC forum discussion on Axiom Distributed AI&lt;br /&gt;
 |url=https://boinc.berkeley.edu/forum_thread.php?id=15694&amp;amp;postid=118571&lt;br /&gt;
 |website=BOINC&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project was also discussed within community BOINC tracking threads on technology forums such as Linus Tech Tips.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=Linus Tech Tips BOINC discussion&lt;br /&gt;
 |url=https://linustechtips.com/&lt;br /&gt;
 |website=Linus Tech Tips&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No scientific publications associated with Axiom Distributed AI are currently listed within the BOINC Publications Database.&amp;lt;ref&amp;gt;{{Cite web&lt;br /&gt;
 |title=BOINC Publications&lt;br /&gt;
 |url=https://boinc.berkeley.edu/pubs.php&lt;br /&gt;
 |website=BOINC&lt;br /&gt;
 |access-date=2026-05-20&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By March 2026, active work generation and public infrastructure activity had ceased, leaving the project archived as a short-lived experimental volunteer AI initiative.&lt;br /&gt;
&lt;br /&gt;
== Open-source development ==&lt;br /&gt;
Axiom Distributed AI was developed as open-source software. Source code and development repositories remain available on GitHub.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/PyHelix/boinc-Axiom boinc-Axiom GitHub repository]&lt;br /&gt;
&lt;br /&gt;
== Project team ==&lt;br /&gt;
The project was associated with:&lt;br /&gt;
&lt;br /&gt;
* PyHelix&lt;br /&gt;
* Axiom Project Team&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Distributed computing|Distributed computing]]&lt;br /&gt;
* [[wikipedia:Artificial intelligence|Artificial intelligence]]&lt;br /&gt;
* [[wikipedia:Machine learning|Machine learning]]&lt;br /&gt;
* [[wikipedia:Hebbian theory|Hebbian learning]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://web.archive.org/web/20260319085629/https://axiom.heliex.net/ Archived Axiom Distributed AI website]&lt;br /&gt;
* [https://github.com/PyHelix/boinc-Axiom GitHub repository]&lt;br /&gt;
* [https://boinc.berkeley.edu/ BOINC official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1495</id>
		<title>MediaWiki:Mobile.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Mobile.css&amp;diff=1495"/>
		<updated>2026-06-02T11:43:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: first light&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — mobile styles  (Minerva skin)&lt;br /&gt;
   MediaWiki:Mobile.css&lt;br /&gt;
   &lt;br /&gt;
   Common.css already loads on mobile, so this file only&lt;br /&gt;
   needs to handle:&lt;br /&gt;
     1. Minerva layout corrections&lt;br /&gt;
     2. Styles that Vector chrome selectors can&#039;t reach&lt;br /&gt;
   &lt;br /&gt;
   Dark mode: Minerva handles wiki/image boxes natively,&lt;br /&gt;
   so we don&#039;t repeat those overrides here.&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
/* @import already fires from common.css — no need to repeat */&lt;br /&gt;
&lt;br /&gt;
/* ── HERO — stack &amp;amp; tighten on narrow screens ───────── */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    padding: 1.25rem 1rem 1rem;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 1.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 0.95rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STATS RIBBON — single column on very small screens  */&lt;br /&gt;
@media (max-width: 400px) {&lt;br /&gt;
    .bs-stat {&lt;br /&gt;
        min-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── STEPS — stack vertically ───────────────────────── */&lt;br /&gt;
.bs-step {&lt;br /&gt;
    min-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── PROJECT TABLE — single column ─────────────────── */&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    padding: 0.15rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — full-width on mobile ─────────────────── */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    float: none !important;&lt;br /&gt;
    margin: 0 0 1rem 0 !important;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── DARK MODE — mobile (Minerva) ───────────────────── */&lt;br /&gt;
/*&lt;br /&gt;
   Minerva already darkens its own chrome and standard wiki&lt;br /&gt;
   constructs (image frames, thumbs, wikitables) in dark mode.&lt;br /&gt;
   &lt;br /&gt;
   We only need to patch our custom .bs-* components that&lt;br /&gt;
   Minerva has no knowledge of, and the infobox.&lt;br /&gt;
   &lt;br /&gt;
   Do NOT re-declare Vector chrome rules here (#mw-head,&lt;br /&gt;
   #mw-panel, etc.) — those IDs don&#039;t exist in Minerva.&lt;br /&gt;
*/&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* page shell — Minerva uses .mw-body, not #content */&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── bs-* components ──────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* hero */&lt;br /&gt;
    .bs-hero {&lt;br /&gt;
        background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* quote */&lt;br /&gt;
    .bs-quote {&lt;br /&gt;
        background: var(--bs-gray-50);&lt;br /&gt;
        border-left-color: var(--bs-gray-200);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* definition */&lt;br /&gt;
    .bs-definition {&lt;br /&gt;
        background: var(--bs-purple-50);&lt;br /&gt;
        border-left-color: var(--bs-purple-400);&lt;br /&gt;
        color: var(--bs-purple-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* CTA box */&lt;br /&gt;
    .bs-cta {&lt;br /&gt;
        background: var(--bs-page-bg);&lt;br /&gt;
        border-color: var(--bs-purple-400);&lt;br /&gt;
    }&lt;br /&gt;
    .bs-cta-title { color: var(--bs-purple-800); }&lt;br /&gt;
    .bs-cta-body  { color: var(--bs-text-muted);  }&lt;br /&gt;
&lt;br /&gt;
    /* stat cards */&lt;br /&gt;
    .bs-stat-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-stat-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-stat-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-stat-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* group cards */&lt;br /&gt;
    .bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
    .bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  }&lt;br /&gt;
    .bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  }&lt;br /&gt;
    .bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  }&lt;br /&gt;
    .bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   }&lt;br /&gt;
    .bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* step cards */&lt;br /&gt;
    .bs-step-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); }&lt;br /&gt;
    .bs-step-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   }&lt;br /&gt;
    .bs-step-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   }&lt;br /&gt;
&lt;br /&gt;
    /* footer bar */&lt;br /&gt;
    .bs-footer-bar {&lt;br /&gt;
        border-top-color: var(--bs-gray-200);&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    /* Mirrors common.css dark mode block but scoped for Minerva.&lt;br /&gt;
       Repeating is intentional — Minerva and Vector load different&lt;br /&gt;
       base stylesheets, so the !important cascade differs. */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── TOC ────────────────────────────────────────── */&lt;br /&gt;
    /* Minerva renders its own TOC drawer; this patches the&lt;br /&gt;
       inline TOC if present (e.g. on desktop-redirected pages) */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1494</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1494"/>
		<updated>2026-06-02T11:42:32Z</updated>

		<summary type="html">&lt;p&gt;Admin: update INFOBOX — suppress phantom leading paragraphs to include mobile view&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* Broad selector covers both Vector (#mw-content-text) and Minerva (.mw-body-content) */&lt;br /&gt;
.mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
.mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output &amp;gt; br:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=NumberFields@Home&amp;diff=1473</id>
		<title>NumberFields@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=NumberFields@Home&amp;diff=1473"/>
		<updated>2026-05-30T11:35:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: update and infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = NumberFields@Home&lt;br /&gt;
| logo                 = NumberFields logo.png&lt;br /&gt;
| logo caption         = NumberFields@Home logo&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics / Algebraic Number Theory&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Eric D. Driver&lt;br /&gt;
| author               = Eric D. Driver&lt;br /&gt;
| sponsor              = Arizona State University School of Mathematics&lt;br /&gt;
| maintainer           = Eric D. Driver, Greg Tucker&lt;br /&gt;
| released             = August 2011&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++ (PARI/GP, GMP)&lt;br /&gt;
| operating system     = Windows, Linux, macOS (x86)&lt;br /&gt;
&lt;br /&gt;
| stats as of          = May 2026&lt;br /&gt;
| average performance  = ~47,566 GigaFLOPS&lt;br /&gt;
| website              = {{URL|https://numberfields.asu.edu/NumberFields/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
BOINC project [https://numberfields.asu.edu/NumberFields/ &#039;&#039;&#039;&#039;&#039;NumberFields@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer distributed computing]]&#039;&#039;&#039;&#039;&#039; project that needs your help to search for fields with special properties.&lt;br /&gt;
&lt;br /&gt;
[[Image:Algebraicszoom.png|right|thumb|300px|A visualisation of the [[wikipedia:Algebraic_number|algebraic numbers]] in the [[wikipedia:Complex_plane|complex plane]]. Number fields are algebraic extensions of the rationals whose elements lie among these points.]]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Fields are important mathematical constructs with far-reaching applications across many branches of mathematics. Most people are familiar with everyday examples such as the field of [[wikipedia:Rational_number|rational numbers]] &amp;lt;math&amp;gt;\mathbb{Q}&amp;lt;/math&amp;gt;, the [[wikipedia:Real_number|real numbers]] &amp;lt;math&amp;gt;\mathbb{R}&amp;lt;/math&amp;gt;, and the [[wikipedia:Complex_number|complex numbers]] &amp;lt;math&amp;gt;\mathbb{C}&amp;lt;/math&amp;gt;. The fields studied by NumberFields@Home are &#039;&#039;&#039;[[wikipedia:Algebraic_number_field|number fields]]&#039;&#039;&#039;: algebraic extension fields of the rationals of finite degree. More precisely, a number field is a subset of &amp;lt;math&amp;gt;\mathbb{C}&amp;lt;/math&amp;gt; which contains the root &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; of a given polynomial and is minimal while remaining closed under addition, subtraction, multiplication, and division (excepting division by zero).{{cite web |title=What is NumberFields@home? |url=https://numberfields.asu.edu/NumberFields/ |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
Formally, every number field &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; of degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; over &amp;lt;math&amp;gt;\mathbb{Q}&amp;lt;/math&amp;gt; may be written as&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;K = \mathbb{Q}(\alpha)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is a root of some irreducible polynomial of degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; with rational coefficients.{{cite web |title=Algebraic number field |url=https://en.wikipedia.org/wiki/Algebraic_number_field |publisher=Wikipedia |access-date=2026-05-29}} The project is principally interested in &#039;&#039;&#039;imprimitive degree-10 fields&#039;&#039;&#039; (called &#039;&#039;&#039;decic fields&#039;&#039;&#039;), which correspond to certain degree-10 polynomials. An imprimitive field is one that contains a proper intermediate subfield strictly between &amp;lt;math&amp;gt;\mathbb{Q}&amp;lt;/math&amp;gt; and itself, as opposed to primitive fields whose Galois closure has an irreducible Galois group.&lt;br /&gt;
&lt;br /&gt;
Number theorists can mine tabulated data for patterns to help formulate conjectures about number fields, leading to a deeper understanding of the properties of numbers, the basic building blocks of all mathematics. Among the practical applications are [[wikipedia:Cryptography|&#039;&#039;&#039;&#039;&#039;cryptography&#039;&#039;&#039;&#039;&#039;]], where number fields underpin sophisticated factoring algorithms and novel cryptosystems, and theoretical physics including [[wikipedia:Quantum_mechanics|&#039;&#039;&#039;&#039;&#039;quantum mechanics&#039;&#039;&#039;&#039;&#039;]] and [[wikipedia:String_theory|&#039;&#039;&#039;&#039;&#039;string theory&#039;&#039;&#039;&#039;&#039;]].{{cite web |title=NumberFields@home project description |url=https://numberfields.asu.edu/NumberFields/ProjectDescription.html |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
The project was founded by &#039;&#039;&#039;Eric D. Driver&#039;&#039;&#039;, a researcher associated with the [https://math.asu.edu/ School of Mathematics] at &#039;&#039;&#039;[[wikipedia:Arizona_State_University|Arizona State University]]&#039;&#039;&#039; (ASU). Driver recognised that computing lower-degree number fields requires comparatively modest resources and that such fields had already been extensively tabulated, but the degree-10 case was the first case demanding a massively parallel computational solution. After reading an [https://www.linux-magazine.com/Issues/2006/71/BOINC/ article in &#039;&#039;Linux Magazine&#039;&#039;] about BOINC and knowing the mathematics department had access to a suitable workstation, he launched NumberFields@Home to meet the computational demand.{{cite web |title=NumberFields@home -- Methods |url=https://numberfields.asu.edu/NumberFields/ProjectDescription.html |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
The project went online in &#039;&#039;&#039;August 2011&#039;&#039;&#039;. In an early forum post, Driver noted that the project had been under construction and work-generation processes still needed automation -- yet the response from the distributed computing community was enthusiastic enough to quickly exhaust the initial work queue.{{cite web |title=NumberFields@home still under construction |url=https://numberfields.asu.edu/NumberFields/forum_thread.php?id=1 |publisher=numberfields.asu.edu |date=8 August 2011 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
A significant milestone arrived in &#039;&#039;&#039;May 2016&#039;&#039;&#039;, when the primary &amp;quot;bounded&amp;quot; application completed its multi-year search and found all imprimitive degree-10 fields with absolute discriminant less than or equal to &amp;lt;math&amp;gt;1.2 \times 10^{11}&amp;lt;/math&amp;gt;. In &#039;&#039;&#039;July 2016&#039;&#039;&#039;, a focused special search located a particularly elusive hypothesised field: an &amp;lt;math&amp;gt;A_5&amp;lt;/math&amp;gt; extension of &amp;lt;math&amp;gt;\mathbb{Q}(\sqrt{421})&amp;lt;/math&amp;gt; ramified only at 2, after roughly ten months of intermittent searching.{{cite web |title=2016 year in review |url=https://numberfields.asu.edu/NumberFields/forum_thread.php?id=310 |publisher=numberfields.asu.edu |date=14 January 2017 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;August 2022&#039;&#039;&#039;, Driver shared news that his doctoral thesis advisor -- the project&#039;s primary institutional benefactor at ASU -- had retired. While the university permitted the project to continue running, it would no longer fund hardware upgrades, meaning the project&#039;s lifespan is now tied to the longevity of the existing server hardware.{{cite web |title=Future of the Project |url=https://numberfields.asu.edu/NumberFields/forum_thread.php?id=520 |publisher=numberfields.asu.edu |date=10 August 2022 |access-date=2026-05-29}} As of 2026, NumberFields@Home remains active, collaborating with the &#039;&#039;&#039;[[wikipedia:BOINC|BOINC]]&#039;&#039;&#039;-based [https://gerasim.boinc.ru/ Gerasim@Home] project to cross-check and complete certain sub-searches.{{cite web |title=2025 Year End Summary |url=https://numberfields.asu.edu/NumberFields |publisher=numberfields.asu.edu |date=1 January 2026 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== Why NumberFields@Home? ==&lt;br /&gt;
&lt;br /&gt;
Fields are important mathematical constructs that have far-reaching applications to many branches of mathematics. Many people are familiar with the fields of rational numbers, real numbers, and complex numbers. The fields we are concerned with in this project are number fields: subsets of the complex numbers which contain the root of a given polynomial and are minimal for then being closed under addition, subtraction, multiplication, and division (except for division by 0). In particular, we are interested in imprimitive degree 10 fields (called decic fields), which correspond to certain degree 10 polynomials.&lt;br /&gt;
&lt;br /&gt;
Number theorists can mine the data for interesting patterns to help them formulate conjectures about number fields. Ultimately, this research will lead to a deeper understanding of the properties of numbers, the basic building blocks of all mathematics. Another application of number fields is in [[wikipedia:Cryptography|&#039;&#039;&#039;&#039;&#039;cryptography&#039;&#039;&#039;&#039;&#039;]], where they are used in sophisticated factoring algorithms and as the basis for new cryptosystems. There are also distant applications to mathematical physics, including [[wikipedia:Quantum_mechanics|&#039;&#039;&#039;&#039;&#039;quantum mechanics&#039;&#039;&#039;&#039;&#039;]] and [[wikipedia:String_theory|&#039;&#039;&#039;&#039;&#039;string theory&#039;&#039;&#039;&#039;&#039;]].&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
One way to categorise fields is by the primes that &#039;&#039;ramify&#039;&#039; in them. For a given set of primes, the number of fields ramified at those primes is finite (a classical theorem of [[wikipedia:Charles_Hermite|Hermite]]). The primary goal of the project is to find this finite set of fields for various sets of primes. Since the number of combinations of primes is unlimited, the project will remain open-ended for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
Another way to categorise fields is by their &#039;&#039;&#039;[[wikipedia:Discriminant_of_an_algebraic_number_field|discriminant]]&#039;&#039;&#039;, which is an important invariant. Given a fixed bound &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, there are only finitely many fields whose absolute discriminant does not exceed &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;. A secondary goal of the project is to determine the finite set of &amp;quot;minimum discriminant&amp;quot; imprimitive decic fields for the bound&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;B = 1.2 \times 10^{11}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This bound was chosen for its potential to find more fields while keeping the computational load manageable.{{cite web |title=NumberFields@home project description |url=https://numberfields.asu.edu/NumberFields/ProjectDescription.html |publisher=Arizona State University |access-date=2026-05-29}} That search was completed in May 2016.{{cite web |title=2016 year in review |url=https://numberfields.asu.edu/NumberFields/forum_thread.php?id=310 |publisher=numberfields.asu.edu |date=14 January 2017 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Polynomialdeg3.png|right|thumb|250px|The graph of a degree-3 polynomial. NumberFields@Home searches over polynomials of degree 10 whose roots generate number fields with prescribed properties.]]&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Computing lower-degree fields requires less processing power and such fields have been more extensively tabulated; the degree-10 case is the first case requiring a massively parallel solution. Finite extension fields are represented by polynomials -- that is, they are of the form &amp;lt;math&amp;gt;\mathbb{Q}(\alpha)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is the root of a polynomial. Bounds on the field discriminant give rise to bounds on the polynomial coefficients, so there are a finite number of possible polynomials that can represent the fields being searched for.&lt;br /&gt;
&lt;br /&gt;
At the most basic level, the NumberFields@Home algorithm searches over this finite set of polynomials, checking whether or not a given polynomial can represent a field with the desired discriminant and ramification properties. At a finer level, the algorithm uses theoretical arguments to reduce the polynomial search space. In addition, the targeted ramification structure gives rise to congruence relations on the polynomial coefficients, which further reduces the search space. Anybody interested in the finer details of the algorithm is encouraged to look through [https://numberfields.asu.edu/NumberFields/Dissertation.pdf Eric D. Driver&#039;s doctoral dissertation].{{cite web |title=Eric D. Driver&#039;s dissertation |url=https://numberfields.asu.edu/NumberFields/Dissertation.pdf |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Software stack ===&lt;br /&gt;
&lt;br /&gt;
The application relies on two key open-source libraries:{{cite web |title=GPU app status update |url=https://tsbt.co.uk/forum/viewtopic.php?t=12560 |publisher=The Scottish BOINC Team |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[wikipedia:PARI/GP|PARI/GP]]&#039;&#039;&#039; -- a computer algebra system widely used in number theory, providing polynomial arithmetic and discriminant computations.&lt;br /&gt;
* &#039;&#039;&#039;[[wikipedia:GNU_Multiple_Precision_Arithmetic_Library|GMP]]&#039;&#039;&#039; (GNU Multiple Precision Arithmetic Library) -- multi-precision integer arithmetic, necessary because the integers involved can exceed standard 64-bit representation.&lt;br /&gt;
&lt;br /&gt;
A significant technical challenge arose during GPU application development: both PARI/GP and GMP rely on dynamically allocated memory, which is incompatible with GPU kernels. Driver solved this by using a fixed-precision multi-precision library with precision hard-coded to the maximum required (approximately 750 bits), allowing compilation of a working GPU kernel.{{cite web |title=GPU app status update (The Scottish BOINC Team) |url=https://tsbt.co.uk/forum/viewtopic.php?t=12560 |publisher=tsbt.co.uk |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Application versions ===&lt;br /&gt;
&lt;br /&gt;
The project currently distributes its &#039;&#039;&#039;Get Decic Fields&#039;&#039;&#039; application in multiple variants targeting different hardware:{{cite web |title=NumberFields@home Applications |url=https://numberfields.asu.edu/NumberFields/apps.php |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform !! Variant !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || Default (CPU) v4.00 || ~20,622 GigaFLOPS average&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || OpenCL AMD || GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || OpenCL NVIDIA || GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || Default (CPU) v4.00 || ~8,860 GigaFLOPS average&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || CUDA || NVIDIA GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || OpenCL AMD || AMD GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| macOS (Intel) || Default (CPU) v3.00 || ~887 GigaFLOPS average&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The GPU application is reported to be roughly 20 to 30 times faster than the older CPU version, and 2 to 3 times faster than a newer optimised CPU version released alongside the GPU work.{{cite web |title=GPU app status update |url=https://tsbt.co.uk/forum/viewtopic.php?t=12560 |publisher=The Scottish BOINC Team |access-date=2026-05-29}} The combined average computing across all platforms is approximately &#039;&#039;&#039;47,566 GigaFLOPS&#039;&#039;&#039;.{{cite web |title=NumberFields@home Applications |url=https://numberfields.asu.edu/NumberFields/apps.php |publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Results database ===&lt;br /&gt;
&lt;br /&gt;
The results of NumberFields@Home contribute to an online searchable number field database maintained jointly by John W. Jones and David P. Roberts at ASU. Tabulated results are also integrated into the &#039;&#039;&#039;[[wikipedia:L-functions_and_Modular_Forms_Database|LMFDB]]&#039;&#039;&#039; (L-functions and Modular Forms Database).{{cite web |title=NumberFields@home |url=https://numberfields.asu.edu/NumberFields/ |publisher=Arizona State University |access-date=2026-05-29}}{{cite journal |last1=Jones |first1=John W. |last2=Roberts |first2=David P. |title=A database of number fields |journal=LMS Journal of Computation and Mathematics |year=2014 |volume=17 |pages=595--618 |doi=10.1112/S1461157014000424}}&lt;br /&gt;
&lt;br /&gt;
== Research areas ==&lt;br /&gt;
&lt;br /&gt;
The project as a whole is basic research -- in effect, charting unknown mathematical territory. The following sections describe the broader research contexts to which the tabulated data contributes.&lt;br /&gt;
&lt;br /&gt;
==== Automorphic Forms ====&lt;br /&gt;
&lt;br /&gt;
Number fields are related to [[wikipedia:Automorphic_form|&#039;&#039;&#039;&#039;&#039;automorphic forms&#039;&#039;&#039;&#039;&#039;]], which form one side of the &#039;&#039;&#039;[[wikipedia:Langlands_program|Langlands program]]&#039;&#039;&#039; -- a vast web of conjectures connecting number theory and representation theory. &#039;&#039;&#039;[https://www.quantamagazine.org/what-is-the-langlands-program-20220601/ Explanations for the Langlands program]&#039;&#039;&#039;. (&#039;&#039;&#039;[https://youtu.be/_bJeKUosqoY See video: The Biggest Project in Modern Mathematics]&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
[[Image:Dedekind Eta.jpg|none|thumb|500px|The [[wikipedia:Dedekind_eta_function|&#039;&#039;&#039;&#039;&#039;Dedekind eta-function&#039;&#039;&#039;&#039;&#039;]] is an automorphic form in the complex plane.]]&lt;br /&gt;
&lt;br /&gt;
There are deep connections between automorphic forms and number fields: knowing an automorphic form gives information about the ramifying primes of the corresponding number fields.&lt;br /&gt;
&lt;br /&gt;
==== Cryptography ====&lt;br /&gt;
&lt;br /&gt;
Number fields are used in some modern factoring algorithms relevant to attacks on [[wikipedia:RSA_(cryptosystem)|RSA]]. Other researchers have investigated using properties of number fields as the basis for new cryptosystems. It is not clear which number fields will prove most useful in this research, but the more we know about the general landscape of number fields, the better.&lt;br /&gt;
&lt;br /&gt;
==== Arithmetic Statistics ====&lt;br /&gt;
&lt;br /&gt;
There has been both progress and new conjectures in recent years on asymptotic questions about number fields. If one fixes the degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; and a bound &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, there are finitely many degree-&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; number fields with absolute discriminant at most &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;. One can then ask how this count grows as a function of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Researchers have also been factoring the [[wikipedia:Galois_group|Galois group]] of the extension into consideration. At present, there is very little data in degree 10, and imprimitive fields produce a large number of different Galois groups.&lt;br /&gt;
&lt;br /&gt;
One can also ask about asymptotics based on the set of ramifying primes. There is even less data currently available for investigating questions of this sort. Before one can seriously consider asymptotics, it is useful to know where the first examples lie. NumberFields@Home has helped establish the first known examples of imprimitive decic number fields with certain Galois groups. One can also consider &amp;quot;first examples&amp;quot; from the perspective of the &#039;&#039;&#039;Galois root discriminant (GRD)&#039;&#039;&#039; of the field. Some [http://hobbes.la.asu.edu/lowgrd/ results for low GRD fields can be found here].&lt;br /&gt;
&lt;br /&gt;
==== Theoretical Physics ====&lt;br /&gt;
&lt;br /&gt;
The fields studied by this project have connections to the [[wikipedia:P-adic_number|p-adic fields]]. In recent years, p-adic analysis has been applied to problems in theoretical physics, including quantum mechanics and string theory. [[wikipedia:P-adic_quantum_mechanics|Here is a good introduction]] to the relevant concepts. It is too early to tell exactly how beneficial the tables of fields will be to the physics community.&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eric D. Driver&#039;&#039;&#039; -- Project founder, administrator, developer, and scientist. [https://math.asu.edu/ School of Mathematics] at Arizona State University.&lt;br /&gt;
* &#039;&#039;&#039;Greg Tucker&#039;&#039;&#039; -- assists Driver with the project and its applications.{{cite web |title=NumberFields@home user profiles |url=https://numberfields.asu.edu/NumberFields/user_profile/profile_country_United_States_1.html |publisher=numberfields.asu.edu |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
The project is based at and was sponsored by the ASU School of Mathematics. Following the retirement of Driver&#039;s thesis advisor in May 2022, the primary institutional sponsorship ended, though ASU has permitted the project to continue on existing hardware.{{cite web |title=Future of the Project |url=https://numberfields.asu.edu/NumberFields/forum_thread.php?id=520 |publisher=numberfields.asu.edu |date=10 August 2022 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
&lt;br /&gt;
* Complete tables of imprimitive decic number fields with absolute discriminant &amp;lt;math&amp;gt;\le 1.2 \times 10^{11}&amp;lt;/math&amp;gt; (completed May 2016).&lt;br /&gt;
* First known examples of imprimitive decic fields for numerous Galois group types.&lt;br /&gt;
* Tables of low Galois root discriminant (GRD) imprimitive decic fields: [http://hobbes.la.asu.edu/lowgrd/ results for low GRD fields].&lt;br /&gt;
* Full results in table form: &#039;&#039;&#039;&#039;&#039;https://numberfields.asu.edu/NumberFields/FieldTables/FieldTables.html&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Searchable database integration with the LMFDB: [http://www.lmfdb.org/NumberField/ www.lmfdb.org/NumberField/]&lt;br /&gt;
&lt;br /&gt;
== Scientific publications ==&lt;br /&gt;
&lt;br /&gt;
# Driver, Eric D. and John W. Jones. [https://linkinghub.elsevier.com/retrieve/pii/S0022314X19300988 &#039;&#039;&#039;&#039;&#039;Computing septic number fields&#039;&#039;&#039;&#039;&#039;]. &#039;&#039;Journal of Number Theory&#039;&#039; (2019). DOI: 10.1016/j.jnt.2019.02.022.&lt;br /&gt;
# Driver, Eric D. and John W. Jones. [http://www.tandfonline.com/doi/abs/10.1080/10586458.2010.10390637 &#039;&#039;&#039;&#039;&#039;Minimum Discriminants of Imprimitive Decic Fields&#039;&#039;&#039;&#039;&#039;]. &#039;&#039;Experimental Mathematics&#039;&#039; (2010). DOI: 10.1080/10586458.2010.10390637.&lt;br /&gt;
# Driver, Eric D. and John W. Jones. [https://ui.adsabs.harvard.edu/abs/2009MaCom..78.1109D &#039;&#039;&#039;&#039;&#039;A targeted Martinet search&#039;&#039;&#039;&#039;&#039;]. &#039;&#039;Mathematics of Computation&#039;&#039; (2009). DOI: 10.1090/S0025-5718-08-02178-9.&lt;br /&gt;
# Jones, John W. and David P. Roberts. [https://doi.org/10.1112/S1461157014000424 &#039;&#039;&#039;&#039;&#039;A database of number fields&#039;&#039;&#039;&#039;&#039;]. &#039;&#039;LMS Journal of Computation and Mathematics&#039;&#039; 17 (2014), pp. 595--618. DOI: 10.1112/S1461157014000424.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Berkeley_Open_Infrastructure_for_Network_Computing|Berkeley Open Infrastructure for Network Computing (BOINC)]]&lt;br /&gt;
* [[wikipedia:Algebraic_number_field|Algebraic number field]]&lt;br /&gt;
* [[wikipedia:Discriminant_of_an_algebraic_number_field|Discriminant of an algebraic number field]]&lt;br /&gt;
* [[wikipedia:Langlands_program|Langlands program]]&lt;br /&gt;
* [[wikipedia:Volunteer_computing|Volunteer computing]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [https://numberfields.asu.edu/NumberFields/ NumberFields@Home official website]&lt;br /&gt;
* [http://hobbes.la.asu.edu/NFDB/ ASU Number Fields Database]&lt;br /&gt;
* [http://www.lmfdb.org/NumberField/ LMFDB Number Fields search]&lt;br /&gt;
* [https://numberfields.asu.edu/NumberFields/Dissertation.pdf Eric D. Driver&#039;s doctoral dissertation (PDF)]&lt;br /&gt;
* [http://hobbes.la.asu.edu/lowgrd/ Low Galois root discriminant results]&lt;br /&gt;
* [https://pari.math.u-bordeaux.fr/Events/PARI2016/talks/NumberFields_PARIworkshop.pdf Eric D. Driver -- A Number Fields Database (PARI workshop slides, 2016)]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=NumberFields@Home&amp;diff=1471</id>
		<title>NumberFields@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=NumberFields@Home&amp;diff=1471"/>
		<updated>2026-05-30T11:21:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = NumberFields@home&lt;br /&gt;
| logo                 = Nf.jpg&lt;br /&gt;
| logo caption         = NumberFields@home logo&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics / Algebraic Number Theory&lt;br /&gt;
| compute              = CPU &amp;amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Eric D. Driver&lt;br /&gt;
| author               = Eric D. Driver&lt;br /&gt;
| sponsor              = Arizona State University School of Mathematics&lt;br /&gt;
| maintainer           = Eric D. Driver, Greg Tucker&lt;br /&gt;
| released             = August 2011&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++ (PARI/GP, GMP)&lt;br /&gt;
| operating system     = Windows, Linux, macOS (x86)&lt;br /&gt;
&lt;br /&gt;
| stats as of          = May 2026&lt;br /&gt;
| average performance  = ~47,566 GigaFLOPS&lt;br /&gt;
| website              = numberfields.asu.edu/NumberFields/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
BOINC project &#039;&#039;&#039;&#039;&#039;[https://numberfields.asu.edu/NumberFields/ NumberFields@home]&#039;&#039;&#039;&#039;&#039; is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer distributed computing]]&#039;&#039;&#039;&#039;&#039; project that needs your help to search for fields with special properties.&lt;br /&gt;
&lt;br /&gt;
[[Image:Algebraicszoom.png|right|thumb|300px|A visualisation of the [[wikipedia:Algebraic_number|algebraic numbers]] in the [[wikipedia:Complex_plane|complex plane]]. Number fields are algebraic extensions of the rationals whose elements lie among these points.]]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Fields are important mathematical constructs with far-reaching applications across many branches of mathematics. Most people are familiar with everyday examples such as the field of [[wikipedia:Rational_number|rational numbers]] &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt;, the [[wikipedia:Real_number|real numbers]] &amp;lt;math&amp;gt;\mathbf{R}&amp;lt;/math&amp;gt;, and the [[wikipedia:Complex_number|complex numbers]] &amp;lt;math&amp;gt;\mathbf{C}&amp;lt;/math&amp;gt;. The fields studied by NumberFields@home are &#039;&#039;&#039;[[wikipedia:Algebraic_number_field|number fields]]&#039;&#039;&#039;: algebraic extension fields of the rationals of finite degree. More precisely, a number field is a subset of &amp;lt;math&amp;gt;\mathbf{C}&amp;lt;/math&amp;gt; which contains the root &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; of a given polynomial and is minimal while remaining closed under addition, subtraction, multiplication, and division (excepting division by zero).{{cite web |title=What is NumberFields@home?|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
Formally, every number field &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; of degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; over &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; may be written as&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K = \mathbf{Q}(\alpha)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is a root of some irreducible polynomial of degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; with rational coefficients.{{cite web |title=Algebraic number field|publisher=Wikipedia |access-date=2026-05-29}} The project is principally interested in &#039;&#039;&#039;imprimitive degree-10 fields&#039;&#039;&#039; (called &#039;&#039;&#039;decic fields&#039;&#039;&#039;), which correspond to certain degree-10 polynomials. An imprimitive field is one that contains a proper intermediate subfield strictly between &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; and itself, as opposed to primitive fields whose Galois closure has an irreducible Galois group.&lt;br /&gt;
&lt;br /&gt;
Number theorists can mine tabulated data for patterns to help formulate conjectures about number fields, leading to a deeper understanding of the properties of numbers, the basic building blocks of all mathematics. Among the practical applications are [[wikipedia:Cryptography|&#039;&#039;&#039;&#039;&#039;cryptography&#039;&#039;&#039;&#039;&#039;]], where number fields underpin sophisticated factoring algorithms and novel cryptosystems, and theoretical physics including [[wikipedia:Quantum_mechanics|&#039;&#039;&#039;&#039;&#039;quantum mechanics&#039;&#039;&#039;&#039;&#039;]] and [[wikipedia:String_theory|&#039;&#039;&#039;&#039;&#039;string theory&#039;&#039;&#039;&#039;&#039;]].{{cite web |title=NumberFields@home project description|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
The project was founded by &#039;&#039;&#039;Eric D. Driver&#039;&#039;&#039;, a researcher associated with the School of Mathematics at &#039;&#039;&#039;[[wikipedia:Arizona_State_University|Arizona State University]]&#039;&#039;&#039; (ASU). Driver recognised that computing lower-degree number fields requires comparatively modest resources and that such fields had already been extensively tabulated, but the degree-10 case was the first case demanding a massively parallel computational solution. After reading an article in &#039;&#039;Linux Magazine&#039;&#039; about BOINC and knowing the mathematics department had access to a suitable workstation, he launched NumberFields@home to meet the computational demand.{{cite web |title=NumberFields@home - Methods|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
The project went online in &#039;&#039;&#039;August 2011&#039;&#039;&#039;. In an early forum post, Driver noted that the project had been under construction and work-generation processes still needed automation - yet the response from the distributed computing community was enthusiastic enough to quickly exhaust the initial work queue.{{cite web |title=NumberFields@home still under construction|publisher=numberfields.asu.edu |date=8 August 2011 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
A significant milestone arrived in &#039;&#039;&#039;May 2016&#039;&#039;&#039;, when the primary &#039;&#039;bounded&#039;&#039; application completed its multi-year search and found all imprimitive degree-10 fields with absolute discriminant less than or equal to &amp;lt;math&amp;gt;1.2 \times 10^{11}&amp;lt;/math&amp;gt;. In &#039;&#039;&#039;July 2016&#039;&#039;&#039;, a focused special search located a particularly elusive hypothesised field: an &amp;lt;math&amp;gt;A_5&amp;lt;/math&amp;gt; extension of &amp;lt;math&amp;gt;\mathbf{Q}(\sqrt{421})&amp;lt;/math&amp;gt; ramified only at 2, after roughly ten months of intermittent searching.{{cite web |title=2016 year in review|publisher=numberfields.asu.edu |date=14 January 2017 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;August 2022&#039;&#039;&#039;, Driver shared news that his doctoral thesis advisor - the project&#039;s primary institutional benefactor at ASU - had retired. While the university permitted the project to continue running, it would no longer fund hardware upgrades, meaning the project&#039;s lifespan is now tied to the longevity of the existing server hardware.{{cite web |title=Future of the Project|publisher=numberfields.asu.edu |date=10 August 2022 |access-date=2026-05-29}} As of 2026, NumberFields@home remains active, collaborating with the &#039;&#039;&#039;[[wikipedia:BOINC|BOINC]]&#039;&#039;&#039;-based Gerasim@Home project to cross-check and complete certain sub-searches.{{cite web |title=2025 Year End Summary|publisher=numberfields.asu.edu |date=1 January 2026 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== Why NumberFields@home? ==&lt;br /&gt;
&lt;br /&gt;
Fields are important mathematical constructs that have far-reaching applications to many branches of mathematics. Many people are familiar with the fields of rational numbers, real numbers, and complex numbers. The fields we are concerned with in this project are number fields: subsets of the complex numbers which contain the root of a given polynomial and are minimal for then being closed under addition, subtraction, multiplication, and division (except for division by 0). In particular, we are interested in imprimitive degree 10 fields (called decic fields), which correspond to certain degree 10 polynomials.&lt;br /&gt;
&lt;br /&gt;
Number theorists can mine the data for interesting patterns to help them formulate conjectures about number fields. Ultimately, this research will lead to a deeper understanding of the properties of numbers, the basic building blocks of all mathematics. Another application of number fields is in [[wikipedia:Cryptography|&#039;&#039;&#039;&#039;&#039;cryptography&#039;&#039;&#039;&#039;&#039;]], where they are used in sophisticated factoring algorithms and as the basis for new cryptosystems. There are also distant applications to mathematical physics, including [[wikipedia:Quantum_mechanics|&#039;&#039;&#039;&#039;&#039;quantum mechanics&#039;&#039;&#039;&#039;&#039;]] and [[wikipedia:String_theory|&#039;&#039;&#039;&#039;&#039;string theory&#039;&#039;&#039;&#039;&#039;]].&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
One way to categorise fields is by the primes that &#039;&#039;ramify&#039;&#039; in them. For a given set of primes, the number of fields ramified at those primes is finite (a classical theorem of [[wikipedia:Charles_Hermite|Hermite]]). The primary goal of the project is to find this finite set of fields for various sets of primes. Since the number of combinations of primes is unlimited, the project will remain open-ended for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
Another way to categorise fields is by their &#039;&#039;&#039;[[wikipedia:Discriminant_of_an_algebraic_number_field|discriminant]]&#039;&#039;&#039;, which is an important invariant. Given a fixed bound &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, there are only finitely many fields whose absolute discriminant does not exceed &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;. A secondary goal of the project is to determine the finite set of &#039;&#039;minimum discriminant&#039;&#039; imprimitive decic fields for the bound&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B = 1.2 \times 10^{11}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This bound was chosen for its potential to find more fields while keeping the computational load manageable.{{cite web |title=NumberFields@home project description|publisher=Arizona State University |access-date=2026-05-29}} That search was completed in May 2016.{{cite web |title=2016 year in review|publisher=numberfields.asu.edu |date=14 January 2017 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Polynomialdeg3.png|right|thumb|250px|The graph of a degree-3 polynomial. NumberFields@Home searches over polynomials of degree 10 whose roots generate number fields with prescribed properties.]]&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Computing lower-degree fields requires less processing power and such fields have been more extensively tabulated; the degree-10 case is the first case requiring a massively parallel solution. Finite extension fields are represented by polynomials - that is, they are of the form &amp;lt;math&amp;gt;\mathbf{Q}(\alpha)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is the root of a polynomial. Bounds on the field discriminant give rise to bounds on the polynomial coefficients, so there are a finite number of possible polynomials that can represent the fields being searched for.&lt;br /&gt;
&lt;br /&gt;
At the most basic level, the NumberFields@home algorithm searches over this finite set of polynomials, checking whether or not a given polynomial can represent a field with the desired discriminant and ramification properties. At a finer level, the algorithm uses theoretical arguments to reduce the polynomial search space. In addition, the targeted ramification structure gives rise to congruence relations on the polynomial coefficients, which further reduces the search space. Anybody interested in the finer details of the algorithm is encouraged to look through [numberfields.asu.edu/NumberFields/Dissertation.pdf Eric D. Driver&#039;s doctoral dissertation].{{cite web |title=Eric D. Driver&#039;s dissertation|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Software stack ===&lt;br /&gt;
&lt;br /&gt;
The application relies on two key open-source libraries:{{cite web |title=GPU app status update|publisher=The Scottish BOINC Team |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[wikipedia:PARI/GP|PARI/GP]]&#039;&#039;&#039; - a computer algebra system widely used in number theory, providing polynomial arithmetic and discriminant computations.&lt;br /&gt;
* &#039;&#039;&#039;[[wikipedia:GNU_Multiple_Precision_Arithmetic_Library|GMP]]&#039;&#039;&#039; (GNU Multiple Precision Arithmetic Library) - multi-precision integer arithmetic, necessary because the integers involved can exceed standard 64-bit representation.&lt;br /&gt;
&lt;br /&gt;
A significant technical challenge arose during GPU application development: both PARI/GP and GMP rely on dynamically allocated memory, which is incompatible with GPU kernels. Driver solved this by using a fixed-precision multi-precision library with precision hard-coded to the maximum required (approximately 750 bits), allowing compilation of a working GPU kernel.{{cite web |title=GPU app status update (The Scottish BOINC Team)|publisher=tsbt.co.uk |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Application versions ===&lt;br /&gt;
&lt;br /&gt;
The project currently distributes its &#039;&#039;&#039;Get Decic Fields&#039;&#039;&#039; application in multiple variants targeting different hardware:{{cite web |title=NumberFields@home Applications|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform !! Variant !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || Default (CPU) v4.00 || ~20,622 GigaFLOPS average&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || OpenCL AMD || GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || OpenCL NVIDIA || GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || Default (CPU) v4.00 || ~8,860 GigaFLOPS average&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || CUDA || NVIDIA GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || OpenCL AMD || AMD GPU variant&lt;br /&gt;
|-&lt;br /&gt;
| macOS (Intel) || Default (CPU) v3.00 || ~887 GigaFLOPS average&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The GPU application is reported to be roughly 20 to 30 times faster than the older CPU version, and 2 to 3 times faster than a newer optimised CPU version released alongside the GPU work.{{cite web |title=GPU app status update|publisher=The Scottish BOINC Team |access-date=2026-05-29}} The combined average computing across all platforms is approximately &#039;&#039;&#039;47,566 GigaFLOPS&#039;&#039;&#039;.{{cite web |title=NumberFields@home Applications|publisher=Arizona State University |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
=== Results database ===&lt;br /&gt;
&lt;br /&gt;
The results of NumberFields@home contribute to an online searchable number field database maintained jointly by John W. Jones and David P. Roberts at ASU. Tabulated results are also integrated into the &#039;&#039;&#039;[[wikipedia:L-functions_and_Modular_Forms_Database|LMFDB]]&#039;&#039;&#039; (L-functions and Modular Forms Database).{{cite web |title=NumberFields@home|publisher=Arizona State University |access-date=2026-05-29}}{{cite journal |last1=Jones |first1=John W. |last2=Roberts |first2=David P. |title=A database of number fields |journal=LMS Journal of Computation and Mathematics |year=2014 |volume=17 |pages=595-618 |doi=10.1112/S1461157014000424}}&lt;br /&gt;
&lt;br /&gt;
== Research areas ==&lt;br /&gt;
&lt;br /&gt;
The project as a whole is basic research - in effect, charting unknown mathematical territory. The following sections describe the broader research contexts to which the tabulated data contributes.&lt;br /&gt;
&lt;br /&gt;
==== Automorphic Forms ====&lt;br /&gt;
&lt;br /&gt;
Number fields are related to [[wikipedia:Automorphic_form|&#039;&#039;&#039;&#039;&#039;automorphic forms&#039;&#039;&#039;&#039;&#039;]], which form one side of the &#039;&#039;&#039;[[wikipedia:Langlands_program|Langlands program]]&#039;&#039;&#039; - a vast web of conjectures connecting number theory and representation theory. &#039;&#039;&#039;Explanations for the Langlands program&#039;&#039;&#039;. (&#039;&#039;&#039;See video: The Biggest Project in Modern Mathematics&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
[[Image:Dedekind Eta.jpg|none|thumb|500px|The [[wikipedia:Dedekind_eta_function|&#039;&#039;&#039;&#039;&#039;Dedekind eta-function&#039;&#039;&#039;&#039;&#039;]] is an automorphic form in the complex plane.]]&lt;br /&gt;
&lt;br /&gt;
There are deep connections between automorphic forms and number fields: knowing an automorphic form gives information about the ramifying primes of the corresponding number fields.&lt;br /&gt;
&lt;br /&gt;
==== Cryptography ====&lt;br /&gt;
&lt;br /&gt;
Number fields are used in some modern factoring algorithms relevant to attacks on [[wikipedia:RSA_(cryptosystem)|RSA]]. Other researchers have investigated using properties of number fields as the basis for new cryptosystems. It is not clear which number fields will prove most useful in this research, but the more we know about the general landscape of number fields, the better.&lt;br /&gt;
&lt;br /&gt;
==== Arithmetic Statistics ====&lt;br /&gt;
&lt;br /&gt;
There has been both progress and new conjectures in recent years on asymptotic questions about number fields. If one fixes the degree &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; and a bound &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;, there are finitely many degree-&#039;&#039;n&#039;&#039; number fields with absolute discriminant at most &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;. One can then ask how this count grows as a function of &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Researchers have also been factoring the [[wikipedia:Galois_group|Galois group]] of the extension into consideration. At present, there is very little data in degree 10, and imprimitive fields produce a large number of different Galois groups.&lt;br /&gt;
&lt;br /&gt;
One can also ask about asymptotics based on the set of ramifying primes. There is even less data currently available for investigating questions of this sort. Before one can seriously consider asymptotics, it is useful to know where the first examples lie. NumberFields@home has helped establish the first known examples of imprimitive decic number fields with certain Galois groups. One can also consider &#039;&#039;first examples&#039;&#039; from the perspective of the &#039;&#039;&#039;Galois root discriminant (GRD)&#039;&#039;&#039; of the field. Some results for low GRD fields can be found here.&lt;br /&gt;
&lt;br /&gt;
==== Theoretical Physics ====&lt;br /&gt;
&lt;br /&gt;
The fields studied by this project have connections to the [[wikipedia:P-adic_number|p-adic fields]]. In recent years, p-adic analysis has been applied to problems in theoretical physics, including quantum mechanics and string theory. [[wikipedia:P-adic_quantum_mechanics|Here is a good introduction]] to the relevant concepts. It is too early to tell exactly how beneficial the tables of fields will be to the physics community.&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Eric D. Driver&#039;&#039;&#039; - Project founder, administrator, developer, and scientist. School of Mathematics at Arizona State University.&lt;br /&gt;
* &#039;&#039;&#039;Greg Tucker&#039;&#039;&#039; - assists Driver with the project and its applications.{{cite web |title=NumberFields@home user profiles|publisher=numberfields.asu.edu |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
The project is based at and was sponsored by the ASU School of Mathematics. Following the retirement of Driver&#039;s thesis advisor in May 2022, the primary institutional sponsorship ended, though ASU has permitted the project to continue on existing hardware.{{cite web |title=Future of the Project|publisher=numberfields.asu.edu |date=10 August 2022 |access-date=2026-05-29}}&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
&lt;br /&gt;
* Complete tables of imprimitive decic number fields with absolute discriminant &amp;lt;math&amp;gt;\leq 1.2 \times 10^{11}&amp;lt;/math&amp;gt; (completed May 2016).&lt;br /&gt;
* First known examples of imprimitive decic fields for numerous Galois group types.&lt;br /&gt;
* Tables of low Galois root discriminant (GRD) imprimitive decic fields: results for low GRD fields.&lt;br /&gt;
* Full results in table form: numberfields.asu.edu/NumberFields/FieldTables/FieldTables.html&lt;br /&gt;
* Searchable database integration with the LMFDB: www.lmfdb.org/NumberField/&lt;br /&gt;
&lt;br /&gt;
== Scientific publications ==&lt;br /&gt;
&lt;br /&gt;
# Driver, Eric D. and John W. Jones. &#039;&#039;&#039;&#039;&#039;Computing septic number fields&#039;&#039;&#039;&#039;&#039;. &#039;&#039;Journal of Number Theory&#039;&#039; (2019). DOI: 10.1016/j.jnt.2019.02.022.&lt;br /&gt;
# Driver, Eric D. and John W. Jones. &#039;&#039;&#039;&#039;&#039;Minimum Discriminants of Imprimitive Decic Fields&#039;&#039;&#039;&#039;&#039;. &#039;&#039;Experimental Mathematics&#039;&#039; (2010). DOI: 10.1080/10586458.2010.10390637.&lt;br /&gt;
# Driver, Eric D. and John W. Jones. &#039;&#039;&#039;&#039;&#039;A targeted Martinet search&#039;&#039;&#039;&#039;&#039;. &#039;&#039;Mathematics of Computation&#039;&#039; (2009). DOI: 10.1090/S0025-5718-08-02178-9.&lt;br /&gt;
# Jones, John W. and David P. Roberts. &#039;&#039;&#039;&#039;&#039;A database of number fields&#039;&#039;&#039;&#039;&#039;. &#039;&#039;LMS Journal of Computation and Mathematics&#039;&#039; 17 (2014), pp. 595-618. DOI: 10.1112/S1461157014000424.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Berkeley_Open_Infrastructure_for_Network_Computing|Berkeley Open Infrastructure for Network Computing (BOINC)]]&lt;br /&gt;
* [[wikipedia:Algebraic_number_field|Algebraic number field]]&lt;br /&gt;
* [[wikipedia:Discriminant_of_an_algebraic_number_field|Discriminant of an algebraic number field]]&lt;br /&gt;
* [[wikipedia:Langlands_program|Langlands program]]&lt;br /&gt;
* [[wikipedia:Volunteer_computing|Volunteer computing]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* NumberFields@home official website: numberfields.asu.edu/NumberFields/&lt;br /&gt;
* ASU Number Fields Database&lt;br /&gt;
* LMFDB Number Fields search&lt;br /&gt;
* Eric D. Driver&#039;s doctoral dissertation (PDF): numberfields.asu.edu/NumberFields/Dissertation.pdf&lt;br /&gt;
* Low Galois root discriminant results&lt;br /&gt;
* Eric D. Driver - A Number Fields Database (PARI workshop slides, 2016)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=ODLK&amp;diff=1456</id>
		<title>ODLK</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=ODLK&amp;diff=1456"/>
		<updated>2026-05-29T17:25:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = ODLK&lt;br /&gt;
| logo                 = Default water.jpg&lt;br /&gt;
| screenshot           = &lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics / Combinatorics&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
&lt;br /&gt;
| developer            = Progger&lt;br /&gt;
| author               = Natalia Makarova, Progger&lt;br /&gt;
| released             = {{Start date and age|2017|05|19}}&lt;br /&gt;
| repository           = &lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 22 May 2026&lt;br /&gt;
| active users         = 347&lt;br /&gt;
| total users          = 2750&lt;br /&gt;
| active hosts         = 1759&lt;br /&gt;
| total hosts          = 28018&lt;br /&gt;
&lt;br /&gt;
| rac                  = &lt;br /&gt;
| average performance  = 3885.86 GigaFLOPS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://boinc.progger.info/odlk/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://boinc.progger.info/odlk/ &#039;&#039;&#039;&#039;&#039;ODLK&#039;&#039;&#039;&#039;&#039;] is a BOINC based &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project that needs your help to research 10th order diagonal Latin squares.&lt;br /&gt;
== Why ODLK? ==&lt;br /&gt;
Continue the work of the scientific BOINC project SAT@home, in which new orthogonal pairs of 10th order DLKs were searched.&lt;br /&gt;
&lt;br /&gt;
The history of searching for orthogonal pairs of diagonal Latin squares (DLS) of order 10 stretches back decades. The first three orthogonal pairs were found in 1992 and published in the landmark paper &amp;quot;Completion of the Spectrum of Orthogonal Diagonal Latin Squares&amp;quot; by J. W. Brown et al.&amp;lt;ref&amp;gt;J. W. Brown, F. Cherry, L. Most, E. Parker, W. Wallis, &#039;&#039;Completion of the Spectrum of Orthogonal Diagonal Latin Squares&#039;&#039;, Lecture Notes in Pure and Applied Mathematics, vol. 139, pp. 43–49 (1992/1993).&amp;lt;/ref&amp;gt; The problem then lay largely dormant until the advent of volunteer computing gave researchers the raw computational power to search more thoroughly.&lt;br /&gt;
&lt;br /&gt;
Between 2012 and 2016, the scientific BOINC project &#039;&#039;&#039;SAT@home&#039;&#039;&#039; took up the challenge, reducing the search for orthogonal pairs to instances of the Boolean satisfiability problem (SAT) and distributing the work across volunteer computers worldwide. During a 10-month computational experiment alone, SAT@home discovered 29 previously unknown orthogonal pairs.&amp;lt;ref&amp;gt;O. S. Zaikin, S. E. Kochemazov, &#039;&#039;The Search for Systems of Diagonal Latin Squares Using the SAT@home Project&#039;&#039;, International Journal of Open Information Technologies, 2015. [http://injoit.org/index.php/j1/article/view/239]&amp;lt;/ref&amp;gt; By the time the project concluded, it had unearthed 77 unique orthogonal pairs of order-10 DLS, yielding 154 unique canonical forms (CF) of ODLS.&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/ ODLK project home page]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With SAT@home finished, the baton passed to ODLK. Launched on &#039;&#039;&#039;19 May 2017&#039;&#039;&#039; by mathematician Natalia Makarova and developer Progger, ODLK took a new approach: rather than merely finding more pairs, it set out to compile a complete database of all canonical forms of order-10 diagonal Latin squares that possess at least one orthogonal mate. The project celebrated its seventh anniversary on 19 May 2024.&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/ ODLK news, May 2024]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
This project compiles a database of canonical forms (CF) of 10th order diagonal Latin squares (DLS) having orthogonal diagonal [[wikipedia:Latin_square|Latin squares]] (ODLS).&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;[[wikipedia:Latin_square|Latin square]]&#039;&#039;&#039; of order &#039;&#039;n&#039;&#039; is an &#039;&#039;n&#039;&#039;×&#039;&#039;n&#039;&#039; array filled with &#039;&#039;n&#039;&#039; different symbols, each occurring exactly once in each row and exactly once in each column. A &#039;&#039;&#039;diagonal Latin square&#039;&#039;&#039; (DLS) additionally requires that both the main diagonal and the back diagonal of the square each contain every symbol exactly once — making it a far more constrained structure. Two DLS are &#039;&#039;&#039;orthogonal&#039;&#039;&#039; (ODLS) if, when superimposed, every possible ordered pair of symbols appears exactly once across all &#039;&#039;n&#039;&#039;² cells.&lt;br /&gt;
&lt;br /&gt;
The name &amp;quot;Latin square&amp;quot; itself was inspired by the mathematical papers of Leonhard Euler (1707–1783), who used Latin characters as symbols when he initiated the general theory of Latin squares in the 18th century.&amp;lt;ref&amp;gt;[[wikipedia:Latin_square|Latin square — Wikipedia]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finding DLS of order 10 that have any orthogonal partner at all is a computationally intensive problem. The goal of ODLK is therefore not just to find individual solutions, but to produce a &#039;&#039;&#039;complete, enumerated canonical database&#039;&#039;&#039; so that mathematicians worldwide can study the structural properties of these objects — symmetries, transversal counts, clique sizes, and more.&lt;br /&gt;
&lt;br /&gt;
== Background: Latin squares and their orthogonal pairs ==&lt;br /&gt;
[[File:Ramanujan magic square construction.svg|alt=example mediawiki image|thumb|&amp;lt;small&amp;gt;Construction of &#039;&#039;[[wikipedia:Magic_square|&#039;&#039;&#039;Ramanujan&#039;s birthday magic square&#039;&#039;&#039;]]&#039;&#039; from a 4×4 Latin square with distinct diagonals and day (D), month (M), century (C) and year (Y) values, and Ramanujan&#039;s birthday example&amp;lt;/small&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
In [[wikipedia:combinatorics|combinatorics]] and experimental design, Latin squares have been studied since Euler&#039;s time. They are closely related to [[wikipedia:Magic square|magic squares]], [[wikipedia:Sudoku|Sudoku]] puzzles, error-correcting codes, and the design of statistical experiments. A particularly important open question for much of the 20th century was the &amp;quot;36 officers problem&amp;quot; posed by Euler: do orthogonal Latin squares of order 6 exist? The answer (no) was not proven until 1901. Euler&#039;s broader conjecture — that orthogonal pairs fail to exist for orders &#039;&#039;n&#039;&#039; ≡ 2 (mod 4) — was spectacularly refuted in 1960 when Bose, Shrikhande, and Parker demonstrated that orthogonal pairs exist for all orders &#039;&#039;n&#039;&#039; ≥ 3 except &#039;&#039;n&#039;&#039; = 2 and &#039;&#039;n&#039;&#039; = 6.&amp;lt;ref&amp;gt;[[wikipedia:Mutually_orthogonal_Latin_squares|Mutually orthogonal Latin squares — Wikipedia]]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;diagonal&#039;&#039;&#039; Latin squares the landscape is more restrictive. It has been proven that ODLS(&#039;&#039;n&#039;&#039;) exist for all &#039;&#039;n&#039;&#039; except 2, 3, 6, 10, 14, 15, 18, and 26 — with ODLS(10) being the most computationally challenging case for which solutions exist, and where ODLK does its work.&amp;lt;ref&amp;gt;B. Du, &#039;&#039;Orthogonal Diagonal Latin Squares of Order 14&#039;&#039;, cited at [[wikipedia:Mutually_orthogonal_Latin_squares|Wikipedia]].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
The construction and enumeration of orthogonal diagonal Latin squares has applications in:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Experimental design&#039;&#039;&#039;: Latin squares underpin balanced experimental layouts in agriculture, medicine, and engineering. Diagonal constraints yield designs with additional balance properties along diagonals.&lt;br /&gt;
* &#039;&#039;&#039;Coding theory&#039;&#039;&#039;: ODLS constructions relate to classes of error-correcting codes and are connected to the theory of finite projective planes.&lt;br /&gt;
* &#039;&#039;&#039;Combinatorial mathematics&#039;&#039;&#039;: The database of canonical forms allows researchers to study the spectrum of diagonal transversals, symmetry classes, and clique structure among ODLS — properties that bear on longstanding open problems in combinatorics.&lt;br /&gt;
* &#039;&#039;&#039;Algorithm benchmarking&#039;&#039;&#039;: Searching for ODLS of order 10 provides a natural, difficult benchmark for SAT solvers and other combinatorial search methods.&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
Natalia Makarova, Progger&lt;br /&gt;
&lt;br /&gt;
The project was conceived and launched by &#039;&#039;&#039;Natalia Makarova&#039;&#039;&#039;, a Russian mathematician who has been active in Latin square research and the Russian-language volunteer computing community (including the boinc.ru forums) for many years. The technical infrastructure is maintained by &#039;&#039;&#039;Progger&#039;&#039;&#039;, who hosts the project server at &amp;lt;code&amp;gt;boinc.progger.info&amp;lt;/code&amp;gt;. The related spin-off project [[ODLK1]] also credits &#039;&#039;&#039;Stefano Tognon (ice00)&#039;&#039;&#039; as a contributor.&amp;lt;ref&amp;gt;[https://boincsynergy.ca/wiki/ODLK1/ ODLK1 — BOINC Synergy wiki]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applications and work units ==&lt;br /&gt;
&lt;br /&gt;
The ODLK server runs three distinct computing applications simultaneously, each tackling a different aspect of the search:&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/server_status.php ODLK server status, 22 May 2026]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Application !! Description !! Avg. runtime (hours)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;odlk3@home&#039;&#039;&#039; || Main brute-force search for new CF ODLK || 0.31 (range 0.01–13.12)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;odlkmin@home&#039;&#039;&#039; || Search optimised for finding DLS with minimum orthogonal mates || 0.31 (range 0.01–13.46)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;odlkmax@home&#039;&#039;&#039; || Search optimised for finding DLS with maximum orthogonal mates || 0.30 (range 0.01–13.16)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Work units are generated server-side and sent to volunteer computers running BOINC. Results are validated by majority consensus before being assimilated into the database.&lt;br /&gt;
&lt;br /&gt;
== How to participate ==&lt;br /&gt;
&lt;br /&gt;
# Download and install the &#039;&#039;&#039;[[wikipedia:BOINC|BOINC]]&#039;&#039;&#039; client from [https://boinc.berkeley.edu/ boinc.berkeley.edu].&lt;br /&gt;
# Create a free account at [https://boinc.progger.info/odlk/signup.php the ODLK project website].&lt;br /&gt;
# In the BOINC client, add the project URL: &amp;lt;code&amp;gt;https://boinc.progger.info/odlk/&amp;lt;/code&amp;gt;&lt;br /&gt;
# BOINC will automatically download work units and return results when complete.&lt;br /&gt;
&lt;br /&gt;
The project currently supports &#039;&#039;&#039;Windows&#039;&#039;&#039; and &#039;&#039;&#039;Linux&#039;&#039;&#039;. Tasks run on standard CPU hardware; no GPU is required.&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;[https://boinc.progger.info/odlk/forum_thread.php?id=213 Complete database of the CF ODLC BOINC-project ODLC for 2017-2021]&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By January 2022, the project had produced a complete canonical-form database for the period 2017–2021, published by Natalia Makarova on the project forum. The database contained &#039;&#039;&#039;3,078,504 canonical forms of ODLK&#039;&#039;&#039; of order 10 (plus a supplementary 6,370 CF found in earlier symmetry-search sub-applications, bringing the full total to over 3,084,874 CF).&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/forum_thread.php?id=213 ODLK forum, &amp;quot;Complete database of CF ODLK for 2017–2021&amp;quot;, January 2022]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Among the highlights of the 2017–2021 database analysis, carried out by volunteer contributor Demis using software by Alexey Belyshev:&lt;br /&gt;
&lt;br /&gt;
* The database was organised across &#039;&#039;&#039;67 &amp;quot;rows&amp;quot;&#039;&#039;&#039; (classes of DLS), with the largest row (Row 65) containing 327,753 CF.&lt;br /&gt;
* &#039;&#039;&#039;17 triplets&#039;&#039;&#039; of mutually orthogonal DLS were identified — meaning a single DLS has at least two distinct orthogonal mates — as well as &#039;&#039;&#039;2 quadruplets&#039;&#039;&#039; (a DLS with at least three distinct orthogonal mates).&lt;br /&gt;
* &#039;&#039;&#039;5,806 doublets&#039;&#039;&#039; (DLS with exactly two orthogonal mates in the database) were found.&lt;br /&gt;
* Analysis of diagonal transversals across all 3,078,504 CF revealed only &#039;&#039;&#039;97 distinct values&#039;&#039;&#039;, ranging from 68 to 165.&lt;br /&gt;
* One especially remarkable quadruplet DLS was found to have &#039;&#039;&#039;866 diagonal transversals&#039;&#039;&#039; — the highest known count for a DLS of order 10 — and exhibits multiple rare symmetry types.&lt;br /&gt;
&lt;br /&gt;
The 2017–2021 database is available for download from Yandex Disk (47 MB archive).&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/forum_thread.php?id=213 ODLK forum thread 213]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related projects ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SAT@home&#039;&#039;&#039; (2012–2016) — the predecessor project that found the first 77 unique orthogonal pairs of order-10 DLS using SAT-solving techniques. Run by the Institute for System Analysis of the Russian Academy of Sciences.&amp;lt;ref&amp;gt;O. S. Zaikin, S. E. Kochemazov, &#039;&#039;SAT-based Search for Systems of Diagonal Latin Squares in Volunteer Computing Project SAT@home&#039;&#039;, IEEE FRUCT Conference, 2016. [https://ieeexplore.ieee.org/document/7522152/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;[[ODLK1]]&#039;&#039;&#039; — a parallel BOINC project hosted at &amp;lt;code&amp;gt;boinc.multi-pool.info/latinsquares&amp;lt;/code&amp;gt;, run by the same scientific team with technical support from Stefano Tognon (ice00). ODLK1 continues to expand the database beyond what ODLK alone covers.&lt;br /&gt;
* &#039;&#039;&#039;Gerasim@home&#039;&#039;&#039; — a related Russian volunteer computing project that studied transversal properties of diagonal Latin squares of small order (up to order 8).&lt;br /&gt;
* &#039;&#039;&#039;ODLK2025&#039;&#039;&#039; — a newer project by Natalia Makarova launched in January 2025, continuing the line of ODLK research.&amp;lt;ref&amp;gt;[https://boinc.berkeley.edu/forum_thread.php?id=15423 BOINC forum: New project ODLK2025, January 2025]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific papers ==&lt;br /&gt;
&lt;br /&gt;
The following peer-reviewed and conference papers are directly associated with the research program underpinning ODLK:&lt;br /&gt;
&lt;br /&gt;
* E. I. Vatutin, S. E. Kochemazov, O. S. Zaikin, S. Yu. Valyaev, &amp;quot;Using Volunteer Computing to Study Some Features of Diagonal Latin Squares,&amp;quot; &#039;&#039;Open Engineering&#039;&#039;, vol. 7, no. 1, pp. 453–460, 2017. {{doi|10.1515/eng-2017-0052}}&amp;lt;ref&amp;gt;[https://www.degruyterbrill.com/document/doi/10.1515/eng-2017-0052/html De Gruyter: Using Volunteer Computing to Study Some Features of Diagonal Latin Squares]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* E. I. Vatutin, S. E. Kochemazov, O. S. Zaikin, S. Yu. Valyaev, &amp;quot;Enumerating the Transversals for Diagonal Latin Squares of Small Order,&amp;quot; &#039;&#039;CEUR Workshop Proceedings&#039;&#039;, BOINC:FAST 2017, vol. 1973, pp. 6–14, 2017.&lt;br /&gt;
&lt;br /&gt;
* O. S. Zaikin, S. E. Kochemazov, &amp;quot;The Search for Systems of Diagonal Latin Squares Using the SAT@home Project,&amp;quot; &#039;&#039;International Journal of Open Information Technologies&#039;&#039;, 2015.&amp;lt;ref&amp;gt;[http://injoit.org/index.php/j1/article/view/239 INJOIT: The Search for Systems of Diagonal Latin Squares Using the SAT@home Project]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* O. Zaikin, A. Zhuravlev, S. Kochemazov, E. Vatutin, &amp;quot;On the Construction of Triples of Diagonal Latin Squares of Order 10,&amp;quot; &#039;&#039;Electronic Notes in Discrete Mathematics&#039;&#039;, vol. 54, pp. 307–312, 2016. {{doi|10.1016/j.endm.2016.09.053}}&lt;br /&gt;
&lt;br /&gt;
* E. I. Vatutin, S. E. Kochemazov, O. S. Zaikin, M. O. Manzuk, N. N. Nikitina, V. S. Titov, &amp;quot;Central Symmetry Properties for Diagonal Latin Squares,&amp;quot; &#039;&#039;Problems of Information Technology&#039;&#039;, 2019, no. 2, pp. 3–8.&amp;lt;ref&amp;gt;[https://www.researchgate.net/publication/334616771_CENTRAL_SYMMETRY_PROPERTIES_FOR_DIAGONAL_LATIN_SQUARES ResearchGate: Central Symmetry Properties for Diagonal Latin Squares]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Eduard Vatutin, Alexey Belyshev, Natalia Nikitina, Maxim Manzuk, Alexander Albertian, Ilya Kurochkin, Alexander Kripachev, Alexey Pykhtin, &amp;quot;Diagonalization and Canonization of Latin Squares,&amp;quot; &#039;&#039;Supercomputing — Russian Supercomputing Days (RuSCDays 2023)&#039;&#039;, LNCS vol. 14389, Springer, Cham, pp. 48–61.&lt;br /&gt;
&lt;br /&gt;
* J. W. Brown, F. Cherry, L. Most, E. Parker, W. Wallis, &amp;quot;Completion of the Spectrum of Orthogonal Diagonal Latin Squares,&amp;quot; &#039;&#039;Lecture Notes in Pure and Applied Mathematics&#039;&#039;, vol. 139, pp. 43–49 (1992/1993). [Foundational paper finding the first three orthogonal pairs.]&lt;br /&gt;
&lt;br /&gt;
== Current statistics ==&lt;br /&gt;
{{As of|2026|05|22}}, the ODLK server reports the following statistics:&amp;lt;ref&amp;gt;[https://boinc.progger.info/odlk/server_status.php ODLK Server Status, 22 May 2026]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Metric !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 2,750&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 347&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 28,018&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,759&lt;br /&gt;
|-&lt;br /&gt;
| Current performance || 3,885.86 GigaFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 40,894&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 44,505&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://boinc.progger.info/odlk/ ODLK official website]&lt;br /&gt;
* [https://boinc.progger.info/odlk/server_status.php ODLK server status]&lt;br /&gt;
* [https://boinc.progger.info/odlk/stats.php ODLK credit statistics]&lt;br /&gt;
* [https://boinc.progger.info/odlk/forum_thread.php?id=213 Complete CF ODLK database for 2017–2021 (forum thread)]&lt;br /&gt;
* [[wikipedia:Latin_square|Latin square — Wikipedia]]&lt;br /&gt;
* [[wikipedia:Volunteer_computing|Volunteer computing — Wikipedia]]&lt;br /&gt;
* [http://sat.isa.ru/pdsat/ SAT@home (predecessor project)]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Mathematics]]&lt;br /&gt;
[[Category:Combinatorics]]&lt;br /&gt;
[[Category:Latin squares]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1455</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1455"/>
		<updated>2026-05-29T17:04:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode (darkened for contrast) */&lt;br /&gt;
    --bs-link:         #3730A3;   /* deep indigo */&lt;br /&gt;
    --bs-link-hover:   #1e1a5e;   /* near-navy */&lt;br /&gt;
    --bs-link-visited: #5B52B8;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   QUOTE CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-800); }  /* fixed: was --bs-green-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-800); }  /* fixed: was --bs-amber-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-800); }  /* fixed: was --bs-pink-200, near-invisible on light bg */&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1454</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1454"/>
		<updated>2026-05-29T16:47:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--bs-gray-200);&lt;br /&gt;
    background: var(--bs-gray-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1453</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1453"/>
		<updated>2026-05-29T16:39:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #212130);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1452</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1452"/>
		<updated>2026-05-29T16:36:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: Undo revision 1451 by Admin (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #d6d5ed;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1451</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1451"/>
		<updated>2026-05-29T16:32:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #6c6b8f;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1450</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1450"/>
		<updated>2026-05-29T16:31:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #d6d5ed;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1449</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1449"/>
		<updated>2026-05-29T16:28:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #b7b5e8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1448</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1448"/>
		<updated>2026-05-29T16:23:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #212130);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=BOINC_projects/completed_projects.html&amp;diff=1411</id>
		<title>BOINC projects/completed projects.html</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=BOINC_projects/completed_projects.html&amp;diff=1411"/>
		<updated>2026-05-28T15:04:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: Changed redirect target from BOINC projects to BOINC projects#290 Completed BOINC Projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BOINC_projects#290_Completed_BOINC_Projects]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=BOINC_projects/completed_projects.html&amp;diff=1410</id>
		<title>BOINC projects/completed projects.html</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=BOINC_projects/completed_projects.html&amp;diff=1410"/>
		<updated>2026-05-28T15:02:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: Redirected page to BOINC projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BOINC_projects]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=DENIS@home&amp;diff=1407</id>
		<title>DENIS@home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=DENIS@home&amp;diff=1407"/>
		<updated>2026-05-28T04:48:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = DENIS@home&lt;br /&gt;
| logo                 = DENIS@Home Logo.png&lt;br /&gt;
| logo caption         =&lt;br /&gt;
| screenshot           = Denispref.png&lt;br /&gt;
| caption              = DENIS@home application preferences interface&lt;br /&gt;
&lt;br /&gt;
| status               = Inactive&lt;br /&gt;
| category             = Medical physiology&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = CoMBA Research Group, Universidad San Jorge&lt;br /&gt;
| released             = {{Start date and age|2015|03|16}}&lt;br /&gt;
| completed            = No&lt;br /&gt;
| discontinued         =&lt;br /&gt;
&lt;br /&gt;
| programming language = C++&lt;br /&gt;
| operating system     = Windows, Linux, macOS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://denis.usj.es/denisathome/}}&lt;br /&gt;
| license              = [[wikipedia:Apache License|Apache License 2.0]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://denis.usj.es/denisathome/ &#039;&#039;&#039;&#039;&#039;DENIS@home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer distributed computing]]&#039;&#039;&#039;&#039;&#039; project based on the [[wikipedia:Berkeley_Open_Infrastructure_for_Network_Computing|BOINC]] middleware platform. The project is operated by the CoMBA (Computational Multiscale Biology and Medicine) research group at [[wikipedia:Universidad San Jorge|Universidad San Jorge]] in Zaragoza, Spain, and focuses on large-scale simulations of cardiac electrophysiology and cardiovascular disease research.&amp;lt;ref&amp;gt;{{Cite web |url=https://denis.usj.es/denisathome/ |title=DENIS@home |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal |last1=Monasterio |first1=Violeta |last2=Castro-Mur |first2=Jesús |last3=Carro |first3=Jesús |title=DENIS: Solving cardiac electrophysiological simulations with volunteer computing |journal=PLoS ONE |volume=13 |issue=10 |year=2018 |pages=e0205568 |doi=10.1371/journal.pone.0205568}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project&#039;s name is an acronym representing its five main principles: &#039;&#039;&#039;D&#039;&#039;&#039;istributed computing, &#039;&#039;&#039;E&#039;&#039;&#039;lectrophysiological models, &#039;&#039;&#039;N&#039;&#039;&#039;etworking collaboration, &#039;&#039;&#039;I&#039;&#039;&#039;n silico research, and &#039;&#039;&#039;S&#039;&#039;&#039;haring knowledge.&amp;lt;ref&amp;gt;{{Cite web |url=https://denis.usj.es/denisathome/ |title=DENIS@home Overview |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:Villanueva de Gállego - Campus de la Universidad San Jorge 1.jpg|thumb|250x250px|[[wikipedia:Universidad San Jorge|Universidad San Jorge]], home institution of the DENIS@home project]]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
DENIS@home was launched in 2016 as a research initiative to use volunteer computing for the simulation of cardiac electrophysiological models.&amp;lt;ref&amp;gt;{{Cite conference |last1=Castro-Mur |first1=J. |last2=Monasterio |first2=V. |last3=Carro |first3=J. |title=Volunteer Computing Approach for the Collaborative Simulation of Electrophysiological Models |book-title=IEEE 25th International Conference on Enabling Technologies: Infrastructure for Collaborative Enterprises (WETICE) |year=2016 |pages=118–123 |doi=10.1109/WETICE.2016.34}}&amp;lt;/ref&amp;gt; The project was developed by researchers from the CoMBA group to provide computational resources for large-scale studies into cardiac arrhythmias, ventricular cell behavior, and the effects of drugs on the human heart.&amp;lt;ref&amp;gt;{{Cite journal |last1=Monasterio |first1=Violeta |last2=Castro-Mur |first2=Jesús |last3=Carro |first3=Jesús |title=DENIS: Solving cardiac electrophysiological simulations with volunteer computing |journal=PLoS ONE |volume=13 |issue=10 |year=2018 |pages=e0205568 |doi=10.1371/journal.pone.0205568}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project was listed among BOINC-based scientific computing initiatives by the [[wikipedia:University of California, Berkeley|University of California, Berkeley]] and has been referenced in volunteer computing communities and distributed computing forums.&amp;lt;ref&amp;gt;{{Cite web |url=https://boinc.berkeley.edu/projects.php |title=BOINC Projects List |publisher=University of California, Berkeley |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why DENIS@home? ==&lt;br /&gt;
More than 17 million people die each year from cardiovascular diseases, representing approximately 31% of all global deaths.&amp;lt;ref&amp;gt;{{Cite web |url=https://www.who.int/news-room/fact-sheets/detail/cardiovascular-diseases-(cvds) |title=Cardiovascular diseases (CVDs) |publisher=World Health Organization |access-date=2026-05-19}}&amp;lt;/ref&amp;gt; DENIS@home was created to provide researchers with the computational power required to investigate the electrical activity of the heart and develop improved cardiac electrophysiological models.&lt;br /&gt;
&lt;br /&gt;
The platform allows volunteers to donate unused CPU processing time from their personal computers to scientific simulations.&amp;lt;ref&amp;gt;{{Cite web |url=https://denis.usj.es/denisathome/ |title=DENIS@home |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The five pillars of DENIS@home are:&lt;br /&gt;
* &amp;lt;u&amp;gt;&#039;&#039;&#039;D&#039;&#039;&#039;&amp;lt;/u&amp;gt;istributed computing&lt;br /&gt;
* &amp;lt;u&amp;gt;&#039;&#039;&#039;E&#039;&#039;&#039;&amp;lt;/u&amp;gt;lectrophysiological models&lt;br /&gt;
* &amp;lt;u&amp;gt;&#039;&#039;&#039;N&#039;&#039;&#039;&amp;lt;/u&amp;gt;etworking collaboration&lt;br /&gt;
* &amp;lt;u&amp;gt;&#039;&#039;&#039;I&#039;&#039;&#039;&amp;lt;/u&amp;gt;n silico research&lt;br /&gt;
* &amp;lt;u&amp;gt;&#039;&#039;&#039;S&#039;&#039;&#039;&amp;lt;/u&amp;gt;haring knowledge&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;D&amp;lt;/u&amp;gt;istributed computing ===&lt;br /&gt;
DENIS@home uses volunteer computers to perform large numbers of cardiac electrophysiological simulations. The project uses the idle processing capacity of Windows, Linux, and macOS computers connected through the BOINC middleware platform.&amp;lt;ref&amp;gt;{{Cite web |url=https://boinc.berkeley.edu/ |title=BOINC |publisher=University of California, Berkeley |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The distributed nature of BOINC enables researchers to process large simulation batches that would otherwise require access to expensive supercomputing infrastructure.&amp;lt;ref&amp;gt;{{Cite journal |last1=Anderson |first1=David P. |title=BOINC: A System for Public-Resource Computing and Storage |journal=5th IEEE/ACM International Workshop on Grid Computing |year=2004 |doi=10.1109/GRID.2004.14}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;E&amp;lt;/u&amp;gt;lectrophysiological models ===&lt;br /&gt;
DENIS@home computes large sets of cardiac electrophysiological model variations. These models mathematically represent the electrical behavior of cardiac cells and are used to study arrhythmias, heart failure, and drug interactions.&amp;lt;ref&amp;gt;{{Cite journal |last1=Carro |first1=J. |last2=Rodríguez-Matas |first2=J.F. |last3=Pueyo |first3=E. |title=A Methodology to Improve Human Ventricular Models for the Investigation of Cardiac Arrhythmias |journal=Biophysical Journal |volume=111 |issue=12 |year=2016 |pages=2706–2715 |doi=10.1016/j.bpj.2016.11.2183}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The models are described using the [[wikipedia:CellML|CellML]] language, an XML-based open standard developed by the Auckland Bioengineering Institute for storing and exchanging mathematical biological models.&amp;lt;ref&amp;gt;{{Cite web |url=https://www.cellml.org/ |title=CellML |publisher=Auckland Bioengineering Institute |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:Ekg normal bionerd.jpg|thumb|Cardiac electrical activity measured using an electrocardiogram]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;N&amp;lt;/u&amp;gt;etworking collaboration ===&lt;br /&gt;
The project was designed to connect volunteers and researchers internationally through a collaborative computing infrastructure. DENIS@home also encourages scientific collaboration between institutions and research groups working in computational cardiology.&amp;lt;ref&amp;gt;{{Cite journal |last1=Monasterio |first1=Violeta |last2=Castro-Mur |first2=Jesús |last3=Carro |first3=Jesús |title=DENIS: Solving cardiac electrophysiological simulations with volunteer computing |journal=PLoS ONE |volume=13 |issue=10 |year=2018 |pages=e0205568 |doi=10.1371/journal.pone.0205568}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;I&amp;lt;/u&amp;gt;n silico research ===&lt;br /&gt;
The project focuses on &#039;&#039;in silico&#039;&#039; cardiac simulations, allowing researchers to investigate heart behavior under normal and pathological conditions using computer models rather than laboratory or clinical experimentation alone.&amp;lt;ref&amp;gt;{{Cite journal |last1=Monasterio |first1=Violeta |last2=Castro-Mur |first2=Jesús |last3=Carro |first3=Jesús |title=DENIS: Solving cardiac electrophysiological simulations with volunteer computing |journal=PLoS ONE |volume=13 |issue=10 |year=2018 |pages=e0205568 |doi=10.1371/journal.pone.0205568}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;S&amp;lt;/u&amp;gt;haring knowledge ===&lt;br /&gt;
DENIS@home promotes open scientific research. Results produced using the project are expected to be published openly, and the software developed for the project is released under the Apache License 2.0.&amp;lt;ref&amp;gt;{{Cite web |url=https://www.apache.org/licenses/LICENSE-2.0 |title=Apache License 2.0 |publisher=Apache Software Foundation |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
Volunteers may choose to run one or more scientific applications through the BOINC client:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://denis.usj.es/denisathome/projects.php#DENIS_Myocyte_Beta Beta of DENIS-myocyte (DENIS_Myocyte_Beta)]&#039;&#039;&#039;: Testing application used to validate modifications to the simulation software.&lt;br /&gt;
* &#039;&#039;&#039;[https://denis.usj.es/denisathome/projects.php#NHuVe New human ventricular cell model (NHuVe)]&#039;&#039;&#039;: Development of updated ventricular cell electrophysiological models.&lt;br /&gt;
* &#039;&#039;&#039;[https://denis.usj.es/denisathome/projects.php#HuVeMOp Human ventricular cell models optimization (HuVeMOp)]&#039;&#039;&#039;: Optimization of commonly used ventricular cell models for electrophysiological marker representation.&lt;br /&gt;
&lt;br /&gt;
Electrophysiological models are used to investigate the electrical activity of cardiac cells and predict the effects of pharmaceutical compounds and pathological conditions on the heart.&amp;lt;ref&amp;gt;{{Cite journal |last1=Carro |first1=J. |last2=Rodríguez-Matas |first2=J.F. |last3=Pueyo |first3=E. |title=A Methodology to Improve Human Ventricular Models for the Investigation of Cardiac Arrhythmias |journal=Biophysical Journal |volume=111 |issue=12 |year=2016 |pages=2706–2715 |doi=10.1016/j.bpj.2016.11.2183}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All DENIS@home software is distributed under the Apache License 2.0 and source code has been published through the project&#039;s Bitbucket repositories.&amp;lt;ref&amp;gt;{{Cite web |url=https://bitbucket.org/comba_usj/workspace/projects/DENIS |title=DENIS Bitbucket Repository |publisher=Bitbucket |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;[[File:Denispref.png|700px|alt=preferences|none|thumb|DENIS@home application selection preferences]]&lt;br /&gt;
&lt;br /&gt;
== Computing platform ==&lt;br /&gt;
DENIS@home applications are available for:&lt;br /&gt;
* Microsoft Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* macOS&lt;br /&gt;
&lt;br /&gt;
The project primarily uses CPU-based computations and supports both 32-bit and 64-bit systems depending on application version.&amp;lt;ref&amp;gt;{{Cite web |url=https://denis.usj.es/denisathome/apps.php |title=DENIS@home Applications |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
The members of the research group participating in the project include:&lt;br /&gt;
* Jesús Carro&lt;br /&gt;
* Violeta Monasterio&lt;br /&gt;
* Alejandro Alcaine&lt;br /&gt;
* Marta Gómez&lt;br /&gt;
&lt;br /&gt;
DENIS@home is developed and maintained by the CoMBA research group at [[wikipedia:Universidad San Jorge|Universidad San Jorge]].&amp;lt;ref&amp;gt;{{Cite web |url=https://www.usj.es/investigacion/grupos-investigacion/CoMBA |title=CoMBA Research Group |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
The project publishes scientific results and associated research papers through its official publications page.&amp;lt;ref&amp;gt;{{Cite web |url=https://denis.usj.es/denisathome/publications.php |title=DENIS@home Publications |publisher=Universidad San Jorge |access-date=2026-05-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific publications ==&lt;br /&gt;
&lt;br /&gt;
=== Research results from DENIS@home ===&lt;br /&gt;
# J. Carro (2019). &#039;&#039;[https://zaguan.unizar.es/record/78866 New Methodologies for the Development and Validation of Electrophysiological Models]&#039;&#039;. PhD Thesis.&lt;br /&gt;
# J. Carro, J.F. Rodríguez-Matas, E. Pueyo (2016). &#039;&#039;[https://doi.org/10.1016/j.bpj.2016.11.2183 A Methodology to Improve Human Ventricular Models for the Investigation of Cardiac Arrhythmias]&#039;&#039;. &#039;&#039;Biophysical Journal&#039;&#039; 111(12):2706–2715.&lt;br /&gt;
# V. Monasterio, J. Castro-Mur, J. Carro (2018). &#039;&#039;[https://doi.org/10.1371/journal.pone.0205568 DENIS: Solving cardiac electrophysiological simulations with volunteer computing]&#039;&#039;. &#039;&#039;PLoS ONE&#039;&#039; 13(10):e0205568.&lt;br /&gt;
# J. Castro-Mur, V. Monasterio, J. Carro (2016). &#039;&#039;[https://doi.org/10.1109/WETICE.2016.34 Volunteer Computing Approach for the Collaborative Simulation of Electrophysiological Models]&#039;&#039;. IEEE WETICE 2016.&lt;br /&gt;
&lt;br /&gt;
=== Research results using DENIS@home software ===&lt;br /&gt;
# M. Gomez, J. Carro, E. Pueyo, V. Monasterio (2022). &#039;&#039;[http://doi.org/10.22489/CinC.2022.228 An in Silico Investigation into the Role of SK Channels in Failing Ventricular Myocytes]&#039;&#039;. Computing in Cardiology Conference 2022.&lt;br /&gt;
# M. Gomez, J. Carro, V. Monasterio, E. Pueyo (2022). &#039;&#039;[https://papiro.unizar.es/ojs/index.php/jji3a/article/view/7021/5804 Investigación in silico sobre el papel de los canales SK en miocitos ventriculares de pacientes con insuficiencia cardiaca]&#039;&#039;. Jornada de Jóvenes Investigadores e Investigadoras del I3A.&lt;br /&gt;
# M. Gómez, J. Carro, E. Pueyo, V. Monasterio (2021). &#039;&#039;[https://seib.org.es/descarga/libro-de-actas-caseib-2021/?wpdmdl=3382 Modificación de un modelo de miocito ventricular humano para representar el papel de los canales SK en insuficiencia cardiaca]&#039;&#039;. CASEIB 2021.&lt;br /&gt;
&lt;br /&gt;
=== Publications about DENIS@home ===&lt;br /&gt;
# V. Monasterio, J. Castro-Mur, J. Carro (2018). &#039;&#039;[https://doi.org/10.1371/journal.pone.0205568 DENIS: Solving cardiac electrophysiological simulations with volunteer computing]&#039;&#039;. &#039;&#039;PLoS ONE&#039;&#039; 13(10):e0205568.&lt;br /&gt;
# J. Castro-Mur, V. Monasterio, J. Carro (2016). &#039;&#039;[https://doi.org/10.1109/WETICE.2016.34 Volunteer Computing Approach for the Collaborative Simulation of Electrophysiological Models]&#039;&#039;. IEEE WETICE 2016.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[wikipedia:BOINC|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Cardiac electrophysiology|Cardiac electrophysiology]]&lt;br /&gt;
* [[wikipedia:CellML|CellML]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://denis.usj.es/denisathome/ Official website]&lt;br /&gt;
* [https://denis.usj.es/denisathome/forum_index.php Message boards]&lt;br /&gt;
* [https://bitbucket.org/comba_usj/workspace/projects/DENIS Source code repository]&lt;br /&gt;
* [https://boinc.berkeley.edu/ BOINC official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=USPEX@HOME&amp;diff=1406</id>
		<title>USPEX@HOME</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=USPEX@HOME&amp;diff=1406"/>
		<updated>2026-05-28T04:09:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = USPEX@HOME&lt;br /&gt;
| logo                 = Uspex.png&lt;br /&gt;
| logo caption         = USPEX@HOME logo&lt;br /&gt;
| screenshot           = &lt;br /&gt;
| caption              = Example USPEX crystal structure prediction workflow&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Materials science, Crystallography, Computational chemistry&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
| dependencies         = &lt;br /&gt;
&lt;br /&gt;
| developer            = [[wikipedia:Artem Oganov|Artem R. Oganov]] and the USPEX Team&lt;br /&gt;
| author               = Artem R. Oganov&lt;br /&gt;
| sponsor              = [[wikipedia:Skolkovo Institute of Science and Technology|Skolkovo Institute of Science and Technology]]&lt;br /&gt;
| maintainer           = USPEX Team&lt;br /&gt;
| released             = {{Start date and age|2023|06|01}}&lt;br /&gt;
&lt;br /&gt;
| programming language = C++, Fortran&lt;br /&gt;
| operating system     = Windows, Linux, macOS&lt;br /&gt;
| website              = {{URL|https://uspex-at-home.ru/prediction/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://uspex-at-home.ru/prediction/ &#039;&#039;&#039;&#039;&#039;USPEX@HOME&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project based on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform. The project allows volunteers around the world to donate spare processing power from their computers to help researchers discover and predict new crystalline materials and compounds.&amp;lt;ref&amp;gt;{{cite web|url=https://uspex-at-home.ru/prediction/|title=USPEX@HOME|publisher=USPEX Team|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is based on the [[wikipedia:USPEX|USPEX]] evolutionary crystal structure prediction method, a computational approach used in materials science and condensed matter physics to predict stable atomic structures under different physical conditions.&amp;lt;ref&amp;gt;{{cite journal|last=Oganov|first=A. R.|title=Crystal structure prediction using evolutionary algorithms|journal=Journal of Chemical Physics|year=2006|volume=124|issue=24|pages=244704|doi=10.1063/1.2210932}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
USPEX@HOME focuses on identifying novel materials with potentially useful properties, including superconductors, superhard materials, energy storage compounds, catalysts, and high pressure phases of matter.&amp;lt;ref&amp;gt;{{cite web|url=https://uspex-team.org/en|title=USPEX Team|publisher=USPEX Team|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why USPEX@HOME? ==&lt;br /&gt;
&lt;br /&gt;
Predicting the atomic arrangement of materials is one of the major challenges in computational materials science. The physical and chemical properties of a material are strongly determined by the arrangement of its atoms in three dimensional space. Determining the most stable structure for a chemical composition often requires searching an enormous number of possible atomic configurations.&lt;br /&gt;
&lt;br /&gt;
For a crystal structure containing many atoms, the number of possible arrangements increases combinatorially. Researchers attempt to minimize the total free energy of the system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G = H - TS&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; is the Gibbs free energy&lt;br /&gt;
* &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; is enthalpy&lt;br /&gt;
* &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; is temperature&lt;br /&gt;
* &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; is entropy&lt;br /&gt;
&lt;br /&gt;
Stable crystal structures generally correspond to local or global minima of the free energy surface.&amp;lt;ref&amp;gt;{{cite journal|last=Oganov|first=A. R.|last2=Glass|first2=C. W.|title=Crystal structure prediction using ab initio evolutionary techniques: Principles and applications|journal=Journal of Chemical Physics|year=2008|volume=124|pages=244704|doi=10.1063/1.2400012}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because these calculations are computationally intensive, distributed volunteer computing provides a practical way to perform large numbers of simulations simultaneously across thousands of participating computers.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
The primary goal of USPEX@HOME is to accelerate the discovery of new materials through large scale computational simulations performed on volunteer computers. The project uses evolutionary algorithms and first principles calculations to search for stable and metastable crystal structures.&amp;lt;ref&amp;gt;{{cite web|url=https://uspex-at-home.ru/prediction/|title=About USPEX@HOME|publisher=USPEX@HOME|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Researchers associated with the project investigate materials that may exhibit important technological properties, including:&lt;br /&gt;
&lt;br /&gt;
* High temperature superconductivity&lt;br /&gt;
* Superhardness&lt;br /&gt;
* Improved battery performance&lt;br /&gt;
* Hydrogen rich compounds&lt;br /&gt;
* Novel semiconductors&lt;br /&gt;
* High pressure phases of matter&lt;br /&gt;
&lt;br /&gt;
Many of these calculations involve quantum mechanical modeling techniques derived from [[wikipedia:Density functional theory|density functional theory]] and related computational chemistry methods.&lt;br /&gt;
&lt;br /&gt;
The project also serves as a public participation initiative in modern scientific research, allowing volunteers to contribute directly to materials discovery and computational physics research.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
[[File:Brianite crystal structure (Alkemper-Fuess 1998) crystallographic standard alignment.png|thumb|Brianite crystal structure (Alkemper-Fuess 1998) crystallographic standard alignment]]&lt;br /&gt;
USPEX@HOME uses the USPEX evolutionary algorithm framework together with BOINC distributed computing infrastructure.&amp;lt;ref&amp;gt;{{cite journal|last=Glass|first=C. W.|last2=Oganov|first2=A. R.|last3=Hansen|first3=N.|title=USPEX evolutionary crystal structure prediction|journal=Computer Physics Communications|year=2006|volume=175|issue=11-12|pages=713-720|doi=10.1016/j.cpc.2006.07.020}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The USPEX method applies concepts inspired by biological evolution to optimize crystal structures. Candidate structures are generated and refined over multiple generations using operations such as:&lt;br /&gt;
&lt;br /&gt;
* Heredity&lt;br /&gt;
* Mutation&lt;br /&gt;
* Permutation&lt;br /&gt;
*Natural selection&lt;br /&gt;
&lt;br /&gt;
The fitness of a structure is generally determined by minimizing total energy or enthalpy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;H = E + PV&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; is enthalpy&lt;br /&gt;
* &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is internal energy&lt;br /&gt;
* &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; is pressure&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; is volume&lt;br /&gt;
&lt;br /&gt;
Structures with lower enthalpy are considered more stable under given pressure conditions.&lt;br /&gt;
&lt;br /&gt;
The BOINC infrastructure enables these workloads to be distributed across thousands of volunteer systems. Each participant downloads work units, processes calculations locally, and uploads results back to the project servers.&lt;br /&gt;
&lt;br /&gt;
Volunteer computing is particularly well suited to this type of research because crystal structure searches often require evaluating many independent candidate structures in parallel. This parallelism allows the project to scale efficiently across geographically distributed computers.&lt;br /&gt;
&lt;br /&gt;
USPEX has been widely cited in computational materials science literature and has contributed to the prediction of numerous experimentally verified materials and high pressure compounds.&amp;lt;ref&amp;gt;{{cite journal|last=Oganov|first=A. R.|last2=Lyakhov|first2=A. O.|last3=Valle|first3=M.|title=How evolutionary crystal structure prediction works and why|journal=Accounts of Chemical Research|year=2011|volume=44|issue=3|pages=227-237|doi=10.1021/ar1001318}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Volunteer Computing ==&lt;br /&gt;
&lt;br /&gt;
USPEX@HOME is part of the broader ecosystem of BOINC based volunteer computing projects. Volunteers install the BOINC client software and attach to the project using an account on the project website.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/|title=BOINC|publisher=University of California, Berkeley|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project primarily distributes CPU based tasks related to crystal structure optimization and materials simulations. Depending on the workload, tasks may vary significantly in runtime and computational complexity.&lt;br /&gt;
&lt;br /&gt;
Like many BOINC projects, USPEX@HOME uses a credit system to reward volunteers for completed work units and to encourage community participation.&lt;br /&gt;
&lt;br /&gt;
== Scientific significance ==&lt;br /&gt;
[[File:BOINC project architecture.png|thumb|BOINC project architecture]]&lt;br /&gt;
Crystal structure prediction has become increasingly important in modern materials science. Computational methods can reduce the need for expensive laboratory experiments by identifying promising candidate materials before synthesis.&lt;br /&gt;
&lt;br /&gt;
Applications of predicted materials may include:&lt;br /&gt;
&lt;br /&gt;
* Energy storage systems&lt;br /&gt;
* Aerospace engineering&lt;br /&gt;
* Electronics&lt;br /&gt;
* Catalysis&lt;br /&gt;
* Medical technologies&lt;br /&gt;
* High pressure physics&lt;br /&gt;
&lt;br /&gt;
USPEX methods have been used in the prediction of new superconducting hydrides and other exotic materials under extreme conditions.&amp;lt;ref&amp;gt;{{cite journal|last=Duan|first=D.|last2=Liu|first2=Y.|title=Pressure induced metallization of dense hydrogen sulfide|journal=Scientific Reports|year=2014|volume=4|pages=6968|doi=10.1038/srep06968}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
The project is developed and maintained by the USPEX research team led by [[wikipedia:Artem Oganov|Artem R. Oganov]], a computational materials scientist known for his work in crystal structure prediction and high pressure chemistry.&amp;lt;ref&amp;gt;{{cite web|url=https://uspex-team.org/en|title=USPEX Team|publisher=USPEX Team|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Research associated with USPEX has involved collaborations with institutions including:&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Skolkovo Institute of Science and Technology|Skolkovo Institute of Science and Technology]]&lt;br /&gt;
* [[wikipedia:Moscow Institute of Physics and Technology|Moscow Institute of Physics and Technology]]&lt;br /&gt;
* [[wikipedia:Russian Academy of Sciences|Russian Academy of Sciences]]&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&lt;br /&gt;
As with other BOINC projects, USPEX@HOME publishes statistics regarding participating users, hosts, and computational throughput through its server status pages.&amp;lt;ref&amp;gt;{{cite web|url=https://uspex-at-home.ru/prediction/server_status.php|title=USPEX@HOME server status|publisher=USPEX@HOME|access-date=2026-05-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project maintains international participation from volunteers contributing computational resources from personal computers and servers worldwide.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:BOINC|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Distributed computing|Distributed computing]]&lt;br /&gt;
* [[wikipedia:Materials science|Materials science]]&lt;br /&gt;
* [[wikipedia:Crystal structure prediction|Crystal structure prediction]]&lt;br /&gt;
* [[wikipedia:Density functional theory|Density functional theory]]&lt;br /&gt;
* [[wikipedia:Computational chemistry|Computational chemistry]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [https://uspex-at-home.ru/prediction/ Official USPEX@HOME website]&lt;br /&gt;
* [https://uspex-team.org/en Official USPEX Team website]&lt;br /&gt;
* [https://boinc.berkeley.edu/ BOINC official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{{Reflist}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=PrimeGrid&amp;diff=1405</id>
		<title>PrimeGrid</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=PrimeGrid&amp;diff=1405"/>
		<updated>2026-05-28T04:06:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = PrimeGrid&lt;br /&gt;
| logo                 = Primegrid.jpg&lt;br /&gt;
| logo caption         = PrimeGrid logo&lt;br /&gt;
| screenshot           = Primegrid.gif&lt;br /&gt;
| caption              = PrimeGrid screensaver displaying the 321 Prime Search application&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics, Number theory&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = &lt;br /&gt;
&lt;br /&gt;
| developer            = Rytis Slatkevičius and the PrimeGrid community&lt;br /&gt;
| author               = Rytis Slatkevičius&lt;br /&gt;
| maintainer           = PrimeGrid administrators and volunteers&lt;br /&gt;
| released             = {{Start date and age|2005|06|12}}&lt;br /&gt;
| repository           = https://www.primegrid.com/&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++, Perl&lt;br /&gt;
| operating system     = Windows, Linux, macOS, FreeBSD, Android&lt;br /&gt;
| size                 = Varies by application&lt;br /&gt;
&lt;br /&gt;
| stats as of          = {{Start date and age|2026|05|22}}&lt;br /&gt;
| average performance  = 3.2 PFLOPS&lt;br /&gt;
| active users         = 3146&lt;br /&gt;
| total users          = 357586&lt;br /&gt;
| active hosts         = 13355&lt;br /&gt;
| total hosts          = 889268&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://www.primegrid.com/}}&lt;br /&gt;
| license              = Mixed; mostly proprietary scientific applications with open-source components&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
BOINC project [https://www.primegrid.com/ &#039;&#039;&#039;&#039;&#039;PrimeGrid&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039; project focused on the discovery of large [[wikipedia:Prime number|prime numbers]] and the advancement of computational [[wikipedia:Number theory|number theory]]. The project operates on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform and allows volunteers worldwide to donate unused CPU and GPU processing power to mathematical research.&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;{{cite web |url=https://en.wikipedia.org/wiki/PrimeGrid |title=PrimeGrid |website=Wikipedia}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;status&amp;quot;&amp;gt;{{cite web |url=https://www.primegrid.com/server_status.php |title=PrimeGrid Server Status |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
PrimeGrid began on 12 June 2005 under the name &#039;&#039;&#039;Message@Home&#039;&#039;&#039;. The original project was operated from founder Rytis Slatkevičius&#039; personal laptop and initially served as a test platform for &#039;&#039;&#039;PerlBOINC&#039;&#039;&#039;, an effort to implement BOINC server software in the Perl programming language to improve compatibility with Microsoft Windows systems.&amp;lt;ref&amp;gt;{{cite web |url=https://primegrid.fandom.com/wiki/History_of_PrimeGrid |title=History of PrimeGrid |website=PrimeGrid Wiki}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project&#039;s first application, &#039;&#039;&#039;Message7&#039;&#039;&#039;, attempted to recover a message encoded with the MD5 hashing algorithm through brute-force search methods. In August 2005 the RSA-640 factoring challenge replaced the Message7 project, and later that year the community voted to rename the project to &#039;&#039;&#039;PrimeGrid&#039;&#039;&#039;.&amp;lt;ref&amp;gt;{{cite web |url=https://primegrid.fandom.com/wiki/History_of_PrimeGrid |title=History of PrimeGrid |website=PrimeGrid Wiki}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PrimeGrid subsequently evolved into one of the largest distributed computing projects dedicated exclusively to prime number research. The project has discovered thousands of large prime numbers, including numerous world-record and megaprime discoveries.&amp;lt;ref name=&amp;quot;wiki&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
PrimeGrid&#039;s primary objective is to advance mathematical research through large-scale distributed searches for prime numbers of special forms. Volunteers install the BOINC client and select one or more PrimeGrid subprojects to process mathematical workloads on their computers.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/ |title=PrimeGrid |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project also seeks to:&lt;br /&gt;
&lt;br /&gt;
* Solve longstanding mathematical conjectures and open problems.&lt;br /&gt;
* Discover record-setting and megaprime numbers.&lt;br /&gt;
* Provide educational information about prime numbers and number theory.&lt;br /&gt;
* Demonstrate the computational complexity involved in modern cryptographic systems.&amp;lt;ref name=&amp;quot;wiki&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prime numbers play an important role in public-key cryptography systems such as RSA encryption. Research into large primes helps mathematicians and computer scientists better understand computational limits and cryptographic security.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/ |title=PrimeGrid |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
PrimeGrid operates multiple independent mathematical subprojects, each targeting a different class of prime numbers or unsolved problem in number theory.&lt;br /&gt;
&lt;br /&gt;
Many PrimeGrid searches involve evaluating expressions such as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k \cdot 2^n + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b^{2^n} + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where integer values are tested for primality using probabilistic and deterministic algorithms including LLR, PRP, and sieving methods.&lt;br /&gt;
&lt;br /&gt;
=== Current and historical subprojects ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;321 Prime Search&#039;&#039;&#039; — Searches for primes of the form:&lt;br /&gt;
:&amp;lt;math&amp;gt;3 \cdot 2^n \pm 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Cullen Prime Search&#039;&#039;&#039; — Searches for Cullen primes:&lt;br /&gt;
:&amp;lt;math&amp;gt;n \cdot 2^n + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Woodall Prime Search&#039;&#039;&#039; — Searches for Woodall primes:&lt;br /&gt;
:&amp;lt;math&amp;gt;n \cdot 2^n - 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalized Cullen/Woodall Prime Search&#039;&#039;&#039; — Searches for generalized forms:&lt;br /&gt;
:&amp;lt;math&amp;gt;n \cdot b^n \pm 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalized Fermat Prime Search&#039;&#039;&#039; — Searches for generalized Fermat primes:&lt;br /&gt;
:&amp;lt;math&amp;gt;b^{2^n} + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Prime Sierpinski Project&#039;&#039;&#039; — Attempts to solve the [[wikipedia:Sierpiński problem|Sierpiński problem]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Seventeen or Bust&#039;&#039;&#039; — Searches for a proof related to the Sierpiński problem by eliminating remaining candidate values of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The Riesel Problem&#039;&#039;&#039; — Searches for values proving numbers of the form:&lt;br /&gt;
:&amp;lt;math&amp;gt;k \cdot 2^n - 1&amp;lt;/math&amp;gt;&lt;br /&gt;
are always composite.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Extended Sierpinski Problem&#039;&#039;&#039; — A broader extension of the classical Sierpiński problem.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proth Prime Search&#039;&#039;&#039; — Searches for Proth primes:&lt;br /&gt;
:&amp;lt;math&amp;gt;k \cdot 2^n + 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;AP27 Search&#039;&#039;&#039; — Searches for long arithmetic progressions of prime numbers.&amp;lt;ref&amp;gt;{{cite web |url=https://en.wikipedia.org/wiki/Primes_in_arithmetic_progression |title=Primes in arithmetic progression |website=Wikipedia}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Twin Prime Search&#039;&#039;&#039; — Searches for twin primes of the form:&lt;br /&gt;
:&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;p+2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Wieferich and Wall-Sun-Sun Search&#039;&#039;&#039; — Searches for rare special classes of primes connected to modular arithmetic and Fibonacci sequences.&lt;br /&gt;
&lt;br /&gt;
Users may select preferred subprojects through the PrimeGrid preferences page.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/prefs.php?subset=project |title=PrimeGrid project preferences |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software and hardware support ==&lt;br /&gt;
[[File:Primegrid.gif|alt=PrimeGrid Screensaver - 321 Prime Search v5.09 - 2008|thumb|PrimeGrid screensaver showing the 321 Prime Search application.]]PrimeGrid supports both CPU and GPU computation. Applications are available for:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Windows&lt;br /&gt;
* Linux&lt;br /&gt;
* macOS&lt;br /&gt;
* Android&lt;br /&gt;
* FreeBSD&lt;br /&gt;
&lt;br /&gt;
GPU applications support NVIDIA CUDA, OpenCL, and Apple Silicon GPUs for selected subprojects.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/apps.php |title=PrimeGrid Applications |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PrimeGrid also provides ARM-compatible applications for certain Windows-on-ARM systems.&amp;lt;ref&amp;gt;{{cite web |url=https://www.reddit.com/r/BOINC/comments/1t0nk3m/official_primegrid_news_windowsarm_suppport_for/ |title=Official PrimeGrid News - Windows/ARM support for GFN apps |website=Reddit}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
PrimeGrid has discovered thousands of large prime numbers, including many megaprimes containing more than one million decimal digits.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/ |title=PrimeGrid |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project maintains public databases of discoveries and published results.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/pubresults.php |title=PrimeGrid Published Results |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Twin Prime Search, n=195000 ===&lt;br /&gt;
Contains raw data from the Twin Prime Search project for &amp;lt;math&amp;gt;n = 195000&amp;lt;/math&amp;gt;. Compressed size: 20.9 MiB.&lt;br /&gt;
&lt;br /&gt;
* [https://www.primegrid.com/download/torrent/TPS_195000.torrent Download torrent]&lt;br /&gt;
&lt;br /&gt;
=== Twin Prime Search, n=333333 ===&lt;br /&gt;
Contains raw data from the Twin Prime Search project for &amp;lt;math&amp;gt;n = 333333&amp;lt;/math&amp;gt;. Compressed size: 607 MiB.&lt;br /&gt;
&lt;br /&gt;
* [https://www.primegrid.com/download/torrent/TPS_333333.torrent Download torrent]&lt;br /&gt;
&lt;br /&gt;
== Prime discoveries ==&lt;br /&gt;
PrimeGrid participants have discovered many record-setting primes and megaprimes. The project regularly reports discoveries to [[wikipedia:The Largest Known Primes Database|The Largest Known Primes Database]] (Top5000).&amp;lt;ref&amp;gt;{{cite web |url=https://t5k.org/ |title=The Largest Known Primes Database |website=Prime Pages}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of 2026, PrimeGrid had reported more than 38,000 primes to the Top5000 database and discovered more than 3,600 megaprimes.&amp;lt;ref name=&amp;quot;status&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
PrimeGrid uses the BOINC infrastructure combined with additional custom applications including:&lt;br /&gt;
&lt;br /&gt;
* LLR (Lucas-Lehmer-Riesel)&lt;br /&gt;
* PRPNet&lt;br /&gt;
* Genefer&lt;br /&gt;
* PFGW&lt;br /&gt;
&lt;br /&gt;
The project distributes work units to volunteer computers, validates returned computations, and maintains statistical rankings for users, teams, and hardware.&amp;lt;ref name=&amp;quot;wiki&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
According to the PrimeGrid server status page, the project operates at more than 3 PFLOPS of computing power with hundreds of thousands of registered users and hosts.&amp;lt;ref name=&amp;quot;status&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
PrimeGrid maintains an active international volunteer community through forums, Discord, and external mathematical discussion boards.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/forum_index.php |title=PrimeGrid Forums |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project also hosts periodic computational challenges where participants compete to generate the highest amount of computational credit during specific time windows.&amp;lt;ref&amp;gt;{{cite web |url=https://www.primegrid.com/challenge/ |title=PrimeGrid Challenge Series |website=PrimeGrid}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PrimeGrid is frequently recommended within the BOINC community due to its consistent availability of work units and broad hardware support.&amp;lt;ref&amp;gt;{{cite web |url=https://www.reddit.com/r/BOINC/comments/1qkoq90/rosetta_denis_gpugrid_rna_world_no_tasks/ |title=Rosetta, DENIS, GPUGRID, RNA World no tasks? |website=Reddit}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific publications ==&lt;br /&gt;
&lt;br /&gt;
# Bethune, Iain. &#039;&#039;PrimeGrid: a Volunteer Computing Platform for Number Theory&#039;&#039;. Annual International Conference on Computational Mathematics, Computational Geometry &amp;amp; Statistics (2015). DOI: 10.5176/2251-1911_CMCGS15.43.&amp;lt;ref&amp;gt;{{cite web |url=https://www.dropbox.com/s/6lmn8c7ujnj1cng/CMCGS_2015_Proceedings_Paper_20.pdf?dl=0 |title=PrimeGrid: a Volunteer Computing Platform for Number Theory}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bethune, Iain Arthur and Yves Gallot. &#039;&#039;Genefer: Programs for Finding Large Probable Generalized Fermat Primes&#039;&#039;. Journal of Open Research Software (2015). DOI: 10.5334/jors.ca.&amp;lt;ref&amp;gt;{{cite web |url=https://openresearchsoftware.metajnl.com/article/10.5334/jors.ca/ |title=Genefer: Programs for Finding Large Probable Generalized Fermat Primes}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bethune, Iain and Michael Goetz. &#039;&#039;Extending the Generalized Fermat Prime Number Search Beyond One Million Digits Using GPUs&#039;&#039;. Parallel Processing and Applied Mathematics (2014).&amp;lt;ref&amp;gt;{{cite web |url=http://link.springer.com/10.1007/978-3-642-55224-3_11 |title=Extending the Generalized Fermat Prime Number Search Beyond One Million Digits Using GPUs}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Anderson, David P. &#039;&#039;BOINC: A System for Public-Resource Computing and Storage&#039;&#039;. Proceedings of the Fifth IEEE/ACM International Workshop on Grid Computing (2004).&amp;lt;ref&amp;gt;{{cite web |url=https://boinc.berkeley.edu/pubs.php |title=BOINC publications |website=BOINC}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[wikipedia:BOINC|BOINC]]&lt;br /&gt;
* [[wikipedia:Distributed computing|Distributed computing]]&lt;br /&gt;
* [[wikipedia:Prime number|Prime number]]&lt;br /&gt;
* [[wikipedia:Megaprime|Megaprime]]&lt;br /&gt;
* [[wikipedia:Sierpiński number|Sierpiński number]]&lt;br /&gt;
* [[wikipedia:Riesel number|Riesel number]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://www.primegrid.com/ Official website]&lt;br /&gt;
* [https://www.primegrid.com/forum_index.php PrimeGrid forums]&lt;br /&gt;
* [https://www.primegrid.com/pubresults.php Published results]&lt;br /&gt;
* [https://primegrid.fandom.com/wiki/PrimeGrid_Wiki PrimeGrid Wiki]&lt;br /&gt;
* [https://github.com/BOINC/boinc BOINC GitHub repository]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Number theory]]&lt;br /&gt;
[[Category:Prime numbers]]&lt;br /&gt;
[[Category:Volunteer computing projects]]&lt;br /&gt;
[[Category:2005 software]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=SETI@home&amp;diff=1404</id>
		<title>SETI@home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=SETI@home&amp;diff=1404"/>
		<updated>2026-05-28T03:55:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: update images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = SETI@home&lt;br /&gt;
| logo                 = SETI@home logo.png&lt;br /&gt;
| logo caption         = SETI@home logo&lt;br /&gt;
| screenshot           = SETI@home custom background and logo screensaver.gif&lt;br /&gt;
| caption              = The SETI@home screensaver displaying radio signal analysis in progress&lt;br /&gt;
| description          = SETI@home is a hibernating volunteer computing project hosted by the Space Sciences Laboratory at UC Berkeley, using the BOINC platform to search for extraterrestrial intelligence by analyzing radio telescope data from Arecibo and Green Bank.&lt;br /&gt;
&lt;br /&gt;
| status               = Hibernating&lt;br /&gt;
| category             = Astrophysics / SETI&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = University of California, Berkeley&lt;br /&gt;
| author               = David Gedye, David P. Anderson, Dan Werthimer&lt;br /&gt;
| sponsor              = National Science Foundation, NASA, volunteer donations&lt;br /&gt;
| maintainer           = Eric Korpela (current director)&lt;br /&gt;
| released             = {{Start date and age|1999|05|17}}&lt;br /&gt;
| completed            =&lt;br /&gt;
| discontinued         =&lt;br /&gt;
| repository           =&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android, Solaris, FreeBSD, IBM AIX, HP-UX, IRIX, OS/2 Warp&lt;br /&gt;
| size                 =&lt;br /&gt;
&lt;br /&gt;
| stats as of          = March 2020&lt;br /&gt;
| active users         = 91454&lt;br /&gt;
| total users          = 1803163&lt;br /&gt;
| active hosts         = 144779&lt;br /&gt;
| total hosts          = 165178&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://setiathome.berkeley.edu/}}&lt;br /&gt;
| license              = GPL-2.0-or-later&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SETI@home&#039;&#039;&#039; (pronounced &amp;quot;SETI at home&amp;quot;) is a volunteer [[distributed computing]] project run by the [[Berkeley SETI Research Center]] and hosted by the [[Space Sciences Laboratory]] at the [[University of California, Berkeley]].&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;&amp;gt;{{cite web |url=https://en.wikipedia.org/wiki/SETI@home |title=SETI@home |publisher=Wikipedia |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; Its goal is to analyze radio telescope data in search of signals that could indicate extraterrestrial intelligence, making it one of many activities in the worldwide [[Search for Extraterrestrial Intelligence|SETI]] effort. SETI@home ran as an active volunteer computing project from May 17, 1999, until March 31, 2020, when it entered an indefinite period of hibernation while the research team focused on analyzing accumulated data.&amp;lt;ref name=&amp;quot;hibernation-announcement&amp;quot;&amp;gt;{{cite web |url=https://setiathome.berkeley.edu/old_news.php |title=SETI@home hibernation announcement |publisher=SETI@home, University of California, Berkeley |date=2020-03-07 |access-date=2026-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:Arecibo Observatory Aerial View.jpg|thumb|The Arecibo Observatory in Puerto Rico was SETI@home&#039;s primary data source throughout most of the project&#039;s history. Data was recorded onto magnetic tapes and physically mailed to Berkeley for processing.]]&lt;br /&gt;
SETI@home was the third large-scale use of volunteer computing over the Internet for research purposes, following the [[Great Internet Mersenne Prime Search]] (GIMPS), launched in 1996, and [[distributed.net]], launched in 1997.&amp;lt;ref name=&amp;quot;spacenews-10th&amp;quot;&amp;gt;{{cite web |url=https://spacenews.com/seti-at-home-celebrates-10th-anniversary/ |title=SETI@home Celebrates 10th Anniversary |publisher=SpaceNews |date=2009 |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; With over 5.2 million participants worldwide at its peak, it was the volunteer computing project with the most participants recorded to date,&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt; and was recognized by the 2008 edition of the &#039;&#039;[[Guinness World Records]]&#039;&#039; as the largest computation in history.&amp;lt;ref name=&amp;quot;guinness&amp;quot;&amp;gt;{{cite web |url=https://www.guinnessworldrecords.com/world-records/73215-largest-distributed-computing-project |title=Largest distributed computing project |publisher=Guinness World Records |access-date=2026-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Background and origins ==&lt;br /&gt;
&lt;br /&gt;
The concept for SETI@home emerged in 1995 when David Gedye, then a project manager at Starwave Corp., proposed using a virtual supercomputer composed of large numbers of Internet-connected computers to perform radio SETI analysis.&amp;lt;ref name=&amp;quot;cacm2002&amp;quot;&amp;gt;{{cite journal |last1=Anderson |first1=David P. |last2=Cobb |first2=Jeff |last3=Korpela |first3=Eric |last4=Lebofsky |first4=Matt |last5=Werthimer |first5=Dan |title=SETI@home: An Experiment in Public-Resource Computing |journal=Communications of the ACM |volume=45 |issue=11 |pages=56–61 |date=November 2002 |url=https://setiathome.berkeley.edu/sah_papers/cacm.php |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; Prior to SETI@home, radio SETI projects relied on special-purpose supercomputers located at the telescope facility itself.&amp;lt;ref name=&amp;quot;cacm2002&amp;quot;/&amp;gt; Gedye partnered with [[University of Washington]] astronomer Woody Sullivan, who suggested contacting Dan Werthimer, whose [[SERENDIP]] project was already conducting SETI observations at [[Arecibo Observatory|Arecibo]], and with David P. Anderson, a specialist in distributed computing at UC Berkeley&#039;s Space Sciences Laboratory.&amp;lt;ref name=&amp;quot;spacenews-10th&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project was initially funded with just $100,000 from [[The Planetary Society]] and [[Paramount Pictures]], and in its early years received donated server hardware from companies such as Sun Microsystems and Intel before transitioning to a purely donation-supported model.&amp;lt;ref name=&amp;quot;spacenews-10th&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SETI@home was publicly launched on May 17, 1999. Within the first week, nearly 300,000 computers were already processing data from Arecibo. Within a few months, more than one million volunteers had signed up across 223 countries.&amp;lt;ref name=&amp;quot;digitaltrends&amp;quot;&amp;gt;{{cite web |url=https://www.digitaltrends.com/cool-tech/setihome-citizen-scientists-extraterrestrial-intelligence/ |title=How SETI@home accelerated alien hunting with an army of armchair astronomers |publisher=Digital Trends |date=2020-09-09 |access-date=2026-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scientific goals ==&lt;br /&gt;
&lt;br /&gt;
SETI@home was established with two primary goals:&amp;lt;ref name=&amp;quot;cacm2002&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# To conduct useful scientific work in an observational analysis aimed at detecting intelligent life beyond [[Earth]].&lt;br /&gt;
# To demonstrate the viability and practicality of the &amp;quot;volunteer computing&amp;quot; concept.&lt;br /&gt;
&lt;br /&gt;
The second goal is considered to have succeeded fully: the [[Berkeley Open Infrastructure for Network Computing|BOINC]] platform, developed from technology pioneered by SETI@home, now supports dozens of computationally intensive scientific projects across many disciplines.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt; The first goal, as of 2026, has produced no conclusive evidence of extraterrestrial intelligence, though the project identified a number of scientifically interesting candidate signals for follow-up observation.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How it worked ==&lt;br /&gt;
&lt;br /&gt;
=== Data acquisition ===&lt;br /&gt;
&lt;br /&gt;
SETI@home collected observational data &amp;quot;piggyback&amp;quot; or &amp;quot;passively&amp;quot; while [[Arecibo Observatory|Arecibo]] (and later the [[Green Bank Telescope]]) were being used for other scientific programs.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt; At Arecibo, data was sampled and written to high-density [[Digital Linear Tape|DLT]] cartridges at a rate of approximately one 35&amp;amp;nbsp;GB tape per day. Because Arecibo lacked a broadband Internet connection, tapes were physically mailed to the SETI@home laboratory at UC Berkeley.&amp;lt;ref name=&amp;quot;cacm2002&amp;quot;/&amp;gt; Once received, the data was divided both in the [[time domain]] and [[frequency domain]] into work units of approximately 107 seconds in duration, each roughly 0.35&amp;amp;nbsp;[[megabyte|MB]] in size, overlapping in time but not in frequency.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Client software and screensaver ===&lt;br /&gt;
&lt;br /&gt;
Volunteers installed a free client program on their computers. When the machine was otherwise idle, the program downloaded a work unit from the SETI@home server, processed it, and returned the results automatically upon the next Internet connection. The software also featured an optional [[screensaver]] that displayed a real-time visualization of the signal analysis in progress, showing [[spectrogram]]s and signal-strength graphs.&amp;lt;ref name=&amp;quot;universetoday&amp;quot;&amp;gt;{{cite web |url=https://www.universetoday.com/articles/setihome-is-on-pause-unfortunately-its-not-because-theyve-discovered-aliens |title=SETI@home is on Pause |publisher=Universe Today |access-date=2026-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Signal detection algorithms ===&lt;br /&gt;
&lt;br /&gt;
The client software searched for five categories of signals that distinguish genuine candidates from background [[electromagnetic noise|noise]]:&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Spikes&#039;&#039;&#039; in [[power spectrum|power spectra]]&lt;br /&gt;
# &#039;&#039;&#039;Gaussians&#039;&#039;&#039;: rises and falls in transmission power that may represent a telescope beam&#039;s [[main lobe]] passing over a radio source&lt;br /&gt;
# &#039;&#039;&#039;Triplets&#039;&#039;&#039;: three power spikes in a row&lt;br /&gt;
# &#039;&#039;&#039;Pulses&#039;&#039;&#039;: repeating signals possibly representing narrowband digital-style transmissions&lt;br /&gt;
# &#039;&#039;&#039;Autocorrelations&#039;&#039;&#039;: matching signal waveforms using [[autocorrelation]]&lt;br /&gt;
&lt;br /&gt;
The core technique involved applying large numbers of [[discrete Fourier transform]]s (DFTs) at various [[chirp]] rates and durations, essentially equivalent to simultaneously tuning many narrow radio channels and looking for unexplained excess power. Formally, for a sampled time-series signal &amp;lt;math&amp;gt;x[n]&amp;lt;/math&amp;gt;, the discrete Fourier transform at frequency bin &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-i 2\pi k n / N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each work unit was analyzed across hundreds of frequency sub-bands and drift rates to account for the [[Doppler shift|Doppler frequency drift]] that would result from the relative motion between a transmitting planet and Earth.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
[[File:BOINC Manager Screenshot.jpg|left|thumb|SETI@home running in the BOINC Manager]]&lt;br /&gt;
&lt;br /&gt;
=== Work unit validation ===&lt;br /&gt;
&lt;br /&gt;
To guard against fraudulent or erroneous results, every work unit was sent to multiple computers (a practice called &amp;quot;initial replication,&amp;quot; typically set to a value of 2). Credit was only awarded once a minimum number of returned results agreed with one another (the &amp;quot;minimum quorum&amp;quot;). If disagreement occurred, additional copies of the work unit were distributed until a quorum was reached. The final credit granted to all machines returning the correct result was set to the lowest value claimed among them.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== From Classic to BOINC ==&lt;br /&gt;
&lt;br /&gt;
The initial software platform, known as &amp;quot;SETI@home Classic,&amp;quot; ran from May 17, 1999, to December 15, 2005. This program was capable only of running SETI@home tasks and required volunteers to manually download new software with each algorithm update.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 2005, the project transitioned to the [[Berkeley Open Infrastructure for Network Computing|BOINC]] platform, which had been developed by David P. Anderson with funding from the [[National Science Foundation]].&amp;lt;ref name=&amp;quot;setiathome-iopscience&amp;quot;&amp;gt;{{cite journal |last=Anderson |first=David P. |display-authors=et al. |title=SETI@home: Data Acquisition and Front-End Processing |journal=The Astronomical Journal |date=2025 |url=https://iopscience.iop.org/article/10.3847/1538-3881/ade5a7 |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; BOINC allowed algorithm updates without requiring user intervention, enabled volunteers to contribute to multiple scientific projects simultaneously, and opened the door to new types of signal analysis.&amp;lt;ref name=&amp;quot;transition&amp;quot;&amp;gt;{{cite web |url=https://setiathome.berkeley.edu/transition.php |title=SETI@home&#039;s transition to BOINC |publisher=SETI@home, UC Berkeley |access-date=2026-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SETI@home Enhanced ===&lt;br /&gt;
&lt;br /&gt;
On May 3, 2006, distribution of a new version called &amp;quot;SETI@home Enhanced&amp;quot; began. Taking advantage of increased desktop computing power since 1999, this version was approximately twice as sensitive to Gaussian signals and certain classes of pulsed signals as the original BOINC-based release. Application builds were also produced with processor-specific optimizations, especially for [[Intel]] instruction sets, allowing faster execution on compatible hardware.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPU acceleration ===&lt;br /&gt;
&lt;br /&gt;
With assistance from [[NVIDIA]], SETI@home developed a client application using the [[CUDA]] parallel computing platform. This GPU-accelerated version achieved speeds from 2 to 10 times faster than the CPU-only version, depending on hardware. For example, a GeForce GTX 280 was more than twice as fast as a high-end 3.2&amp;amp;nbsp;GHz Intel Core i7 965 CPU running the same analysis.&amp;lt;ref name=&amp;quot;nvidia-cuda&amp;quot;&amp;gt;{{cite web |url=https://grib.upf.edu/nvidia-cuda-technology-dramatically-advances-the-pace-of-scientific-research/ |title=NVIDIA CUDA Technology Dramatically Advances the Pace of Scientific Research |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; GPU support via CUDA was formally incorporated into SETI@home in 2015.&amp;lt;ref name=&amp;quot;wikipedia-seti&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AstroPulse ==&lt;br /&gt;
&lt;br /&gt;
AstroPulse was a companion application to SETI@home designed to search for short, broadband radio pulses in the same Arecibo data. Where SETI@home concentrated on narrowband continuous signals, AstroPulse used [[coherent dedispersion]] to search for brief but powerful bursts that could indicate rapidly rotating [[pulsar]]s, evaporating primordial [[black hole]]s, or previously unknown astrophysical phenomena, as well as another possible signature of extraterrestrial intelligence.&amp;lt;ref name=&amp;quot;planetary-astropulse&amp;quot;&amp;gt;{{cite web |url=https://www.planetary.org/articles/setiathome_20030925 |title=New and Improved SETI@home |publisher=The Planetary Society |date=2003-09-25 |access-date=2026-05-26}}&amp;lt;/ref&amp;gt; AstroPulse was one of the earliest test applications for BOINC. Beta testing of its final public release was completed in July 2008, and distribution of work units to qualifying machines began in&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1403</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1403"/>
		<updated>2026-05-28T03:42:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: Add SETI@home&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HERO BANNER&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero&amp;quot;&amp;gt;[[File:Banner.png|center|frameless|250x250px]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-title&amp;quot;&amp;gt;BOINC Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-subtitle&amp;quot;&amp;gt;The most comprehensive encyclopedia of BOINC volunteer computing projects on the web&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-btn&amp;quot;&amp;gt;&#039;&#039;&#039;[[BOINC projects|➜ Browse the Complete BOINC Projects Table]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-note&amp;quot;&amp;gt;The definitive, community-maintained table documenting every known active and retired BOINC project. The most comprehensive BOINC project list anywhere on the internet.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     QUICK-STATS RIBBON&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stats&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;51&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;334&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects listed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-coral&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;10+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Research fields&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;{{CURRENTYEAR}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Continuously updated&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     WHAT IS A BOINC PROJECT?&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-definition&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;bs-definition-label&amp;quot;&amp;gt;What is a BOINC project?&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A BOINC project&#039;&#039;&#039; is a website and associated server set up by an individual or group to distribute applications to [https://boinc.berkeley.edu/ BOINC] volunteer computing devices. Those devices deliberately attach to receive, process, and return results for further scientific research — at no cost to the researcher, and no cost to the volunteer beyond electricity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;BOINC&#039;&#039; stands for &#039;&#039;&#039;Berkeley Open Infrastructure for Network Computing&#039;&#039;&#039;, developed at the University of California, Berkeley. Any researcher can create a BOINC project; any person can donate their idle CPU or GPU time to one.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     PRIMARY CTA — TABLE LINK&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📋 The BOINC Projects Master Table&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;The [[BOINC projects|List of all BOINC projects]] table is the heart of this wiki — a structured, sortable reference covering project name, research field, institution, supported platforms, active status, GPU support, and more. It is the primary reason this resource exists and the most complete registry of BOINC projects available anywhere.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC projects|View the complete list of BOINC projects →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     LOCAL PROJECT PAGES&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== Local BOINC project wiki pages ==&lt;br /&gt;
&lt;br /&gt;
Each project below has its own dedicated article on this wiki. Projects are grouped by research domain and activity status.&lt;br /&gt;
&lt;br /&gt;
=== ✦ Active BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-teal mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔭 Astrophysics, Cosmology &amp;amp; Space&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Einstein@Home]] gravitational wave and pulsar detection&lt;br /&gt;
| * [[MilkyWay@home]] mapping the Milky Way&#039;s structure&lt;br /&gt;
|-&lt;br /&gt;
| * [[LHC@home]] CERN particle physics simulations&lt;br /&gt;
| * [[Gaia@home]] ESA Gaia mission data reduction&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[SPACIOUS@home]] space situational awareness&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-purple mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧬 Biology, Medicine &amp;amp; Biochemistry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[GPUGRID]] GPU-accelerated biomolecular simulations&lt;br /&gt;
| * [[TN-Grid]] neurological research&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rosetta@home]] protein structure prediction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-blue mw-collapsible&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔢 Mathematics, Number Theory &amp;amp; Cryptography&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|* [[Gerasim@home]] multi-project. number field sieve factorisation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| * [[PrimeGrid]] prime number searches across many sub-projects&lt;br /&gt;
| * [[NFS@Home]] number field sieve factorisation&lt;br /&gt;
|-&lt;br /&gt;
| * [[SRBase]] Sierpinski-Riesel base search&lt;br /&gt;
| * [[NumberFields@Home]] algebraic number field tables&lt;br /&gt;
|-&lt;br /&gt;
| * [[YAFU]] yet another factorisation utility&lt;br /&gt;
| * [[LODA]] integer sequence program synthesis&lt;br /&gt;
|-&lt;br /&gt;
| * [[Moo! Wrapper]] distributed.net RC5-72 wrapper&lt;br /&gt;
| * [[ODLK]] orthogonal diagonal Latin squares&lt;br /&gt;
|-&lt;br /&gt;
| * [[ODLK1]] ODLK variant 1&lt;br /&gt;
| * [[ODLK2025]] ODLK 2025 campaign&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rakesearch]] Latin square searches&lt;br /&gt;
| * [[SPT]] Subspace Polynomial Traversal&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-green mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🌍 Climate, Environment &amp;amp; Earth Sciences&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Climateprediction.net|climate&#039;&#039;prediction&#039;&#039;.net]] global climate ensemble modelling&lt;br /&gt;
| * [[Asteroids@home]] asteroid orbit determination&lt;br /&gt;
|-&lt;br /&gt;
| * [[Radioactive@home]] background radiation monitoring&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🤖 Artificial Intelligence, Computing &amp;amp; Infrastructure&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[IThena.Computational]] computational measurement network&lt;br /&gt;
| * [[IThena.Measurements]] network performance metrics&lt;br /&gt;
|-&lt;br /&gt;
| * [[BOINC Central]] BOINC infrastructure project&lt;br /&gt;
| * [[WUProp@Home]] work unit propagation statistics&lt;br /&gt;
|-&lt;br /&gt;
|* [[Yoyo@home]] scientific and mathematical subprojects&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-coral mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧪 Physics, Chemistry &amp;amp; Materials Science&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[USPEX@HOME]] crystal structure prediction&lt;br /&gt;
| * [[World Community Grid]] multi-domain humanitarian research&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🕹️ Community, Recreation &amp;amp; Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Minecraft@Home]] Minecraft world-seed research&lt;br /&gt;
| * [[PRIVATE GFN SERVER]] private Generalized Fermat Number server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-pink mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧫 Test &amp;amp; Development Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects serve as active testing and development platforms for BOINC software and infrastructure rather than primary research goals.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[Cpdnboinc dev]] cpdn development and testing server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Paused BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏯ Paused projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects are temporarily suspended but have not formally closed. Work may resume in future.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[DENIS@home]] cardiac electrophysiology research, currently paused&lt;br /&gt;
|* [[SiDock@home]] drug candidate screening&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for the most current status of all projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Retired &amp;amp; inactive BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏸ Retired projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects have suspended operations or are no longer accepting new work units. Their pages are preserved here for historical reference and research continuity.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Albert@Home]] developement site for Einstein@Home&lt;br /&gt;
| * [[Amicable Numbers]] amicable pair enumeration&lt;br /&gt;
|-&lt;br /&gt;
| * [[Axiom Distributed AI]] distributed AI model training&lt;br /&gt;
| * [[BlackHoles@Home]] black hole binary merger waveforms&lt;br /&gt;
|-&lt;br /&gt;
| * [[Data freezer]] long-term data archival research&lt;br /&gt;
| * [[GoofyxGrid@Home NCI]] non-covalent interaction analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[nanoHUB@Home]] nanotechnology simulation&lt;br /&gt;
| * [[Parlea]] RNA 3D structure motif analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[RALPH@home]] developement site for Rosetta@home&lt;br /&gt;
| * [[Ramanujan Machine]] conjectured mathematical identities&lt;br /&gt;
|-&lt;br /&gt;
| * [[Universe@Home]] stellar evolution modelling&lt;br /&gt;
| * [[WEP-M+2 Project]] Mersenne-related prime search&lt;br /&gt;
|-&lt;br /&gt;
|[[RNA World (beta)]] RNA folding and molecular evolution&lt;br /&gt;
|* [[SETI@home]] search for extraterrestrial intelligence&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for definitive active/inactive status on all documented projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HOW TO PARTICIPATE&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== How to participate in BOINC projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-steps&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;1. Download BOINC&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Get the free BOINC client from [https://boinc.berkeley.edu/download.php boinc.berkeley.edu]. Available for Windows, macOS, Linux, and Android.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;2. Choose a project&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Browse the [[BOINC projects|complete BOINC projects list]] on this wiki. Filter by research field, platform support, or GPU availability.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;3. Attach &amp;amp; contribute&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Register on the project&#039;s website, attach via the BOINC client, and your idle computer begins processing work units automatically.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     ABOUT THIS WIKI&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;BOINC projects&#039;&#039; MediaWiki is researched, written, and maintained by [https://boincsynergy.ca/ BOINC Synergy] — a volunteer initiative dedicated to documenting the global BOINC ecosystem. The [[BOINC projects|projects table]] is considered the flagship resource: a single, structured, continuously-updated registry of every known BOINC project, past and present.&lt;br /&gt;
&lt;br /&gt;
Corrections, additions, and edits are welcome. If you know of a BOINC project not yet listed, please use the talk page or contact [https://boincsynergy.ca/ BOINC Synergy] directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-footer-bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;&#039;&#039;BOINC projects&#039;&#039;&#039;&#039;&#039; MediaWiki is developed by [https://boincsynergy.ca/ BOINC Synergy] &amp;amp;nbsp;·&amp;amp;nbsp; Content reflects the state of the BOINC ecosystem as of {{CURRENTYEAR}} &amp;amp;nbsp;·&amp;amp;nbsp; [[BOINC projects|Full projects table →]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Distributed computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1402</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1402"/>
		<updated>2026-05-28T03:37:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HERO BANNER&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero&amp;quot;&amp;gt;[[File:Banner.png|center|frameless|250x250px]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-title&amp;quot;&amp;gt;BOINC Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-subtitle&amp;quot;&amp;gt;The most comprehensive encyclopedia of BOINC volunteer computing projects on the web&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-btn&amp;quot;&amp;gt;&#039;&#039;&#039;[[BOINC projects|➜ Browse the Complete BOINC Projects Table]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-note&amp;quot;&amp;gt;The definitive, community-maintained table documenting every known active and retired BOINC project. The most comprehensive BOINC project list anywhere on the internet.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     QUICK-STATS RIBBON&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stats&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;50&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;334&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects listed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-coral&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;10+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Research fields&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;{{CURRENTYEAR}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Continuously updated&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     WHAT IS A BOINC PROJECT?&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-definition&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;bs-definition-label&amp;quot;&amp;gt;What is a BOINC project?&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A BOINC project&#039;&#039;&#039; is a website and associated server set up by an individual or group to distribute applications to [https://boinc.berkeley.edu/ BOINC] volunteer computing devices. Those devices deliberately attach to receive, process, and return results for further scientific research — at no cost to the researcher, and no cost to the volunteer beyond electricity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;BOINC&#039;&#039; stands for &#039;&#039;&#039;Berkeley Open Infrastructure for Network Computing&#039;&#039;&#039;, developed at the University of California, Berkeley. Any researcher can create a BOINC project; any person can donate their idle CPU or GPU time to one.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     PRIMARY CTA — TABLE LINK&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📋 The BOINC Projects Master Table&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;The [[BOINC projects|List of all BOINC projects]] table is the heart of this wiki — a structured, sortable reference covering project name, research field, institution, supported platforms, active status, GPU support, and more. It is the primary reason this resource exists and the most complete registry of BOINC projects available anywhere.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC projects|View the complete list of BOINC projects →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     LOCAL PROJECT PAGES&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== Local BOINC project wiki pages ==&lt;br /&gt;
&lt;br /&gt;
Each project below has its own dedicated article on this wiki. Projects are grouped by research domain and activity status.&lt;br /&gt;
&lt;br /&gt;
=== ✦ Active BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-teal mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔭 Astrophysics, Cosmology &amp;amp; Space&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Einstein@Home]] gravitational wave and pulsar detection&lt;br /&gt;
| * [[MilkyWay@home]] mapping the Milky Way&#039;s structure&lt;br /&gt;
|-&lt;br /&gt;
| * [[LHC@home]] CERN particle physics simulations&lt;br /&gt;
| * [[Gaia@home]] ESA Gaia mission data reduction&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[SPACIOUS@home]] space situational awareness&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-purple mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧬 Biology, Medicine &amp;amp; Biochemistry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[GPUGRID]] GPU-accelerated biomolecular simulations&lt;br /&gt;
| * [[TN-Grid]] neurological research&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rosetta@home]] protein structure prediction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-blue mw-collapsible&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔢 Mathematics, Number Theory &amp;amp; Cryptography&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|* [[Gerasim@home]] multi-project. number field sieve factorisation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| * [[PrimeGrid]] prime number searches across many sub-projects&lt;br /&gt;
| * [[NFS@Home]] number field sieve factorisation&lt;br /&gt;
|-&lt;br /&gt;
| * [[SRBase]] Sierpinski-Riesel base search&lt;br /&gt;
| * [[NumberFields@Home]] algebraic number field tables&lt;br /&gt;
|-&lt;br /&gt;
| * [[YAFU]] yet another factorisation utility&lt;br /&gt;
| * [[LODA]] integer sequence program synthesis&lt;br /&gt;
|-&lt;br /&gt;
| * [[Moo! Wrapper]] distributed.net RC5-72 wrapper&lt;br /&gt;
| * [[ODLK]] orthogonal diagonal Latin squares&lt;br /&gt;
|-&lt;br /&gt;
| * [[ODLK1]] ODLK variant 1&lt;br /&gt;
| * [[ODLK2025]] ODLK 2025 campaign&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rakesearch]] Latin square searches&lt;br /&gt;
| * [[SPT]] Subspace Polynomial Traversal&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-green mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🌍 Climate, Environment &amp;amp; Earth Sciences&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Climateprediction.net|climate&#039;&#039;prediction&#039;&#039;.net]] global climate ensemble modelling&lt;br /&gt;
| * [[Asteroids@home]] asteroid orbit determination&lt;br /&gt;
|-&lt;br /&gt;
| * [[Radioactive@home]] background radiation monitoring&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🤖 Artificial Intelligence, Computing &amp;amp; Infrastructure&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[IThena.Computational]] computational measurement network&lt;br /&gt;
| * [[IThena.Measurements]] network performance metrics&lt;br /&gt;
|-&lt;br /&gt;
| * [[BOINC Central]] BOINC infrastructure project&lt;br /&gt;
| * [[WUProp@Home]] work unit propagation statistics&lt;br /&gt;
|-&lt;br /&gt;
|* [[Yoyo@home]] scientific and mathematical subprojects&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-coral mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧪 Physics, Chemistry &amp;amp; Materials Science&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[USPEX@HOME]] crystal structure prediction&lt;br /&gt;
| * [[World Community Grid]] multi-domain humanitarian research&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🕹️ Community, Recreation &amp;amp; Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Minecraft@Home]] Minecraft world-seed research&lt;br /&gt;
| * [[PRIVATE GFN SERVER]] private Generalized Fermat Number server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-pink mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧫 Test &amp;amp; Development Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects serve as active testing and development platforms for BOINC software and infrastructure rather than primary research goals.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[Cpdnboinc dev]] cpdn development and testing server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Paused BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏯ Paused projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects are temporarily suspended but have not formally closed. Work may resume in future.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[DENIS@home]] cardiac electrophysiology research, currently paused&lt;br /&gt;
|* [[SiDock@home]] drug candidate screening&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for the most current status of all projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Retired &amp;amp; inactive BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏸ Retired projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects have suspended operations or are no longer accepting new work units. Their pages are preserved here for historical reference and research continuity.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Albert@Home]] developement site for Einstein@Home&lt;br /&gt;
| * [[Amicable Numbers]] amicable pair enumeration&lt;br /&gt;
|-&lt;br /&gt;
| * [[Axiom Distributed AI]] distributed AI model training&lt;br /&gt;
| * [[BlackHoles@Home]] black hole binary merger waveforms&lt;br /&gt;
|-&lt;br /&gt;
| * [[Data freezer]] long-term data archival research&lt;br /&gt;
| * [[GoofyxGrid@Home NCI]] non-covalent interaction analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[nanoHUB@Home]] nanotechnology simulation&lt;br /&gt;
| * [[Parlea]] RNA 3D structure motif analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[RALPH@home]] developement site for Rosetta@home&lt;br /&gt;
| * [[Ramanujan Machine]] conjectured mathematical identities&lt;br /&gt;
|-&lt;br /&gt;
| * [[Universe@Home]] stellar evolution modelling&lt;br /&gt;
| * [[WEP-M+2 Project]] Mersenne-related prime search&lt;br /&gt;
|-&lt;br /&gt;
|[[RNA World (beta)]] RNA folding and molecular evolution&lt;br /&gt;
|* [[SETI@home]] search for extraterrestrial intelligence&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for definitive active/inactive status on all documented projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HOW TO PARTICIPATE&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== How to participate in BOINC projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-steps&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;1. Download BOINC&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Get the free BOINC client from [https://boinc.berkeley.edu/download.php boinc.berkeley.edu]. Available for Windows, macOS, Linux, and Android.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;2. Choose a project&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Browse the [[BOINC projects|complete BOINC projects list]] on this wiki. Filter by research field, platform support, or GPU availability.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;3. Attach &amp;amp; contribute&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Register on the project&#039;s website, attach via the BOINC client, and your idle computer begins processing work units automatically.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     ABOUT THIS WIKI&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;BOINC projects&#039;&#039; MediaWiki is researched, written, and maintained by [https://boincsynergy.ca/ BOINC Synergy] — a volunteer initiative dedicated to documenting the global BOINC ecosystem. The [[BOINC projects|projects table]] is considered the flagship resource: a single, structured, continuously-updated registry of every known BOINC project, past and present.&lt;br /&gt;
&lt;br /&gt;
Corrections, additions, and edits are welcome. If you know of a BOINC project not yet listed, please use the talk page or contact [https://boincsynergy.ca/ BOINC Synergy] directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-footer-bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;&#039;&#039;BOINC projects&#039;&#039;&#039;&#039;&#039; MediaWiki is developed by [https://boincsynergy.ca/ BOINC Synergy] &amp;amp;nbsp;·&amp;amp;nbsp; Content reflects the state of the BOINC ecosystem as of {{CURRENTYEAR}} &amp;amp;nbsp;·&amp;amp;nbsp; [[BOINC projects|Full projects table →]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Distributed computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=ODLK1&amp;diff=1401</id>
		<title>ODLK1</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=ODLK1&amp;diff=1401"/>
		<updated>2026-05-28T03:22:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = ODLK1&lt;br /&gt;
| logo                 = ODLK1.png&lt;br /&gt;
| logo caption         = ODLK1 project logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Progger; Stefano Tognon (ice00)&lt;br /&gt;
| author               = Natalia Makarova&lt;br /&gt;
| maintainer           = Progger; Stefano Tognon (ice00); Reese&lt;br /&gt;
| released             = November 2017&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux, FreeBSD, ARM64 (Linux)&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 22 May 2026&lt;br /&gt;
| active users         = 562&lt;br /&gt;
| total users          = 3885&lt;br /&gt;
| active hosts         = 2687&lt;br /&gt;
| total hosts          = 112444&lt;br /&gt;
| average performance  = ~18,127 GigaFLOPS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://boinc.multi-pool.info/latinsquares/}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://boinc.multi-pool.info/latinsquares/ &#039;&#039;&#039;&#039;&#039;ODLK1&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer distributed computing]]&#039;&#039;&#039;&#039;&#039; project that needs your help to investigate diagonal Latin squares.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
BOINC project ODLK1 continues to solve the problem of BOINC project ODLK. The project generates a database of [[wikipedia:Canonical form|canonical forms]] (CF) of [[wikipedia:Latin square|diagonal Latin squares]] (DLS) of order 10 that possess orthogonal diagonal Latin squares (ODLS). In combinatorics, a Latin square of order &#039;&#039;n&#039;&#039; is an &#039;&#039;n&#039;&#039; × &#039;&#039;n&#039;&#039; array in which each of &#039;&#039;n&#039;&#039; different symbols appears exactly once in each row and once in each column. A &#039;&#039;diagonal&#039;&#039; Latin square additionally requires that both main diagonals also contain each symbol exactly once.&amp;lt;ref&amp;gt;{{cite web|url=https://en.wikipedia.org/wiki/Latin_square|title=Latin square|publisher=Wikipedia|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; Two such squares are &#039;&#039;orthogonal&#039;&#039; if, when superimposed, every ordered pair of symbols appears exactly once.&amp;lt;ref&amp;gt;{{cite web|url=https://en.wikipedia.org/wiki/Latin_square|title=Latin square – Orthogonality|publisher=Wikipedia|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of the project is a complete enumeration of canonical forms of order-10 DLS that have at least one orthogonal partner, contributing to an open problem in combinatorial mathematics with connections to [[wikipedia:Magic square|magic square]] construction, [[wikipedia:Sudoku|Sudoku]]-like puzzles, statistical experimental design, and error-correcting codes.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Latin squares and orthogonality ===&lt;br /&gt;
The study of Latin squares dates to [[wikipedia:Leonhard Euler|Leonhard Euler]] in the 18th century. Euler conjectured that orthogonal Latin squares of certain orders could not exist; this conjecture was famously disproved for orders greater than 6 in 1960.&amp;lt;ref&amp;gt;{{cite web|url=https://en.wikipedia.org/wiki/Latin_square|title=Latin square|publisher=Wikipedia|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; The additional symmetry constraints imposed by the &#039;&#039;diagonal&#039;&#039; condition make the orthogonality question significantly harder at order 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A pair of diagonal Latin squares of order 10 are called an &#039;&#039;orthogonal pair&#039;&#039; (or MODLS — Mutually Orthogonal Diagonal Latin Squares) when the 100 cells of one, overlaid on the other, produce all 100 distinct ordered pairs of symbols. Such pairs are extremely rare and were unknown until 1992. A &#039;&#039;canonical form&#039;&#039; (CF) is a standardised representative of an equivalence class of squares related by symmetry transformations; reducing each square to its canonical form allows researchers to count and catalogue truly distinct configurations without duplication.&lt;br /&gt;
&lt;br /&gt;
=== Foundational result (1992) ===&lt;br /&gt;
The first three orthogonal pairs of diagonal Latin squares of order 10 were found in 1992 and published in the paper &amp;quot;Completion of the Spectrum of Orthogonal Diagonal Latin Squares&amp;quot; by J. W. Brown, F. Cherry, L. Most, E. Parker, and W. D. Wallis.&amp;lt;ref&amp;gt;{{cite book|author=Brown, J. W.; Cherry, F.; Most, L.; Parker, E.; Wallis, W. D.|chapter=Completion of the Spectrum of Orthogonal Diagonal Latin Squares|title=Lecture Notes in Pure and Applied Mathematics|volume=139|pages=43–49|year=1992|publisher=Marcel Dekker}}&amp;lt;/ref&amp;gt; This result completed the proof that orthogonal diagonal Latin squares of every order except 2 and 6 exist, but left open the question of how many such pairs exist at order 10 and what their full structure looks like.&lt;br /&gt;
&lt;br /&gt;
=== SAT@home predecessor project (2012–2016) ===&lt;br /&gt;
From 2012 to 2016 the scientific BOINC project &#039;&#039;&#039;SAT@home&#039;&#039;&#039; searched for new orthogonal pairs of diagonal Latin squares of order 10 using [[wikipedia:Boolean satisfiability problem|Boolean satisfiability]] (SAT) solving techniques.&amp;lt;ref&amp;gt;{{cite web|url=https://www.overclock.net/threads/new-project-odlk1-latin-squares.1642994/|title=New Project: ODLK1 [Latin Squares]|website=Overclock.net|date=2017-11-28|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; That project discovered 77 unique orthogonal pairs, yielding 154 unique canonical forms of ODLS. The solutions from SAT@home were incorporated into the ODLK1 database as a starting point.&lt;br /&gt;
&lt;br /&gt;
=== ODLK — the predecessor BOINC project (2017–present) ===&lt;br /&gt;
The original BOINC project &#039;&#039;&#039;ODLK&#039;&#039;&#039; was launched on 19 May 2017 by Natalia Makarova at &amp;lt;code&amp;gt;https://boinc.progger.info/odlk/&amp;lt;/code&amp;gt;, hosted by Progger (Czech Republic).&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=11837|title=Thread: BOINC project ODLK|publisher=BOINC message boards|date=2017-09-11|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; The ODLK project has celebrated successive anniversaries; a post from May 2024 marked its seventh year of continuous operation.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.progger.info/odlk/forum_forum.php?id=1|title=Message boards – News – ОДЛК|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; The complete database of canonical forms found by the ODLK project from 2017 through January 2022 was published by Natalia Makarova.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.progger.info/odlk/forum_forum.php?id=1|title=Message boards – Полная БД КФ ОДЛК 2017–2021|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
ODLK1 (also known as &#039;&#039;&#039;LatinSquares&#039;&#039;&#039;) was announced in December 2017 as a Russian-Italian continuation of the ODLK project. On 7 December 2017, Natalia Makarova posted on the BOINC message boards: &amp;quot;Welcome to the Russian-Italian project ODLK1!&amp;quot; with the project hosted by Stefano Tognon (ice00) on the multi-pool.info infrastructure.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=11837|title=Thread: BOINC project ODLK|publisher=BOINC message boards|date=2017-12-07|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; The project runs alongside its parent, with different server infrastructure, allowing volunteers to contribute to both projects in parallel.&lt;br /&gt;
&lt;br /&gt;
The first application, &#039;&#039;&#039;odlk3@home&#039;&#039;&#039;, became available on Linux (x86-64) on 28 October 2017, with Windows, Linux x86, and FreeBSD versions added on 6 November 2017. A second application, &#039;&#039;&#039;odlkmax@home&#039;&#039;&#039;, was added on 26 December 2017.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/apps.php|title=Applications – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; An ARM64 Linux build of odlk3@home was added on 30 December 2024, showing continued active development and support for modern hardware.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/apps.php|title=Applications – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An early progress report covering November 2017 through February 2020 showed the project had processed approximately 8,993,278 total &amp;quot;mate&amp;quot; (DLS with orthogonal partner) squares.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.progger.info/odlk/old_news.php|title=News archive – ОДЛК|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In January 2026 the project migrated to upgraded server hardware; as Stefano Tognon noted, the changeover was handled within the existing virtual machine, so volunteers noticed no interruption except for a brief downtime of approximately one hour.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/|title=ODLK1 – User of the Day / News|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In February 2025 a new related project, &#039;&#039;&#039;ODLK2025&#039;&#039;&#039;, was launched separately at &amp;lt;code&amp;gt;https://boinc.mak.termit.me/odlk2025/&amp;lt;/code&amp;gt;, indicating ongoing community interest in extending this family of research.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.tbrada.eu/|title=T. Brada Experimental Grid – news|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project team / Sponsor ==&lt;br /&gt;
* &#039;&#039;&#039;Natalia Makarova&#039;&#039;&#039; — Scientific author and research lead (Russia). Originator of both the ODLK and ODLK1 projects and author of numerous posts to the OEIS documenting results. Contact: natalimak1@yandex.ru.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.tbrada.eu/|title=T. Brada Experimental Grid|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Progger&#039;&#039;&#039; — Co-maintainer (Czech Republic); responsible for server administration on the parent ODLK project and ongoing liaison with the ODLK1 infrastructure.&lt;br /&gt;
* &#039;&#039;&#039;Stefano Tognon (ice00)&#039;&#039;&#039; — Infrastructure host (Italy); operates the multi-pool.info BOINC hosting environment on which ODLK1 runs, and manages server hardware upgrades.&lt;br /&gt;
* &#039;&#039;&#039;Reese&#039;&#039;&#039; — Credited co-maintainer, listed in the project copyright since 2024.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/server_status.php|title=Project status – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
&lt;br /&gt;
[[File:BOINC_logo.png|right|150px|frameless]]&lt;br /&gt;
&lt;br /&gt;
The project currently runs two CPU-only applications, both at version 1.00:&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/apps.php|title=Applications – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== odlk3@home ===&lt;br /&gt;
Searches for canonical forms of order-10 DLS using the &#039;&#039;odlk3&#039;&#039; algorithm. Typical task runtime averages 0.37 hours (ranging 0 to ~58 hours). Supported platforms and benchmark performance:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! Avg. GigaFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86-64 || 4,777&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86-64 || 3,764&lt;br /&gt;
|-&lt;br /&gt;
| Linux ARM64 || 431&lt;br /&gt;
|-&lt;br /&gt;
| FreeBSD x86-64 || 448&lt;br /&gt;
|-&lt;br /&gt;
| Windows x86 / Linux x86 / FreeBSD x86 || 6–20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== odlkmax@home ===&lt;br /&gt;
Focuses on finding DLS of order 10 with the maximum possible number of orthogonal partners. Typical task runtime averages 0.31 hours (ranging 0.01 to ~42 hours). Supported on Windows (x86, x86-64), Linux (x86, x86-64), and FreeBSD (x86, x86-64). Average computing power up to ~4,755 GigaFLOPS on Windows x86-64.&lt;br /&gt;
&lt;br /&gt;
Both applications are purely CPU-based; no GPU acceleration is offered. Task deadlines are seven days; checkpointing is not supported. Recommended RAM per task is approximately 10 MB.&lt;br /&gt;
&lt;br /&gt;
== Server status (as of 22 May 2026) ==&lt;br /&gt;
&lt;br /&gt;
All server components — scheduler, feeder, transitioner, file deleter, db_purge, validators, assimilators, and work generators for both applications — were confirmed running.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/server_status.php|title=Project status – ODLK1|date=2026-05-22|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Metric !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 434,860&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 195,221&lt;br /&gt;
|-&lt;br /&gt;
| Workunits awaiting validation || 0&lt;br /&gt;
|-&lt;br /&gt;
| Workunits awaiting assimilation || 5&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 562&lt;br /&gt;
|-&lt;br /&gt;
| Total registered users (with credit) || 3,885&lt;br /&gt;
|-&lt;br /&gt;
| New users in past 24 hours || 70&lt;br /&gt;
|-&lt;br /&gt;
| Hosts with recent credit || 2,687&lt;br /&gt;
|-&lt;br /&gt;
| Total registered hosts (with credit) || 112,444&lt;br /&gt;
|-&lt;br /&gt;
| New hosts in past 24 hours || 21&lt;br /&gt;
|-&lt;br /&gt;
| Current performance || ~18,127 GigaFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Server software version || 1.1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tasks by application (22 May 2026) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Application !! Unsent !! In progress !! Avg. runtime (hours) !! Active users (last 24 h)&lt;br /&gt;
|-&lt;br /&gt;
| odlk3@home || 197,325 || 101,903 || 0.37 (0 – 57.95) || 287&lt;br /&gt;
|-&lt;br /&gt;
| odlkmax@home || 237,536 || 93,317 || 0.31 (0.01 – 42.05) || 274&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scientific results ==&lt;br /&gt;
&lt;br /&gt;
The primary output of the project is the growing database of canonical forms of order-10 DLS with orthogonal partners, hosted publicly on Yandex Disk:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;https://disk.yandex.ru/d/RsHtIf6bCWV8xg&#039;&#039;&#039;&lt;br /&gt;
** Application &#039;&#039;&#039;odlk3&#039;&#039;&#039;: &#039;&#039;&#039;350,094&#039;&#039;&#039; CF ODLK discovered&lt;br /&gt;
** Application &#039;&#039;&#039;odlkmax&#039;&#039;&#039;: &#039;&#039;&#039;342,181&#039;&#039;&#039; CF ODLK discovered&lt;br /&gt;
&lt;br /&gt;
Together these represent a substantial expansion beyond the 154 canonical forms known from SAT@home in 2016, and constitute one of the most comprehensive datasets on orthogonal diagonal Latin squares of order 10 ever compiled.&lt;br /&gt;
&lt;br /&gt;
The [[wikipedia:On-Line Encyclopedia of Integer Sequences|OEIS]] contains multiple sequences informed by research from the ODLK/ODLK1 community, including entries on the number of normalised ODLS derivable from a single DLS and the enumeration of DLS of small orders by various combinatorial properties.&amp;lt;ref&amp;gt;{{cite web|url=https://oeis.org/A287695|title=A287695 – OEIS|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Community and teams ==&lt;br /&gt;
&lt;br /&gt;
ODLK1 is an internationally participated project. The top contributing teams as of May 2026 by recent average credit are:&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/top_teams.php|title=Top teams – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Rank !! Team !! Members !! Recent avg. credit !! Total credit&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Gridcoin || 1,256 || 1,562,924 || 4,356,244,831&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Ars Technica || 9 || 239,238 || 37,519,798&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Ukraine || 19 || 172,136 || 29,620,446&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Czech National Team || 57 || 70,942 || 75,664,807&lt;br /&gt;
|-&lt;br /&gt;
| 5 || XtremeSystems || 14 || 50,690 || 42,620,371&lt;br /&gt;
|-&lt;br /&gt;
| 6 || UK BOINC Team || 30 || 44,371 || 38,450,478&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Sicituradastra. || 12 || 42,956 || 19,377,308&lt;br /&gt;
|-&lt;br /&gt;
| 8 || BOINC@AUSTRALIA || 28 || 40,745 || 63,603,287&lt;br /&gt;
|-&lt;br /&gt;
| 9 || L&#039;Alliance Francophone || 119 || 39,321 || 90,119,379&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Rechenkraft.net || 44 || 37,467 || 50,012,989&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The dominant team, [[wikipedia:Gridcoin|Gridcoin]], is an open-source cryptocurrency project that rewards BOINC volunteers with GRC tokens in proportion to their computing contribution across whitelisted projects.&amp;lt;ref&amp;gt;{{cite web|url=https://gridcoin.us/|title=Gridcoin – Rewarding Scientific Distributed Computing|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt; ODLK1 is included on the Gridcoin whitelist, meaning participants can earn Gridcoin cryptocurrency while contributing to the project&#039;s mathematical research.&lt;br /&gt;
&lt;br /&gt;
=== Top individual contributors (by recent average credit, May 2026) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Rank !! Participant !! Country !! Recent avg. credit !! Member since&lt;br /&gt;
|-&lt;br /&gt;
| 1 || macgeyer || France || 426,078 || Jan 2018&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Science United || — || 220,239 || Feb 2019&lt;br /&gt;
|-&lt;br /&gt;
| 3 || whizbang || — || 207,001 || Jul 2025&lt;br /&gt;
|-&lt;br /&gt;
| 4 || grcpool.5 || International || 193,694 || Dec 2022&lt;br /&gt;
|-&lt;br /&gt;
| 5 || KetamiNO [YouTube] || Ukraine || 167,041 || Jan 2019&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/top_users.php|title=Top participants – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The earliest registered active participant, &amp;quot;klepel&amp;quot; (rank 19), joined on 11 January 2018 — just weeks after the project opened — and continues to contribute as of May 2026.&lt;br /&gt;
&lt;br /&gt;
== Related scientific publications ==&lt;br /&gt;
&lt;br /&gt;
The broader research programme on diagonal Latin squares and their orthogonality, which directly motivates ODLK1, has produced a significant body of peer-reviewed literature. Key papers include:&lt;br /&gt;
&lt;br /&gt;
* {{cite journal|author=Vatutin, E. I.; Zaikin, O. S.; Kochemazov, S. E.; Valyaev, S. Yu.|year=2017|title=Using Volunteer Computing to Study Some Features of Diagonal Latin Squares|journal=Open Engineering|volume=7|issue=1|pages=453–460|doi=10.1515/eng-2017-0052}} — Presents algorithms for enumerating transversals of DLS and the reduction of the order-10 ODLS search to a SAT problem, with large-scale experiments in Gerasim@home and SAT@home.&amp;lt;ref&amp;gt;{{cite web|url=https://www.degruyterbrill.com/document/doi/10.1515/eng-2017-0052/html|title=Using Volunteer Computing to Study Some Features of Diagonal Latin Squares|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite book|author=Vatutin, E. I.; Kochemazov, S. E.; Zaikin, O. S.|year=2017|chapter=Applying Volunteer and Parallel Computing for Enumerating Diagonal Latin Squares of Order 9|title=Communications in Computer and Information Science|volume=753|pages=114–129|publisher=Springer, Cham|doi=10.1007/978-3-319-67035-5_9}} — First complete enumeration of all DLS of order 9, a previously unsolved problem, using the Gerasim@home BOINC project.&amp;lt;ref&amp;gt;{{cite web|url=https://link.springer.com/chapter/10.1007/978-3-319-67035-5_9|title=Applying Volunteer and Parallel Computing for Enumerating DLS of Order 9|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite book|author=Vatutin, E.; Belyshev, A.; Kochemazov, S.; Zaikin, O.; Nikitina, N.|year=2019|chapter=Enumeration of Isotopy Classes of Diagonal Latin Squares of Small Order Using Volunteer Computing|title=Communications in Computer and Information Science (RuSCDays 2018)|volume=965|pages=578–586|publisher=Springer, Cham|doi=10.1007/978-3-030-05807-4_49}}&amp;lt;ref&amp;gt;{{cite web|url=https://link.springer.com/chapter/10.1007/978-3-030-05807-4_49|title=Enumeration of Isotopy Classes of DLS|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite book|author=Vatutin, E. I.; Kochemazov, S. E.; Zaikin, O. S.|year=2020|chapter=Evaluation of Efficiency of Using Simple Transformations When Searching for Orthogonal Diagonal Latin Squares of Order 10|title=Supercomputing (RuSCDays 2020)|publisher=Springer, Cham|doi=10.1007/978-3-030-66895-2_9}}&amp;lt;ref&amp;gt;{{cite web|url=https://link.springer.com/chapter/10.1007/978-3-030-66895-2_9|title=Evaluation of Efficiency… Order 10|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite journal|author=Zaikin, O.; Zhuravlev, A.; Kochemazov, S.; Vatutin, E.|year=2016|title=On the Construction of Triples of Diagonal Latin Squares of Order 10|journal=Electronic Notes in Discrete Mathematics|volume=54|pages=307–312|doi=10.1016/j.endm.2016.09.053}}&amp;lt;ref&amp;gt;{{cite web|url=https://www.sciencedirect.com/science/article/abs/pii/S1571065316301470|title=On the Construction of Triples of DLS of Order 10|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite book|author=Vatutin, E.; Belyshev, A.; Nikitina, N.; Manzuk, M.; Albertian, A.; Kurochkin, I.; Kripachev, A.; Pykhtin, A.|year=2023|chapter=Diagonalization and Canonization of Latin Squares|title=Supercomputing (RuSCDays 2023)|series=LNCS|volume=14389|pages=48–61|publisher=Springer, Cham}}&amp;lt;ref&amp;gt;{{cite web|url=https://oeis.org/A287648|title=A287648 – OEIS (references)|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* {{cite book|author=Brown, J. W.; Cherry, F.; Most, L.; Parker, E.; Wallis, W. D.|year=1992|chapter=Completion of the Spectrum of Orthogonal Diagonal Latin Squares|title=Lecture Notes in Pure and Applied Mathematics|volume=139|pages=43–49|publisher=Marcel Dekker}} — The foundational 1992 paper establishing the very first orthogonal pairs of DLS of order 10.&amp;lt;ref&amp;gt;{{cite web|url=https://www.overclock.net/threads/new-project-odlk1-latin-squares.1642994/|title=New Project: ODLK1 – project background|website=Overclock.net|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participating ==&lt;br /&gt;
&lt;br /&gt;
To contribute computing power to ODLK1, download and install [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] and attach to the project at:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;code&amp;gt;https://boinc.multi-pool.info/latinsquares/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is no GPU requirement. Tasks run on idle CPU time and typically complete in well under an hour. Both Windows and Linux are fully supported; FreeBSD builds and an ARM64 Linux build for odlk3@home are also available, making the project compatible with single-board computers such as the Raspberry Pi 4 and later.&lt;br /&gt;
&lt;br /&gt;
Participants may also join a team to compete on the credit leaderboards, or — if they run BOINC for multiple projects — use [[wikipedia:Gridcoin|Gridcoin]] to earn cryptocurrency rewards for their combined contribution, as the project is whitelisted on the Gridcoin network.&amp;lt;ref&amp;gt;{{cite web|url=https://gridcoin.us/|title=Gridcoin – Rewarding Scientific Distributed Computing|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Statistics for ODLK1 are tracked on external aggregators including [http://boincstats.com/ BOINCstats], [http://www.free-dc.org Free-DC], and [http://www.formula-boinc.org/ Formula BOINC].&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.multi-pool.info/latinsquares/stats.php|title=Credit statistics – ODLK1|accessdate=2026-05-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Latin square|Latin square]]&lt;br /&gt;
* [[wikipedia:Mutually orthogonal Latin squares|Mutually orthogonal Latin squares]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Gridcoin|Gridcoin]]&lt;br /&gt;
* [[wikipedia:SAT solver|SAT solver]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://boinc.multi-pool.info/latinsquares/ ODLK1 project homepage]&lt;br /&gt;
* [https://boinc.multi-pool.info/latinsquares/server_status.php ODLK1 server status]&lt;br /&gt;
* [https://boinc.multi-pool.info/latinsquares/apps.php ODLK1 applications]&lt;br /&gt;
* [https://boinc.multi-pool.info/latinsquares/top_teams.php ODLK1 team leaderboard]&lt;br /&gt;
* [https://boinc.progger.info/odlk/ ODLK (predecessor project)]&lt;br /&gt;
* [https://disk.yandex.ru/d/RsHtIf6bCWV8xg ODLK1 results database (Yandex Disk)]&lt;br /&gt;
* [https://oeis.org/A287695 OEIS A287695 – related integer sequence]&lt;br /&gt;
* [https://boinc.berkeley.edu BOINC official site]&lt;br /&gt;
* [https://gridcoin.us/ Gridcoin – cryptocurrency reward for BOINC]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Mathematics]]&lt;br /&gt;
[[Category:Combinatorics]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Latin squares]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1395</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1395"/>
		<updated>2026-05-26T14:56:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   Quote CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-quote {&lt;br /&gt;
    margin: 1em 2em;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    border-left: 3px solid var(--border-color-subtle, #aaa);&lt;br /&gt;
    background: var(--background-color-interactive-subtle, #f9f9f9);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-quote-source {&lt;br /&gt;
    text-align: right;&lt;br /&gt;
    margin-top: 0.5em;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1376</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Main_Page&amp;diff=1376"/>
		<updated>2026-05-25T02:24:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HERO BANNER&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero&amp;quot;&amp;gt;&lt;br /&gt;
[[File:{{#setmainimage:Banner.png}}|center|frameless|320x107px|BOINC Projects — Volunteer Computing Encyclopedia]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-title&amp;quot;&amp;gt;BOINC Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-subtitle&amp;quot;&amp;gt;The most comprehensive encyclopedia of BOINC volunteer computing projects on the web&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-btn&amp;quot;&amp;gt;&#039;&#039;&#039;[[BOINC projects|➜ Browse the Complete BOINC Projects Table]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-hero-note&amp;quot;&amp;gt;The definitive, community-maintained table documenting every known active and retired BOINC project. The most comprehensive BOINC project list anywhere on the internet.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     QUICK-STATS RIBBON&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stats&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;49+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects documented&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;10+&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Research fields&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-coral&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;{{CURRENTYEAR}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Continuously updated&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat bs-stat-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-number&amp;quot;&amp;gt;334&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-stat-label&amp;quot;&amp;gt;Projects listed&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     WHAT IS A BOINC PROJECT?&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-definition&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;bs-definition-label&amp;quot;&amp;gt;What is a BOINC project?&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;A BOINC project&#039;&#039;&#039; is a website and associated server set up by an individual or group to distribute applications to [https://boinc.berkeley.edu/ BOINC] volunteer computing devices. Those devices deliberately attach to receive, process, and return results for further scientific research — at no cost to the researcher, and no cost to the volunteer beyond electricity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;BOINC&#039;&#039; stands for &#039;&#039;&#039;Berkeley Open Infrastructure for Network Computing&#039;&#039;&#039;, developed at the University of California, Berkeley. Any researcher can create a BOINC project; any person can donate their idle CPU or GPU time to one.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     PRIMARY CTA — TABLE LINK&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-title&amp;quot;&amp;gt;📋 The BOINC Projects Master Table&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-cta-body&amp;quot;&amp;gt;The [[BOINC projects|List of all BOINC projects]] table is the heart of this wiki — a structured, sortable reference covering project name, research field, institution, supported platforms, active status, GPU support, and more. It is the primary reason this resource exists and the most complete registry of BOINC projects available anywhere.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&#039;&#039;&#039;[[BOINC projects|View the complete list of BOINC projects →]]&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     LOCAL PROJECT PAGES&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== Local BOINC project wiki pages ==&lt;br /&gt;
&lt;br /&gt;
Each project below has its own dedicated article on this wiki. Projects are grouped by research domain and activity status.&lt;br /&gt;
&lt;br /&gt;
=== ✦ Active BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-teal mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔭 Astrophysics, Cosmology &amp;amp; Space&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Einstein@Home]] gravitational wave and pulsar detection&lt;br /&gt;
| * [[MilkyWay@home]] mapping the Milky Way&#039;s structure&lt;br /&gt;
|-&lt;br /&gt;
| * [[LHC@home]] CERN particle physics simulations&lt;br /&gt;
| * [[Gaia@home]] ESA Gaia mission data reduction&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[SPACIOUS@home]] space situational awareness&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-purple mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧬 Biology, Medicine &amp;amp; Biochemistry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[GPUGRID]] GPU-accelerated biomolecular simulations&lt;br /&gt;
| * [[TN-Grid]] neurological research&lt;br /&gt;
|-&lt;br /&gt;
| * [[RNA World (beta)]] RNA folding and molecular evolution&lt;br /&gt;
| * [[Rosetta@home]] protein structure prediction&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-blue mw-collapsible&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🔢 Mathematics, Number Theory &amp;amp; Cryptography&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|* [[Gerasim@home]] multi-project. number field sieve factorisation&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| * [[PrimeGrid]] prime number searches across many sub-projects&lt;br /&gt;
| * [[NFS@Home]] number field sieve factorisation&lt;br /&gt;
|-&lt;br /&gt;
| * [[SRBase]] Sierpinski-Riesel base search&lt;br /&gt;
| * [[NumberFields@Home]] algebraic number field tables&lt;br /&gt;
|-&lt;br /&gt;
| * [[YAFU]] yet another factorisation utility&lt;br /&gt;
| * [[LODA]] integer sequence program synthesis&lt;br /&gt;
|-&lt;br /&gt;
| * [[Moo! Wrapper]] distributed.net RC5-72 wrapper&lt;br /&gt;
| * [[ODLK]] orthogonal diagonal Latin squares&lt;br /&gt;
|-&lt;br /&gt;
| * [[ODLK1]] ODLK variant 1&lt;br /&gt;
| * [[ODLK2025]] ODLK 2025 campaign&lt;br /&gt;
|-&lt;br /&gt;
| * [[Rakesearch]] Latin square searches&lt;br /&gt;
| * [[SPT]] Subspace Polynomial Traversal&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-green mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🌍 Climate, Environment &amp;amp; Earth Sciences&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Climateprediction.net|climate&#039;&#039;prediction&#039;&#039;.net]] global climate ensemble modelling&lt;br /&gt;
| * [[Asteroids@home]] asteroid orbit determination&lt;br /&gt;
|-&lt;br /&gt;
| * [[Radioactive@home]] background radiation monitoring&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🤖 Artificial Intelligence, Computing &amp;amp; Infrastructure&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[IThena.Computational]] computational measurement network&lt;br /&gt;
| * [[IThena.Measurements]] network performance metrics&lt;br /&gt;
|-&lt;br /&gt;
| * [[BOINC Central]] BOINC infrastructure project&lt;br /&gt;
| * [[WUProp@Home]] work unit propagation statistics&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-coral mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧪 Physics, Chemistry &amp;amp; Materials Science&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[USPEX@HOME]] crystal structure prediction&lt;br /&gt;
| * [[World Community Grid]] multi-domain humanitarian research&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🕹️ Community, Recreation &amp;amp; Miscellaneous&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Minecraft@Home]] Minecraft world-seed research&lt;br /&gt;
| * [[PRIVATE GFN SERVER]] private Generalized Fermat Number server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-pink mw-collapsible&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;🧫 Test &amp;amp; Development Projects&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects serve as active testing and development platforms for BOINC software and infrastructure rather than primary research goals.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | * [[Cpdnboinc dev]] cpdn development and testing server&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Paused BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-amber mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏯ Paused projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects are temporarily suspended but have not formally closed. Work may resume in future.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[DENIS@home]] cardiac electrophysiology research, currently paused&lt;br /&gt;
|* [[SiDock@home]] drug candidate screening&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for the most current status of all projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ✦ Retired &amp;amp; inactive BOINC projects ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group bs-group-gray mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-toggle mw-collapsible-toggle&amp;quot;&amp;gt;⏸ Retired projects (expand)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-note&amp;quot;&amp;gt;These projects have suspended operations or are no longer accepting new work units. Their pages are preserved here for historical reference and research continuity.&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;bs-project-table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| * [[Albert@Home]] test site for Einstein@Home&lt;br /&gt;
| * [[Amicable Numbers]] amicable pair enumeration&lt;br /&gt;
|-&lt;br /&gt;
| * [[Axiom Distributed AI]] distributed AI model training&lt;br /&gt;
| * [[BlackHoles@Home]] black hole binary merger waveforms&lt;br /&gt;
|-&lt;br /&gt;
| * [[Data freezer]] long-term data archival research&lt;br /&gt;
| * [[GoofyxGrid@Home NCI]] non-covalent interaction analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[nanoHUB@Home]] nanotechnology simulation&lt;br /&gt;
| * [[Parlea]] RNA 3D structure motif analysis&lt;br /&gt;
|-&lt;br /&gt;
| * [[RALPH@home]] BOINC testing and development&lt;br /&gt;
| * [[Ramanujan Machine]] conjectured mathematical identities&lt;br /&gt;
|-&lt;br /&gt;
| * [[Universe@Home]] stellar evolution modelling&lt;br /&gt;
| * [[WEP-M+2 Project]] Mersenne-related prime search&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-group-footer&amp;quot;&amp;gt;&#039;&#039;See the [[BOINC projects|master BOINC projects table]] for definitive active/inactive status on all documented projects.&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     HOW TO PARTICIPATE&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== How to participate in BOINC projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-steps&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-purple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;1. Download BOINC&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Get the free BOINC client from [https://boinc.berkeley.edu/download.php boinc.berkeley.edu]. Available for Windows, macOS, Linux, and Android.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-teal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;2. Choose a project&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Browse the [[BOINC projects|complete BOINC projects list]] on this wiki. Filter by research field, platform support, or GPU availability.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step bs-step-blue&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-title&amp;quot;&amp;gt;3. Attach &amp;amp; contribute&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-step-body&amp;quot;&amp;gt;Register on the project&#039;s website, attach via the BOINC client, and your idle computer begins processing work units automatically.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════════════════════&lt;br /&gt;
     ABOUT THIS WIKI&lt;br /&gt;
═══════════════════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
== About this wiki ==&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;BOINC projects&#039;&#039; MediaWiki is researched, written, and maintained by [https://boincsynergy.ca/ BOINC Synergy] — a volunteer initiative dedicated to documenting the global BOINC ecosystem. The [[BOINC projects|projects table]] is considered the flagship resource: a single, structured, continuously-updated registry of every known BOINC project, past and present.&lt;br /&gt;
&lt;br /&gt;
Corrections, additions, and edits are welcome. If you know of a BOINC project not yet listed, please use the talk page or contact [https://boincsynergy.ca/ BOINC Synergy] directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;bs-footer-bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;&#039;&#039;BOINC projects&#039;&#039;&#039;&#039;&#039; MediaWiki is developed by [https://boincsynergy.ca/ BOINC Synergy] &amp;amp;nbsp;·&amp;amp;nbsp; Content reflects the state of the BOINC ecosystem as of {{CURRENTYEAR}} &amp;amp;nbsp;·&amp;amp;nbsp; [[BOINC projects|Full projects table →]]&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;br /&gt;
[[Category:Distributed computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1375</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1375"/>
		<updated>2026-05-25T02:01:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — pale mauve background, bright purple text */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2d2040 !important;&lt;br /&gt;
        color: #C4BAFF !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1374</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1374"/>
		<updated>2026-05-25T01:30:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — dark purple tint */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2a1f42 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1373</id>
		<title>Template:Infobox software</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1373"/>
		<updated>2026-05-25T01:29:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;infobox bs-infobox&amp;quot; style=&amp;quot;width:300px; float:right; clear:right; margin:0 0 1em 1em; border-radius:6px; font-size:13px; line-height:1.5; border-collapse:separate; border-spacing:0; overflow:hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-title&amp;quot;&amp;gt;{{{name|{{PAGENAME}}}}}&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if:{{{logo|}}}|&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-logo&amp;quot;&amp;gt;[[File:{{{logo}}}|180px|center]]{{#if:{{{logo caption|}}}|&amp;lt;div class=&amp;quot;bs-infobox-caption&amp;quot;&amp;gt;{{{logo caption}}}&amp;lt;/div&amp;gt;}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{screenshot|}}}|&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-screenshot&amp;quot;&amp;gt;[[File:{{{screenshot}}}|250px|center]]{{#if:{{{caption|}}}|&amp;lt;div class=&amp;quot;bs-infobox-caption&amp;quot;&amp;gt;{{{caption}}}&amp;lt;/div&amp;gt;}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{status|}}}{{{category|}}}{{{compute|}}}{{{dependencies|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Project&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{status|}}}|{{#ifeq:{{{status}}}|Active|&amp;lt;tr class=&amp;quot;bs-infobox-active&amp;quot;&amp;gt;&amp;lt;th class=&amp;quot;bs-infobox-active&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-active&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{status}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;|&amp;lt;tr class=&amp;quot;bs-infobox-inactive&amp;quot;&amp;gt;&amp;lt;th class=&amp;quot;bs-infobox-inactive&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-inactive&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{status}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}}}&lt;br /&gt;
{{#if:{{{category|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Category&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{category}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{compute|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Compute&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{compute}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{dependencies|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Requires&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{dependencies}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{developer|}}}{{{author|}}}{{{sponsor|}}}{{{maintainer|}}}{{{released|}}}{{{completed|}}}{{{discontinued|}}}{{{repository|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Development&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{developer|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Developer&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{developer}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{author|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Author&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{author}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{sponsor|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Sponsor&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{sponsor}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{maintainer|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Maintainer&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{maintainer}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{released|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Initial release&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{released}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{completed|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Completed&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-ended&amp;quot;&amp;gt;{{{completed}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{discontinued|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Discontinued&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-ended&amp;quot;&amp;gt;{{{discontinued}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{repository|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Repository&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{repository}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{programming language|}}}{{{operating system|}}}{{{size|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Software&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{programming language|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Written in&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{programming language}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{operating system|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Operating system&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{operating system}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{size|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Size&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{size}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{stats as of|}}}{{{average performance|}}}{{{active users|}}}{{{total users|}}}{{{active hosts|}}}{{{total hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;BOINC statistics&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{stats as of|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot; class=&amp;quot;bs-infobox-statsdate&amp;quot;&amp;gt;Stats as of&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-statsdate&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{stats as of}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{average performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{average performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{active users|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Active users&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{active users}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{total users|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Total users&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{total users}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{active hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Active hosts&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{active hosts}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{total hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Total hosts&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{total hosts}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{rac|}}}{{{credit per day|}}}{{{gpu performance|}}}{{{cpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Analytics&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{rac|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;RAC&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{rac}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{credit per day|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Credit/day&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{credit per day}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{gpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;GPU performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{gpu performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{cpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;CPU performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{cpu performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{website|}}}{{{license|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Metadata&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{website|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Website&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{website}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{license|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;License&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{license}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template:Infobox software ==&lt;br /&gt;
&lt;br /&gt;
Modern BOINC-oriented infobox template for distributed computing and software project articles.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Required&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || Software name (defaults to page name) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; || Logo filename || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logo caption&amp;lt;/code&amp;gt; || Caption below logo || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;screenshot&amp;lt;/code&amp;gt; || Screenshot filename || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt; || Caption below screenshot || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Project&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; || Active, Completed, etc. Green background when &amp;quot;Active&amp;quot;, red otherwise || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; || Research category (e.g. Astrophysics, Mathematics) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;compute&amp;lt;/code&amp;gt; || Processing type: CPU, GPU, or CPU &amp;amp; GPU || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dependencies&amp;lt;/code&amp;gt; || Additional software required (e.g. VirtualBox, CUDA, Git) || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Development&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;developer&amp;lt;/code&amp;gt; || Developer name || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; || Original author || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sponsor&amp;lt;/code&amp;gt; || Sponsoring organization || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;maintainer&amp;lt;/code&amp;gt; || Current maintainer || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;released&amp;lt;/code&amp;gt; || Initial release date || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;completed&amp;lt;/code&amp;gt; || Completion date or status (shown in red) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;discontinued&amp;lt;/code&amp;gt; || Discontinuation date (shown in red) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt; || Source code repository link || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Software&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;programming language&amp;lt;/code&amp;gt; || Language(s) the software is written in || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;operating system&amp;lt;/code&amp;gt; || Supported operating systems || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; || Download/install size || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;BOINC statistics&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stats as of&amp;lt;/code&amp;gt; || Date the statistics below were recorded || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;average performance&amp;lt;/code&amp;gt; || Average FLOPS or equivalent || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;active users&amp;lt;/code&amp;gt; || Current active user count || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;total users&amp;lt;/code&amp;gt; || All-time total users || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;active hosts&amp;lt;/code&amp;gt; || Current active host count || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;total hosts&amp;lt;/code&amp;gt; || All-time total hosts || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Analytics&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rac&amp;lt;/code&amp;gt; || Recent Average Credit || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;credit per day&amp;lt;/code&amp;gt; || Credits granted per day || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gpu performance&amp;lt;/code&amp;gt; || GPU-specific performance metric || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cpu performance&amp;lt;/code&amp;gt; || CPU-specific performance metric || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;website&amp;lt;/code&amp;gt; || Official website URL || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt; || Software license || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                 = Einstein@Home&lt;br /&gt;
| logo                 = Ein.jpg&lt;br /&gt;
| logo caption         = Einstein@Home logo&lt;br /&gt;
| screenshot           = Einstein@Home.gif&lt;br /&gt;
| caption              = Einstein@Home screensaver&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Astrophysics&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Bruce Allen&lt;br /&gt;
| author               = Bruce Allen&lt;br /&gt;
| sponsor              = Max Planck Society&lt;br /&gt;
| maintainer           = Einstein@Home team&lt;br /&gt;
| released             = {{Start date and age|2005|02|19}}&lt;br /&gt;
| completed            = No&lt;br /&gt;
| discontinued         =&lt;br /&gt;
| repository           = {{URL|https://git.ligo.org/einsteinathome}}&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android&lt;br /&gt;
| size                 = ~50 MB&lt;br /&gt;
&lt;br /&gt;
| stats as of          = {{Start date and age|2026|05|19}}&lt;br /&gt;
| average performance  = 21 PFLOPS&lt;br /&gt;
| active users         = 14531&lt;br /&gt;
| total users          = 1061585&lt;br /&gt;
| active hosts         = 24489&lt;br /&gt;
| total hosts          = 8237726&lt;br /&gt;
&lt;br /&gt;
| rac                  = 18500000&lt;br /&gt;
| credit per day       = 950000&lt;br /&gt;
| gpu performance      = 15 PFLOPS&lt;br /&gt;
| cpu performance      = 6 PFLOPS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://einsteinathome.org/}}&lt;br /&gt;
| license              = GPL-2.0-or-later&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minimal example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                 = My Project&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
&lt;br /&gt;
| developer            = Jane Smith&lt;br /&gt;
| released             = {{Start date and age|2020|01|01}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux, macOS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://example.org/}}&lt;br /&gt;
| license              = MIT&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Infobox templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1372</id>
		<title>Template:Infobox software</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1372"/>
		<updated>2026-05-25T01:28:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: headings colour&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th.bs-infobox-section,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-logo,&lt;br /&gt;
    table.bs-infobox .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-active td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-active,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive th,&lt;br /&gt;
    table.bs-infobox tr.bs-infobox-inactive td,&lt;br /&gt;
    table.bs-infobox th.bs-infobox-inactive,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    table.bs-infobox td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — dark purple tint */&lt;br /&gt;
    table.bs-infobox th.bs-infobox-statsdate,&lt;br /&gt;
    table.bs-infobox td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2a1f42 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1371</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1371"/>
		<updated>2026-05-25T01:22:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-logo,&lt;br /&gt;
    .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    tr.bs-infobox-active th,&lt;br /&gt;
    tr.bs-infobox-active td,&lt;br /&gt;
    th.bs-infobox-active,&lt;br /&gt;
    td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    tr.bs-infobox-inactive th,&lt;br /&gt;
    tr.bs-infobox-inactive td,&lt;br /&gt;
    th.bs-infobox-inactive,&lt;br /&gt;
    td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — dark purple tint, mirrors light mode #e8d5f5 */&lt;br /&gt;
    th.bs-infobox-statsdate,&lt;br /&gt;
    td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2a1f42 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1370</id>
		<title>Template:Infobox software</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1370"/>
		<updated>2026-05-25T01:20:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;table class=&amp;quot;infobox bs-infobox&amp;quot; style=&amp;quot;width:300px; float:right; clear:right; margin:0 0 1em 1em; border-radius:6px; font-size:13px; line-height:1.5; border-collapse:separate; border-spacing:0; overflow:hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-title&amp;quot;&amp;gt;{{{name|{{PAGENAME}}}}}&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
{{#if:{{{logo|}}}|&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-logo&amp;quot;&amp;gt;[[File:{{{logo}}}|180px|center]]{{#if:{{{logo caption|}}}|&amp;lt;div class=&amp;quot;bs-infobox-caption&amp;quot;&amp;gt;{{{logo caption}}}&amp;lt;/div&amp;gt;}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{screenshot|}}}|&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-screenshot&amp;quot;&amp;gt;[[File:{{{screenshot}}}|250px|center]]{{#if:{{{caption|}}}|&amp;lt;div class=&amp;quot;bs-infobox-caption&amp;quot;&amp;gt;{{{caption}}}&amp;lt;/div&amp;gt;}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{status|}}}{{{category|}}}{{{compute|}}}{{{dependencies|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Project&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{status|}}}|{{#ifeq:{{{status}}}|Active|&amp;lt;tr class=&amp;quot;bs-infobox-active&amp;quot;&amp;gt;&amp;lt;th class=&amp;quot;bs-infobox-active&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-active&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{status}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;|&amp;lt;tr class=&amp;quot;bs-infobox-inactive&amp;quot;&amp;gt;&amp;lt;th class=&amp;quot;bs-infobox-inactive&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-inactive&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{status}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}}}&lt;br /&gt;
{{#if:{{{category|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Category&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{category}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{compute|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Compute&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{compute}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{dependencies|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Requires&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{dependencies}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{developer|}}}{{{author|}}}{{{sponsor|}}}{{{maintainer|}}}{{{released|}}}{{{completed|}}}{{{discontinued|}}}{{{repository|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Development&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{developer|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Developer&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{developer}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{author|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Author&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{author}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{sponsor|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Sponsor&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{sponsor}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{maintainer|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Maintainer&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{maintainer}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{released|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Initial release&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{released}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{completed|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Completed&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-ended&amp;quot;&amp;gt;{{{completed}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{discontinued|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Discontinued&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-ended&amp;quot;&amp;gt;{{{discontinued}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{repository|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Repository&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{repository}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{programming language|}}}{{{operating system|}}}{{{size|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Software&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{programming language|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Written in&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{programming language}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{operating system|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Operating system&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{operating system}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{size|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Size&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{size}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{stats as of|}}}{{{average performance|}}}{{{active users|}}}{{{total users|}}}{{{active hosts|}}}{{{total hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;BOINC statistics&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{stats as of|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot; class=&amp;quot;bs-infobox-statsdate&amp;quot;&amp;gt;Stats as of&amp;lt;/th&amp;gt;&amp;lt;td class=&amp;quot;bs-infobox-statsdate&amp;quot; style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{stats as of}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{average performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{average performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{active users|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Active users&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{active users}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{total users|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Total users&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{total users}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{active hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Active hosts&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{active hosts}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{total hosts|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Total hosts&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{total hosts}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{rac|}}}{{{credit per day|}}}{{{gpu performance|}}}{{{cpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Analytics&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{rac|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;RAC&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{rac}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{credit per day|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Credit/day&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{formatnum:{{{credit per day}}}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{gpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;GPU performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{gpu performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{cpu performance|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;CPU performance&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{cpu performance}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{website|}}}{{{license|}}}|&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;2&amp;quot; class=&amp;quot;bs-infobox-section&amp;quot;&amp;gt;Metadata&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{website|}}}|&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;width:110px;&amp;quot;&amp;gt;Website&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{website}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
{{#if:{{{license|}}}|&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;License&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{license}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template:Infobox software ==&lt;br /&gt;
&lt;br /&gt;
Modern BOINC-oriented infobox template for distributed computing and software project articles.&lt;br /&gt;
&lt;br /&gt;
=== Parameters ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Required&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; || Software name (defaults to page name) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; || Logo filename || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;logo caption&amp;lt;/code&amp;gt; || Caption below logo || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;screenshot&amp;lt;/code&amp;gt; || Screenshot filename || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt; || Caption below screenshot || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Project&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; || Active, Completed, etc. Green background when &amp;quot;Active&amp;quot;, red otherwise || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; || Research category (e.g. Astrophysics, Mathematics) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;compute&amp;lt;/code&amp;gt; || Processing type: CPU, GPU, or CPU &amp;amp; GPU || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dependencies&amp;lt;/code&amp;gt; || Additional software required (e.g. VirtualBox, CUDA, Git) || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Development&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;developer&amp;lt;/code&amp;gt; || Developer name || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; || Original author || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sponsor&amp;lt;/code&amp;gt; || Sponsoring organization || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;maintainer&amp;lt;/code&amp;gt; || Current maintainer || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;released&amp;lt;/code&amp;gt; || Initial release date || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;completed&amp;lt;/code&amp;gt; || Completion date or status (shown in red) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;discontinued&amp;lt;/code&amp;gt; || Discontinuation date (shown in red) || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;repository&amp;lt;/code&amp;gt; || Source code repository link || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Software&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;programming language&amp;lt;/code&amp;gt; || Language(s) the software is written in || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;operating system&amp;lt;/code&amp;gt; || Supported operating systems || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;size&amp;lt;/code&amp;gt; || Download/install size || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;BOINC statistics&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;stats as of&amp;lt;/code&amp;gt; || Date the statistics below were recorded || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;average performance&amp;lt;/code&amp;gt; || Average FLOPS or equivalent || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;active users&amp;lt;/code&amp;gt; || Current active user count || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;total users&amp;lt;/code&amp;gt; || All-time total users || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;active hosts&amp;lt;/code&amp;gt; || Current active host count || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;total hosts&amp;lt;/code&amp;gt; || All-time total hosts || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Analytics&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rac&amp;lt;/code&amp;gt; || Recent Average Credit || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;credit per day&amp;lt;/code&amp;gt; || Credits granted per day || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gpu performance&amp;lt;/code&amp;gt; || GPU-specific performance metric || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cpu performance&amp;lt;/code&amp;gt; || CPU-specific performance metric || No&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#eaecf0; text-align:center;&amp;quot; | &#039;&#039;&#039;Metadata&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;website&amp;lt;/code&amp;gt; || Official website URL || No&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;license&amp;lt;/code&amp;gt; || Software license || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                 = Einstein@Home&lt;br /&gt;
| logo                 = Ein.jpg&lt;br /&gt;
| logo caption         = Einstein@Home logo&lt;br /&gt;
| screenshot           = Einstein@Home.gif&lt;br /&gt;
| caption              = Einstein@Home screensaver&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Astrophysics&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = None&lt;br /&gt;
&lt;br /&gt;
| developer            = Bruce Allen&lt;br /&gt;
| author               = Bruce Allen&lt;br /&gt;
| sponsor              = Max Planck Society&lt;br /&gt;
| maintainer           = Einstein@Home team&lt;br /&gt;
| released             = {{Start date and age|2005|02|19}}&lt;br /&gt;
| completed            = No&lt;br /&gt;
| discontinued         =&lt;br /&gt;
| repository           = {{URL|https://git.ligo.org/einsteinathome}}&lt;br /&gt;
&lt;br /&gt;
| programming language = C, C++&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android&lt;br /&gt;
| size                 = ~50 MB&lt;br /&gt;
&lt;br /&gt;
| stats as of          = {{Start date and age|2026|05|19}}&lt;br /&gt;
| average performance  = 21 PFLOPS&lt;br /&gt;
| active users         = 14531&lt;br /&gt;
| total users          = 1061585&lt;br /&gt;
| active hosts         = 24489&lt;br /&gt;
| total hosts          = 8237726&lt;br /&gt;
&lt;br /&gt;
| rac                  = 18500000&lt;br /&gt;
| credit per day       = 950000&lt;br /&gt;
| gpu performance      = 15 PFLOPS&lt;br /&gt;
| cpu performance      = 6 PFLOPS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://einsteinathome.org/}}&lt;br /&gt;
| license              = GPL-2.0-or-later&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minimal example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                 = My Project&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Mathematics&lt;br /&gt;
| compute              = CPU&lt;br /&gt;
&lt;br /&gt;
| developer            = Jane Smith&lt;br /&gt;
| released             = {{Start date and age|2020|01|01}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux, macOS&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://example.org/}}&lt;br /&gt;
| license              = MIT&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Infobox templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1369</id>
		<title>Template:Infobox software</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1369"/>
		<updated>2026-05-25T01:07:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-section {&lt;br /&gt;
        background: #323230 !important;&lt;br /&gt;
        color: var(--bs-gray-850) !important;&lt;br /&gt;
        border-top: 1px solid #3a3a38 !important;&lt;br /&gt;
        border-bottom: 1px solid #3a3a38 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-logo,&lt;br /&gt;
    .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    tr.bs-infobox-active th,&lt;br /&gt;
    tr.bs-infobox-active td,&lt;br /&gt;
    th.bs-infobox-active,&lt;br /&gt;
    td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    tr.bs-infobox-inactive th,&lt;br /&gt;
    tr.bs-infobox-inactive td,&lt;br /&gt;
    th.bs-infobox-inactive,&lt;br /&gt;
    td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — dark purple tint, mirrors light mode #e8d5f5 */&lt;br /&gt;
    th.bs-infobox-statsdate,&lt;br /&gt;
    td.bs-infobox-statsdate {&lt;br /&gt;
        background: #2a1f42 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1368</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1368"/>
		<updated>2026-05-25T00:43:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ═══════════════════════════════════════════════════════&lt;br /&gt;
   BOINC Synergy — sitewide styles&lt;br /&gt;
   MediaWiki:Common.css&lt;br /&gt;
═══════════════════════════════════════════════════════ */&lt;br /&gt;
&lt;br /&gt;
/* ── FONT ───────────────────────────────────────────── */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Inter:wght@400;500&amp;amp;display=swap&#039;);&lt;br /&gt;
&lt;br /&gt;
body, .mw-body, .mw-body-content {&lt;br /&gt;
    font-family: &#039;Inter&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — light mode ─────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    /* purple ramp */&lt;br /&gt;
    --bs-purple-50:  #EEEDFE;&lt;br /&gt;
    --bs-purple-200: #AFA9EC;&lt;br /&gt;
    --bs-purple-400: #534AB7;&lt;br /&gt;
    --bs-purple-800: #3C3489;&lt;br /&gt;
    --bs-purple-900: #26215C;&lt;br /&gt;
&lt;br /&gt;
    /* teal ramp */&lt;br /&gt;
    --bs-teal-50:  #E1F5EE;&lt;br /&gt;
    --bs-teal-200: #5DCAA5;&lt;br /&gt;
    --bs-teal-400: #1D9E75;&lt;br /&gt;
    --bs-teal-800: #085041;&lt;br /&gt;
&lt;br /&gt;
    /* coral ramp */&lt;br /&gt;
    --bs-coral-50:  #FAECE7;&lt;br /&gt;
    --bs-coral-200: #F0997B;&lt;br /&gt;
    --bs-coral-400: #D85A30;&lt;br /&gt;
    --bs-coral-800: #4A1B0C;&lt;br /&gt;
&lt;br /&gt;
    /* blue ramp */&lt;br /&gt;
    --bs-blue-50:  #E6F1FB;&lt;br /&gt;
    --bs-blue-200: #85B7EB;&lt;br /&gt;
    --bs-blue-400: #378ADD;&lt;br /&gt;
    --bs-blue-800: #042C53;&lt;br /&gt;
&lt;br /&gt;
    /* green ramp */&lt;br /&gt;
    --bs-green-50:  #EAF3DE;&lt;br /&gt;
    --bs-green-200: #C0DD97;&lt;br /&gt;
    --bs-green-800: #173404;&lt;br /&gt;
&lt;br /&gt;
    /* amber ramp */&lt;br /&gt;
    --bs-amber-50:  #FAEEDA;&lt;br /&gt;
    --bs-amber-200: #FAC775;&lt;br /&gt;
    --bs-amber-800: #412402;&lt;br /&gt;
&lt;br /&gt;
    /* pink ramp */&lt;br /&gt;
    --bs-pink-50:  #FBEAF0;&lt;br /&gt;
    --bs-pink-200: #F4C0D1;&lt;br /&gt;
    --bs-pink-800: #4B1528;&lt;br /&gt;
&lt;br /&gt;
    /* gray ramp */&lt;br /&gt;
    --bs-gray-50:  #F1EFE8;&lt;br /&gt;
    --bs-gray-200: #D3D1C7;&lt;br /&gt;
    --bs-gray-400: #888780;&lt;br /&gt;
    --bs-gray-800: #2C2C2A;&lt;br /&gt;
    --bs-gray-850: #444441;&lt;br /&gt;
&lt;br /&gt;
    /* semantic */&lt;br /&gt;
    --bs-page-bg:      #ffffff;&lt;br /&gt;
    --bs-text-primary: #1a1a1a;&lt;br /&gt;
    --bs-text-muted:   #555555;&lt;br /&gt;
&lt;br /&gt;
    /* link colours — light mode */&lt;br /&gt;
    --bs-link:         #4840A3;   /* purple-400, darkened */&lt;br /&gt;
    --bs-link-hover:   #302A74;   /* purple-800, darkened */&lt;br /&gt;
    --bs-link-visited: #6B63C8;   /* mid-purple, darkened */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── CSS VARIABLES — dark mode ──────────────────────── */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
    :root {&lt;br /&gt;
        --bs-purple-50:  #1e1a3a;&lt;br /&gt;
        --bs-purple-200: #534AB7;&lt;br /&gt;
        --bs-purple-400: #AFA9EC;&lt;br /&gt;
        --bs-purple-800: #CECBF6;&lt;br /&gt;
        --bs-purple-900: #EEEDFE;&lt;br /&gt;
&lt;br /&gt;
        --bs-teal-50:  #0a2a1f;&lt;br /&gt;
        --bs-teal-200: #0F6E56;&lt;br /&gt;
        --bs-teal-400: #5DCAA5;&lt;br /&gt;
        --bs-teal-800: #9FE1CB;&lt;br /&gt;
&lt;br /&gt;
        --bs-coral-50:  #2a100a;&lt;br /&gt;
        --bs-coral-200: #993C1D;&lt;br /&gt;
        --bs-coral-400: #F0997B;&lt;br /&gt;
        --bs-coral-800: #F5C4B3;&lt;br /&gt;
&lt;br /&gt;
        --bs-blue-50:  #091824;&lt;br /&gt;
        --bs-blue-200: #185FA5;&lt;br /&gt;
        --bs-blue-400: #85B7EB;&lt;br /&gt;
        --bs-blue-800: #B5D4F4;&lt;br /&gt;
&lt;br /&gt;
        --bs-green-50:  #111f08;&lt;br /&gt;
        --bs-green-200: #3B6D11;&lt;br /&gt;
        --bs-green-800: #C0DD97;&lt;br /&gt;
&lt;br /&gt;
        --bs-amber-50:  #1f1608;&lt;br /&gt;
        --bs-amber-200: #854F0B;&lt;br /&gt;
        --bs-amber-800: #FAC775;&lt;br /&gt;
&lt;br /&gt;
        --bs-pink-50:  #200d14;&lt;br /&gt;
        --bs-pink-200: #72243E;&lt;br /&gt;
        --bs-pink-800: #F4C0D1;&lt;br /&gt;
&lt;br /&gt;
        --bs-gray-50:  #1a1a18;&lt;br /&gt;
        --bs-gray-200: #444441;&lt;br /&gt;
        --bs-gray-400: #888780;&lt;br /&gt;
        --bs-gray-800: #D3D1C7;&lt;br /&gt;
        --bs-gray-850: #B4B2A9;&lt;br /&gt;
&lt;br /&gt;
        --bs-page-bg:      #121212;&lt;br /&gt;
        --bs-text-primary: #e8e8e8;&lt;br /&gt;
        --bs-text-muted:   #aaaaaa;&lt;br /&gt;
&lt;br /&gt;
        /* link colours — dark mode */&lt;br /&gt;
        --bs-link:         #AFA9EC;   /* purple-200: soft lilac, readable on dark */&lt;br /&gt;
        --bs-link-hover:   #CECBF6;   /* purple-800 (dark-mode): lighter on hover */&lt;br /&gt;
        --bs-link-visited: #7F77DD;   /* mid-purple, distinct from unvisited */&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── LINKS ──────────────────────────────────────────── */&lt;br /&gt;
/* Scope to .mw-body-content so MediaWiki nav chrome is unaffected */&lt;br /&gt;
.mw-body-content a,&lt;br /&gt;
.mw-body-content a:link {&lt;br /&gt;
    color: var(--bs-link);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:visited {&lt;br /&gt;
    color: var(--bs-link-visited);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body-content a:hover,&lt;br /&gt;
.mw-body-content a:focus {&lt;br /&gt;
    color: var(--bs-link-hover);&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
    text-underline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── INFOBOX — suppress phantom leading paragraphs ── */&lt;br /&gt;
/* MediaWiki generates &amp;lt;p&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt; nodes from template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:has(&amp;gt; br:only-child) {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* hide leading breaks generated by template newlines */&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; br:first-child,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child &amp;gt; br:only-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HERO BANNER&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-hero {&lt;br /&gt;
    border: 0.5px solid var(--bs-purple-200);&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    background: linear-gradient(135deg, var(--bs-purple-50) 0%, var(--bs-teal-50) 100%);&lt;br /&gt;
    padding: 2rem 2rem 1.5rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-title {&lt;br /&gt;
    font-size: 2rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    letter-spacing: -0.5px;&lt;br /&gt;
    margin: 0.75rem 0 0.25rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-subtitle {&lt;br /&gt;
    font-size: 1.05rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-btn {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 2px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.6rem 1.6rem;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-hero-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    margin-top: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   STATS RIBBON&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-stats {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 140px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.75rem 1rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-number {&lt;br /&gt;
    font-size: 1.6rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-label {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-stat-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-purple .bs-stat-number { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-stat-purple .bs-stat-label  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-teal .bs-stat-number { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-stat-teal .bs-stat-label  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-coral {&lt;br /&gt;
    background: var(--bs-coral-50);&lt;br /&gt;
    border-color: var(--bs-coral-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-coral .bs-stat-number { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-stat-coral .bs-stat-label  { color: var(--bs-coral-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-stat-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-stat-blue .bs-stat-number { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-stat-blue .bs-stat-label  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DEFINITION CALLOUT&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-definition {&lt;br /&gt;
    border-left: 3px solid var(--bs-purple-400);&lt;br /&gt;
    padding: 0.75rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-definition-label {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: var(--bs-purple-400);&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 0.08em;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   CTA BOX&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-cta {&lt;br /&gt;
    border: 1.5px solid var(--bs-purple-400);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    padding: 1rem 1.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
    background: var(--bs-page-bg);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: var(--bs-purple-800);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-cta-body {&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
    color: var(--bs-text-muted);&lt;br /&gt;
    margin-bottom: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   COLLAPSIBLE PROJECT GROUPS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-group {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1rem 1.25rem;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-toggle {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* colour variants — color set on the group itself covers all untagged child text */&lt;br /&gt;
.bs-group-teal   { background: var(--bs-teal-50);   border-color: var(--bs-teal-200);   color: var(--bs-teal-800);   }&lt;br /&gt;
.bs-group-teal   .bs-group-toggle { color: var(--bs-teal-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple { background: var(--bs-purple-50); border-color: var(--bs-purple-200); color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .bs-group-toggle { color: var(--bs-purple-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   { background: var(--bs-blue-50);   border-color: var(--bs-blue-200);   color: var(--bs-blue-800);   }&lt;br /&gt;
.bs-group-blue   .bs-group-toggle { color: var(--bs-blue-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  { background: var(--bs-green-50);  border-color: var(--bs-green-200);  color: var(--bs-green-800);  }&lt;br /&gt;
.bs-group-green  .bs-group-toggle { color: var(--bs-green-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  { background: var(--bs-amber-50);  border-color: var(--bs-amber-200);  color: var(--bs-amber-800);  }&lt;br /&gt;
.bs-group-amber  .bs-group-toggle { color: var(--bs-amber-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  { background: var(--bs-coral-50);  border-color: var(--bs-coral-200);  color: var(--bs-coral-800);  }&lt;br /&gt;
.bs-group-coral  .bs-group-toggle { color: var(--bs-coral-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   { background: var(--bs-gray-50);   border-color: var(--bs-gray-200);   color: var(--bs-gray-800);   }&lt;br /&gt;
.bs-group-gray   .bs-group-toggle { color: var(--bs-gray-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   { background: var(--bs-pink-50);   border-color: var(--bs-pink-200);   color: var(--bs-pink-800);   }&lt;br /&gt;
.bs-group-pink   .bs-group-toggle { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
/* links inside groups — use the group&#039;s own ramp so they&#039;re readable on coloured backgrounds */&lt;br /&gt;
.bs-group-teal   .mw-body-content a,&lt;br /&gt;
.bs-group-teal   .mw-body-content a:link    { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:visited { color: var(--bs-teal-400); }&lt;br /&gt;
.bs-group-teal   .mw-body-content a:hover   { color: var(--bs-teal-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-purple .mw-body-content a,&lt;br /&gt;
.bs-group-purple .mw-body-content a:link    { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:visited { color: var(--bs-purple-400); }&lt;br /&gt;
.bs-group-purple .mw-body-content a:hover   { color: var(--bs-purple-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-blue   .mw-body-content a,&lt;br /&gt;
.bs-group-blue   .mw-body-content a:link    { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:visited { color: var(--bs-blue-400); }&lt;br /&gt;
.bs-group-blue   .mw-body-content a:hover   { color: var(--bs-blue-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-green  .mw-body-content a,&lt;br /&gt;
.bs-group-green  .mw-body-content a:link    { color: var(--bs-green-800); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:visited { color: var(--bs-green-200); }&lt;br /&gt;
.bs-group-green  .mw-body-content a:hover   { color: var(--bs-green-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber  .mw-body-content a,&lt;br /&gt;
.bs-group-amber  .mw-body-content a:link    { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:visited { color: var(--bs-amber-200); }&lt;br /&gt;
.bs-group-amber  .mw-body-content a:hover   { color: var(--bs-amber-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-coral  .mw-body-content a,&lt;br /&gt;
.bs-group-coral  .mw-body-content a:link    { color: var(--bs-coral-800); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:visited { color: var(--bs-coral-400); }&lt;br /&gt;
.bs-group-coral  .mw-body-content a:hover   { color: var(--bs-coral-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-gray   .mw-body-content a,&lt;br /&gt;
.bs-group-gray   .mw-body-content a:link    { color: var(--bs-gray-800); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:visited { color: var(--bs-gray-400); }&lt;br /&gt;
.bs-group-gray   .mw-body-content a:hover   { color: var(--bs-gray-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
.bs-group-pink   .mw-body-content a,&lt;br /&gt;
.bs-group-pink   .mw-body-content a:link    { color: var(--bs-pink-800); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:visited { color: var(--bs-pink-200); }&lt;br /&gt;
.bs-group-pink   .mw-body-content a:hover   { color: var(--bs-pink-800); text-decoration: underline; }&lt;br /&gt;
&lt;br /&gt;
/* project list table inside groups */&lt;br /&gt;
.bs-project-table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-project-table td {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    padding: 0.2rem 0.5rem 0.2rem 0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-note {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    margin: 0.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-teal   .bs-group-note { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-group-purple .bs-group-note { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-group-amber  .bs-group-note { color: var(--bs-amber-800); }&lt;br /&gt;
.bs-group-gray   .bs-group-note { color: var(--bs-gray-850); }&lt;br /&gt;
.bs-group-pink   .bs-group-note { color: var(--bs-pink-800); }&lt;br /&gt;
&lt;br /&gt;
.bs-group-footer {&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    margin-top: 0.75rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-group-amber .bs-group-footer { color: var(--bs-amber-400); }&lt;br /&gt;
.bs-group-gray  .bs-group-footer { color: var(--bs-gray-400);  }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   HOW TO PARTICIPATE CARDS&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-steps {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.75rem;&lt;br /&gt;
    margin: 0.75rem 0 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    min-width: 180px;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 0.9rem 1rem;&lt;br /&gt;
    border: 0.5px solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-title {&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-body {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-step-purple {&lt;br /&gt;
    background: var(--bs-purple-50);&lt;br /&gt;
    border-color: var(--bs-purple-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-purple .bs-step-title { color: var(--bs-purple-800); }&lt;br /&gt;
.bs-step-purple .bs-step-body  { color: var(--bs-purple-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-teal {&lt;br /&gt;
    background: var(--bs-teal-50);&lt;br /&gt;
    border-color: var(--bs-teal-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-teal .bs-step-title { color: var(--bs-teal-800); }&lt;br /&gt;
.bs-step-teal .bs-step-body  { color: var(--bs-teal-400); }&lt;br /&gt;
&lt;br /&gt;
.bs-step-blue {&lt;br /&gt;
    background: var(--bs-blue-50);&lt;br /&gt;
    border-color: var(--bs-blue-200);&lt;br /&gt;
}&lt;br /&gt;
.bs-step-blue .bs-step-title { color: var(--bs-blue-800); }&lt;br /&gt;
.bs-step-blue .bs-step-body  { color: var(--bs-blue-400); }&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   FOOTER BAR&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
.bs-footer-bar {&lt;br /&gt;
    border-top: 0.5px solid var(--bs-gray-200);&lt;br /&gt;
    margin-top: 1.5rem;&lt;br /&gt;
    padding-top: 0.75rem;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: var(--bs-gray-400);&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   INFOBOX — light mode base&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
table.bs-infobox {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    border: 1px solid #c8ccd1;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.bs-infobox th,&lt;br /&gt;
table.bs-infobox td {&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
    padding: 4px 8px;&lt;br /&gt;
    border: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-title {&lt;br /&gt;
    background: #2c3e50 !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
    padding: 12px !important;&lt;br /&gt;
    font-size: 20px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-section {&lt;br /&gt;
    background: #eaecf0 !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
    padding: 6px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    font-size: 11px !important;&lt;br /&gt;
    text-transform: uppercase !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-logo,&lt;br /&gt;
.bs-infobox-screenshot {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 12px;&lt;br /&gt;
    background: #f8f9fa !important;&lt;br /&gt;
    color: #202122 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bs-infobox-caption {&lt;br /&gt;
    font-size: 11px;&lt;br /&gt;
    color: #54595d;&lt;br /&gt;
    margin-top: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* active status — green */&lt;br /&gt;
tr.bs-infobox-active th,&lt;br /&gt;
tr.bs-infobox-active td,&lt;br /&gt;
th.bs-infobox-active,&lt;br /&gt;
td.bs-infobox-active {&lt;br /&gt;
    background: #d4edda !important;&lt;br /&gt;
    color: #155724 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* inactive/other status — red */&lt;br /&gt;
tr.bs-infobox-inactive th,&lt;br /&gt;
tr.bs-infobox-inactive td,&lt;br /&gt;
th.bs-infobox-inactive,&lt;br /&gt;
td.bs-infobox-inactive {&lt;br /&gt;
    background: #f8d7da !important;&lt;br /&gt;
    color: #721c24 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* completed / discontinued dates */&lt;br /&gt;
td.bs-infobox-ended {&lt;br /&gt;
    color: #b32424 !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* stats as of — purple tint */&lt;br /&gt;
th.bs-infobox-statsdate,&lt;br /&gt;
td.bs-infobox-statsdate {&lt;br /&gt;
    background: #e8d5f5 !important;&lt;br /&gt;
    color: #4a235a !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ══════════════════════════════════════════════════════&lt;br /&gt;
   DARK MODE — ARTICLE PAGES &amp;amp; VECTOR LEGACY CHROME&lt;br /&gt;
   Applies when the OS/browser is set to dark mode.&lt;br /&gt;
   Targets skin-vector (legacy 2010) selectors.&lt;br /&gt;
══════════════════════════════════════════════════════ */&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
&lt;br /&gt;
    /* ── Page shell ─────────────────────────────────── */&lt;br /&gt;
    html,&lt;br /&gt;
    body {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        color-scheme: dark;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Article content area ───────────────────────── */&lt;br /&gt;
    #content,&lt;br /&gt;
    .mw-body,&lt;br /&gt;
    .mw-body-content {&lt;br /&gt;
        background-color: #121212;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ensure core text elements get the light colour in dark mode */&lt;br /&gt;
    .mw-body-content p,&lt;br /&gt;
    .mw-body-content li,&lt;br /&gt;
    .mw-body-content dt,&lt;br /&gt;
    .mw-body-content dd {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* headings */&lt;br /&gt;
    #content h1, #content h2, #content h3,&lt;br /&gt;
    #content h4, #content h5, #content h6 {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* article title */&lt;br /&gt;
    #firstHeading {&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
        border-bottom-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* horizontal rules, table borders */&lt;br /&gt;
    #content hr  { border-color: #333331; }&lt;br /&gt;
&lt;br /&gt;
    /* standard wikitables */&lt;br /&gt;
    #content table.wikitable,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #content table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
        background-color: #2a2a28;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* infoboxes and floated tables */&lt;br /&gt;
    #content table {&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* code / pre blocks */&lt;br /&gt;
    #content pre,&lt;br /&gt;
    #content code {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        color: #c8c4e8;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* blockquotes */&lt;br /&gt;
    #content blockquote {&lt;br /&gt;
        border-left-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Tabs (article / talk / edit / history) ─────── */&lt;br /&gt;
    #p-cactions,&lt;br /&gt;
    div#mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive tabs — both namespaces (article/talk) and actions (edit/history/more) */&lt;br /&gt;
    #p-cactions li a,&lt;br /&gt;
    #p-namespaces li a,&lt;br /&gt;
    #ca-nstab-main a,&lt;br /&gt;
    #ca-talk a,&lt;br /&gt;
    #ca-edit a,&lt;br /&gt;
    #ca-ve-edit a,&lt;br /&gt;
    #ca-viewsource a,&lt;br /&gt;
    #ca-history a,&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    li.collapsible a,&lt;br /&gt;
    #mw-head .vectorTabs li a,&lt;br /&gt;
    #mw-head .vectorMenu li a {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        color: #b0aeA6 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active / selected tab */&lt;br /&gt;
    #p-cactions li.selected a,&lt;br /&gt;
    #p-namespaces li.selected a,&lt;br /&gt;
    #mw-head .vectorTabs li.selected a {&lt;br /&gt;
        background-color: #121212 !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
        border-bottom-color: #121212 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab hover */&lt;br /&gt;
    #p-cactions li a:hover,&lt;br /&gt;
    #p-namespaces li a:hover,&lt;br /&gt;
    #mw-head .vectorTabs li a:hover,&lt;br /&gt;
    #mw-head .vectorMenu li a:hover {&lt;br /&gt;
        background-color: #2e2e2c !important;&lt;br /&gt;
        color: var(--bs-purple-400) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* tab background strip */&lt;br /&gt;
    #mw-head-base,&lt;br /&gt;
    div#mw-head-base {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-bottom: 1px solid #333331;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Image frames &amp;amp; captions ────────────────────── */&lt;br /&gt;
    /* Dark mode for image frames is deferred — caption text darkened via base styles instead */&lt;br /&gt;
&lt;br /&gt;
    /* ── Watchlist star ─────────────────────────────── */&lt;br /&gt;
    #ca-watch a,&lt;br /&gt;
    #ca-unwatch a,&lt;br /&gt;
    li#ca-watch,&lt;br /&gt;
    li#ca-unwatch {&lt;br /&gt;
        background-color: #252523 !important;&lt;br /&gt;
        border-color: #333331 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #ca-watch img,&lt;br /&gt;
    #ca-unwatch img,&lt;br /&gt;
    #ca-watch span,&lt;br /&gt;
    #ca-unwatch span {&lt;br /&gt;
        background-color: transparent !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    #mw-panel,&lt;br /&gt;
    div#mw-panel {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar portlet headings (Navigation, Tools, etc.) */&lt;br /&gt;
    #mw-panel .portal h3 {&lt;br /&gt;
        color: var(--bs-gray-400);&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* sidebar links */&lt;br /&gt;
    #mw-panel .portal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:visited {&lt;br /&gt;
        color: var(--bs-link-visited);&lt;br /&gt;
    }&lt;br /&gt;
    #mw-panel .portal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
        text-decoration: underline;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Top toolbar / search bar ───────────────────── */&lt;br /&gt;
    #mw-head {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-bottom: 1px solid #2e2e2c;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search input */&lt;br /&gt;
    #searchInput,&lt;br /&gt;
    #searchform input[type=&amp;quot;search&amp;quot;],&lt;br /&gt;
    #searchform input[type=&amp;quot;text&amp;quot;] {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
    }&lt;br /&gt;
    #searchInput::placeholder {&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* search button */&lt;br /&gt;
    #mw-searchButton,&lt;br /&gt;
    #searchButton {&lt;br /&gt;
        background-color: #252523;&lt;br /&gt;
        border-color: #3a3a38;&lt;br /&gt;
        color: var(--bs-gray-800);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* personal tools (login, preferences, etc.) */&lt;br /&gt;
    #pt-login a,&lt;br /&gt;
    #pt-userpage a,&lt;br /&gt;
    #pt-preferences a,&lt;br /&gt;
    #pt-logout a,&lt;br /&gt;
    #p-personal a {&lt;br /&gt;
        color: var(--bs-link);&lt;br /&gt;
    }&lt;br /&gt;
    #p-personal a:hover {&lt;br /&gt;
        color: var(--bs-link-hover);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* ── Site footer ────────────────────────────────── */&lt;br /&gt;
    #footer {&lt;br /&gt;
        background-color: #1a1a18;&lt;br /&gt;
        border-top: 1px solid #2e2e2c;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #footer a       { color: var(--bs-link); }&lt;br /&gt;
    #footer a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Miscellaneous chrome ───────────────────────── */&lt;br /&gt;
&lt;br /&gt;
    /* edit notices, system messages */&lt;br /&gt;
    .mw-editsection a          { color: var(--bs-link); }&lt;br /&gt;
    .mw-editsection a:hover    { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* category links at page bottom */&lt;br /&gt;
    #catlinks {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-muted);&lt;br /&gt;
    }&lt;br /&gt;
    #catlinks a       { color: var(--bs-link); }&lt;br /&gt;
    #catlinks a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* TOC */&lt;br /&gt;
    #toc {&lt;br /&gt;
        background-color: #1e1e1c;&lt;br /&gt;
        border-color: #333331;&lt;br /&gt;
        color: var(--bs-text-primary);&lt;br /&gt;
    }&lt;br /&gt;
    #toc a       { color: var(--bs-link); }&lt;br /&gt;
    #toc a:hover { color: var(--bs-link-hover); }&lt;br /&gt;
&lt;br /&gt;
    /* notification / sitenotice bar */&lt;br /&gt;
    #siteNotice,&lt;br /&gt;
    #centralNotice {&lt;br /&gt;
        background-color: #1e1a3a;&lt;br /&gt;
        border-color: var(--bs-purple-200);&lt;br /&gt;
        color: var(--bs-purple-900);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* diff view */&lt;br /&gt;
    .diff-addedline   { background-color: #0d2b0d; color: #b8e6b8; }&lt;br /&gt;
    .diff-deletedline { background-color: #2b0d0d; color: #e6b8b8; }&lt;br /&gt;
    .diff-context     { background-color: #1e1e1c; color: var(--bs-text-muted); }&lt;br /&gt;
&lt;br /&gt;
    /* ── Infobox ────────────────────────────────────── */&lt;br /&gt;
    table.bs-infobox {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #3a3a38 !important;&lt;br /&gt;
        box-shadow: 0 1px 3px rgba(0,0,0,0.4) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.bs-infobox th,&lt;br /&gt;
    table.bs-infobox td {&lt;br /&gt;
        background: #1e1e1c !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
        border-color: #2e2e2c !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-title {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-section {&lt;br /&gt;
        background: #2a2a28 !important;&lt;br /&gt;
        color: var(--bs-gray-800) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-logo,&lt;br /&gt;
    .bs-infobox-screenshot {&lt;br /&gt;
        background: #252523 !important;&lt;br /&gt;
        color: var(--bs-text-primary) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .bs-infobox-caption {&lt;br /&gt;
        color: var(--bs-text-muted) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* active status — dark green */&lt;br /&gt;
    tr.bs-infobox-active th,&lt;br /&gt;
    tr.bs-infobox-active td,&lt;br /&gt;
    th.bs-infobox-active,&lt;br /&gt;
    td.bs-infobox-active {&lt;br /&gt;
        background: #0d2b0d !important;&lt;br /&gt;
        color: #7ee8a2 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* inactive status — dark red */&lt;br /&gt;
    tr.bs-infobox-inactive th,&lt;br /&gt;
    tr.bs-infobox-inactive td,&lt;br /&gt;
    th.bs-infobox-inactive,&lt;br /&gt;
    td.bs-infobox-inactive {&lt;br /&gt;
        background: #2b0d0d !important;&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* completed / discontinued */&lt;br /&gt;
    td.bs-infobox-ended {&lt;br /&gt;
        color: #f5a8a8 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* stats as of — dark purple tint */&lt;br /&gt;
    th.bs-infobox-statsdate,&lt;br /&gt;
    td.bs-infobox-statsdate {&lt;br /&gt;
        background: #1e1a3a !important;&lt;br /&gt;
        color: var(--bs-purple-900) !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
} /* end @media (prefers-color-scheme: dark) */&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>